大奖系统API如何工作
文章全文
1)什么是头奖系统,它站在生态系统中
头奖系统是一项单独的服务(有时是服务集群),可从费率中收集捐款,管理奖金池和触发器,计算奖金分配并通过运营商的付款回路启动付款。它集成了:- 带有RGS(利率/结果和资格报告),带有平台/钱包(注销捐款和奖金贷款),带有聚合器(来自多个工作室/品牌的路由器),带有BI/监管器(遥测和报告)。
2)头奖类型(以及在API中更改的内容)
1.固定(固定):预先知道的奖金金额。API中没有池,只有条件检查和信用。
2.进步(Progressive):池从利率贡献增长。我们需要捐款和公布目前的数额。
3.多层(Multi-tier: Mini/Major/Grand):多个并行池具有不同的机会和引擎盖。
4.本地vs网络:一个运营商/品牌的本地池;网络-多个运营商/品牌/地区的总和(多重性和复制至关重要)。
5.时间/活动:带截止日期或时间表的池(需要计时器和自动抽奖)。
3)现金不变量
平衡真理的来源是平台的钱包/ledger。JP仅存储池和承诺的状态。
所有现金交易都是偶数的(键'jp_contrib_id'、'jp_trigger_id'、'jp_payout_id')。
"损失/重复付款"=0。补偿仅是事件(传奇),不是DB手动编辑。
将分费(贡献)、触发器(触发器)和付款(付费)分为具有自己遥测功能的独立交易。
4) API参考合同
4.1个RGS/聚合器 → JP(贡献和触发器)
"POST/v1/jp/contributions"-计算池贡献
json
{
"jp_contrib_id": "uuid-1",  "tenant_id": "brand-42",  "pool_id": "grand-eu-01",  "player_id": "p_abc",  "game_id": "studio:slot_777",  "round_id": "r_123",  "bet": {"amount": 2.00, "currency": "EUR"},  "contrib": {"amount": 0.02, "currency": "EUR"},  "occurred_at": "2025-10-23T15:12:05Z",  "idempotency_key": "round_r_123"
}"POST/v1/jp/candidates"-申请/条件验证(可选)
答案是:"eligible: true/false",重量或机会,规则。
"POST/v1/jp/triggers"-确定触发事实
json
{
"jp_trigger_id": "uuid-2",  "pool_id": "grand-eu-01",  "reason": "random_hit",  "selector": {"player_id": "p_abc", "round_id": "r_123"},  "occurred_at": "2025-10-23T15:12:06Z",  "idempotency_key": "jp_t_grand_r_123"
}4.2 JP →平台(付款/准备金)
"POST/v1/wallet/reserve"-(可选)未来付款的准备金
"POST/v1/wallet/credit"-奖金给玩家
json
{
"jp_payout_id": "uuid-3",  "tenant_id": "brand-42",  "player_id": "p_abc",  "pool_id": "grand-eu-01",  "amount": {"amount": 500000.00, "currency": "EUR"},  "meta": {"tax": "withheld=false", "tier": "grand"},  "idempotency_key": "jp_p_grand_r_123"
}4.3发布池状态(用于前端/小部件)
"GET/v1/jp/pools/{pool_id} "→当前大小,种子,帽子,参与者人数,ETA等。
"GET/v1/jp/pools" →按品牌/区域列出的具有过滤器的池列表。
5)事件模型(Kafka/Pulsar)和电路
基本拓扑:- `jp.contribution.recorded`
- `jp.pool.updated'(尺寸、竞争性升级)
- `jp.triggered`
合同:Avro/JSON Schema+Schema Registry,"tenant_id","pool_id","player_id"分期付款密钥。转化是可逆的。
6)触发算法(高级)
概率(p持续性):对于每个合格回合,我们都会产生概率"p"(取决于池/级别类型)的命中率。
范围(必须下降):池必须下降到cap总和或截止日期-我们将内部范围保持在[min, max]范围内,我们发布cap/ETA。
悉尼和内陆控制:服务器种子+环绕盐;拒绝为头奖提供客户座位。所有种子更改均在WORM审核下进行。
诚实:触发器不应取决于玩家的特定身份(地理/许可/资格规则除外)。任何"个人"目标都是禁忌。
7) SLO和性能
p95 'contribution' <120 ms, p99 <250 ms.
p95' trigger→credit '<500 ms(没有外部收费跳线)。
"损失/重复付款"=0(通过合同测试检查)。
将活动交付给BI ≤ 5分钟。
关键路径的JP API可用性≥ 99。95%.
8)安全和合规性
所有S2S呼叫上的mTLS+签名(HMAC/EdDSA);短寿命令牌。
零信任:网络策略/mesh,最低特权,按地区划分。
WORM审核限制,公式,seed/entropy,池配置的更改。
GDPR/数据驻留/PCI:PII和徽标-在该地区;敏感场标记化;禁止跨区域阅读。
RG/AML:支付时的同步停止信号;SAR/STR卸载是自动化的。
9)一致性和传奇
会费("贡献")-记录在JP中,我们发布"jp"。contribution.recorded`.
触发器("触发器")-产生承诺;JP发起"payout"传奇。
付款('payout。requested → wallet.credit.ok')-完成传奇;faille-重复数据消除后继。
Outbox/CDC是发布事件的唯一途径。没有"旁路"记录器。
10)遥测和行车记录仪
业务:- `pool_size`, `contrib_rate`, `avg_contrib_per_bet`, `time_to_drop`, `payouts_count/sum`, `tier_distribution`.
- p50/p95/p99 по `contribution`, `trigger`, `payout`;
- error rate с типами (5xx/4xx/business), retry storms, queue lag;
- `wallet.credit` latency/ok-rate;池更新冲突。
- payout的增长。failed'>X%按品牌/地区,'pool_size'> cap-Y%时间(配置错误),在'pool_size'和>Z ppm核对贡献金额之间漂移。
11)多重性和隔离
所有查询和事件均标有"tenant_id/brand_id/license/region"。
本地/网络池在物理上(DB/cluster)在不同的许可/区域上分开。
Row-level security (RLS)和BI店面中的蒙版。
每个品牌/地区的单个密钥/秘密和示意图空间。
12)与奖金/锦标赛集成
贡献不会直接增加vager;对奖金的贡献-来自费率而不是贡献。
锦标赛可以为"参加JP"或"获得最高贡献"获得积分。来源是'jp事件。contribution.recorded` и `jp.triggered`.
强制性规则:头奖力学不会改变游戏的基本RTP;否则需要单独的认证。
13)测试和溷乱做法
合同测试RGS↔JP↔koshelyok:双发、延迟、订单外、回滚。
负载测试:投注风暴和触发器,扩大池操作员。
混沌教义:JP地区的衰落,离线钱包,时间同步化;检查出口和退化(pause triggers/no new contributions)。
14)支票单
对于工作室/RGS
- 等效的"贡献"和正确的"round_id"/"bet_id"。
- 没有出版物"绕过"交易(仅限outbox/CDC)。
- 双/重复触发/补偿测试。
- max bet限制/资格转让给JP。
对于操作员/平台
- Ledger是真理的来源,"wallet。信用与重复数据消除。
- RG/AML脚在付款时处理;SAR/STR报告。
- Dashbords p95' trigger→credit',error rate,池对账。
对于JP所有者
- WORM审核公式/种子/限制更改。
- 注册和版本中的事件图。
- DR:RPO ≤ 5分钟,RTO ≤ 30分钟;定期演习。
- 按品牌/许可证划分的RLS/隔离;按区键或秘密。
15)红旗(反模式)
在DB中手动编辑池大小和付款。
缺乏相容性→信用双倍。
在没有outbox/CDC的情况下发布遥测→"丢失"的贡献/触发器。
PII和不同地区的货币数据的混合。
在没有新认证的情况下影响基础游戏RTP的头奖。
没有钱包和池;报告是根据战斗OLTP构建的。
头奖系统API是工作室,平台和运营商之间的货币事件合同。它的基础是:等效性和传奇,硬性货币隔离,清晰的事件模式,安全性和WORM审计,可观察性和SLO。在这种设计中,虚构/渐进式池和网络池可以预测地扩展,付款保持正确,监管和业务报告透明且可靠。
