2030 lines
61 KiB
JSON
2030 lines
61 KiB
JSON
{
|
||
"seed": 20260712,
|
||
"monte_carlo_draws": 100000,
|
||
"long_run_draws": 100000,
|
||
"group_long_run_draws": 30000,
|
||
"nominal_probability_table": {
|
||
"expected_multiplier": 26.5,
|
||
"nominal_rtp_percent": 2650,
|
||
"target_rtp_percent": 98,
|
||
"passes_target": false,
|
||
"conclusion": "图示固定概率表的名义EV为26.5x(2650%),不能作为98% RTP方案;只有P/W资金约束后的有资金长跑口径可验证不透支。"
|
||
},
|
||
"scenarios": [
|
||
{
|
||
"name": "图示800重抽序列",
|
||
"passed": true,
|
||
"summary": "P=800,固定脚本命中[200x 1000x 5x],最终赔付=50,池后=750",
|
||
"data": {
|
||
"sequence": [
|
||
"200x",
|
||
"1000x",
|
||
"5x"
|
||
],
|
||
"trace": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 800,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 800,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 600000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 200000,
|
||
"adjusted_weight_ppm": 200000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 150000,
|
||
"adjusted_weight_ppm": 150000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 40000,
|
||
"adjusted_weight_ppm": 40000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 10000,
|
||
"adjusted_weight_ppm": 10000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"weight_ppm": 40000,
|
||
"payout_coins": 2000,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"sequence": 2,
|
||
"kind": "redraw",
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"weight_ppm": 10000,
|
||
"payout_coins": 10000,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"sequence": 3,
|
||
"kind": "redraw",
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"weight_ppm": 200000,
|
||
"payout_coins": 50
|
||
}
|
||
],
|
||
"removed": [
|
||
{
|
||
"tier_id": "200x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "0x",
|
||
"reason": "w_gt_p_redraw_excludes_zero"
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
}
|
||
],
|
||
"original_tier_id": "200x",
|
||
"redraw_tier_ids": [
|
||
"1000x",
|
||
"5x"
|
||
],
|
||
"final_reason": "paid",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "P=W边界/候选穷尽",
|
||
"passed": true,
|
||
"summary": "W=P赔付2000且池归零;P=49时正奖候选穷尽安全回0,池仍49",
|
||
"data": {
|
||
"equality": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 2000,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 2000,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 600000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 200000,
|
||
"adjusted_weight_ppm": 200000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 150000,
|
||
"adjusted_weight_ppm": 150000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 40000,
|
||
"adjusted_weight_ppm": 40000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 10000,
|
||
"adjusted_weight_ppm": 10000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"weight_ppm": 40000,
|
||
"payout_coins": 2000
|
||
}
|
||
],
|
||
"removed": null,
|
||
"original_tier_id": "200x",
|
||
"final_reason": "paid",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
},
|
||
"exhaustion": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 49,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 49,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 600000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 200000,
|
||
"adjusted_weight_ppm": 200000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 150000,
|
||
"adjusted_weight_ppm": 150000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 40000,
|
||
"adjusted_weight_ppm": 40000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 10000,
|
||
"adjusted_weight_ppm": 10000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"weight_ppm": 10000,
|
||
"payout_coins": 10000,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"sequence": 2,
|
||
"kind": "redraw",
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"weight_ppm": 40000,
|
||
"payout_coins": 2000,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"sequence": 3,
|
||
"kind": "redraw",
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"weight_ppm": 150000,
|
||
"payout_coins": 500,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"sequence": 4,
|
||
"kind": "redraw",
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"weight_ppm": 200000,
|
||
"payout_coins": 50,
|
||
"removed_reason": "pool_insufficient_w_gt_p"
|
||
}
|
||
],
|
||
"removed": [
|
||
{
|
||
"tier_id": "1000x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "0x",
|
||
"reason": "w_gt_p_redraw_excludes_zero"
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
}
|
||
],
|
||
"original_tier_id": "1000x",
|
||
"redraw_tier_ids": [
|
||
"200x",
|
||
"50x",
|
||
"5x"
|
||
],
|
||
"final_reason": "no_payable_nonzero_tier_fallback_zero",
|
||
"blocked_reason": "no_payable_nonzero_tier_fallback_zero",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "拆账与冷启动",
|
||
"passed": true,
|
||
"summary": "100金币拆为98/1/1;10金币按公共池floor、余数归盈利拆为9/1/0;动态池冷启动=0,启动资金只能审计注资",
|
||
"data": {
|
||
"cold_start_state": {
|
||
"pool_balance_coins": 0,
|
||
"consecutive_zero_draws": 0,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 0,
|
||
"user_day_spend_coins": 0,
|
||
"global_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 0,
|
||
"user_registered_at_ms": 0,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 0
|
||
},
|
||
"conserved": true,
|
||
"rounding_policy": "public=floor, anchor=floor, residue=profit",
|
||
"split_100": {
|
||
"public_pool_coins": 98,
|
||
"profit_pool_coins": 1,
|
||
"anchor_return_coins": 1
|
||
},
|
||
"split_10_rounding": {
|
||
"public_pool_coins": 9,
|
||
"profit_pool_coins": 1,
|
||
"anchor_return_coins": 0
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "1/5/6/99批量",
|
||
"passed": true,
|
||
"summary": "每份礼物独立推进一次状态,1/5/6/99均完整执行且任一中间池余额不负",
|
||
"data": [
|
||
{
|
||
"requested": 1,
|
||
"executed": 1,
|
||
"positive": 0,
|
||
"payout_coins": 0,
|
||
"pool_after": 98,
|
||
"tier_counts": {
|
||
"0x": 1
|
||
}
|
||
},
|
||
{
|
||
"requested": 5,
|
||
"executed": 5,
|
||
"positive": 0,
|
||
"payout_coins": 0,
|
||
"pool_after": 490,
|
||
"tier_counts": {
|
||
"0x": 5
|
||
}
|
||
},
|
||
{
|
||
"requested": 6,
|
||
"executed": 6,
|
||
"positive": 1,
|
||
"payout_coins": 500,
|
||
"pool_after": 88,
|
||
"tier_counts": {
|
||
"0x": 5,
|
||
"5x": 1
|
||
}
|
||
},
|
||
{
|
||
"requested": 99,
|
||
"executed": 99,
|
||
"positive": 19,
|
||
"payout_coins": 9500,
|
||
"pool_after": 202,
|
||
"tier_counts": {
|
||
"0x": 80,
|
||
"5x": 19
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "真实流水结算窗口",
|
||
"passed": true,
|
||
"summary": "阈值99、参考价10、预置10抽/98流水;99份共100金币后窗口流水=100/98,子抽归属=1/98",
|
||
"data": {
|
||
"draws_in_window_1": 1,
|
||
"draws_in_window_2": 98,
|
||
"legacy_derived_draw_threshold": 10,
|
||
"reference_price": 10,
|
||
"settlement_window_wager": 99,
|
||
"windows": [
|
||
{
|
||
"index": 1,
|
||
"paid_draws": 11,
|
||
"wager_coins": 100
|
||
},
|
||
{
|
||
"index": 2,
|
||
"paid_draws": 98,
|
||
"wager_coins": 98
|
||
}
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"name": "低中高水位边界",
|
||
"passed": true,
|
||
"summary": "\u003c1000万应用0.7;等于1000万/2000万均为中水位;\u003e2000万应用1.3",
|
||
"data": [
|
||
{
|
||
"pool": 9999999,
|
||
"five_x_weight_ppm": 140000,
|
||
"factors": [
|
||
"low_water"
|
||
]
|
||
},
|
||
{
|
||
"pool": 10000000,
|
||
"five_x_weight_ppm": 200000,
|
||
"factors": [
|
||
"identity"
|
||
]
|
||
},
|
||
{
|
||
"pool": 20000000,
|
||
"five_x_weight_ppm": 200000,
|
||
"factors": [
|
||
"identity"
|
||
]
|
||
},
|
||
{
|
||
"pool": 20000001,
|
||
"five_x_weight_ppm": 260000,
|
||
"factors": [
|
||
"high_water"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "充值0/299999/300000ms",
|
||
"passed": true,
|
||
"summary": "充值加成严格使用[0,300000ms):0和299999生效,300000失效",
|
||
"data": [
|
||
{
|
||
"age_ms": 0,
|
||
"five_x_weight_ppm": 220000,
|
||
"boosted": true
|
||
},
|
||
{
|
||
"age_ms": 299999,
|
||
"five_x_weight_ppm": 220000,
|
||
"boosted": true
|
||
},
|
||
{
|
||
"age_ms": 300000,
|
||
"five_x_weight_ppm": 200000,
|
||
"boosted": false
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "概率Monte Carlo",
|
||
"passed": true,
|
||
"summary": "100000抽经验EV=26.3058x(只验证图示概率采样,不声称通过98%资金RTP)",
|
||
"data": {
|
||
"counts": {
|
||
"0x": 60043,
|
||
"1000x": 967,
|
||
"200x": 4045,
|
||
"50x": 15108,
|
||
"5x": 19837
|
||
},
|
||
"empirical_ev_multiplier": 26.30585,
|
||
"empirical_probability": {
|
||
"0x": 0.60043,
|
||
"1000x": 0.00967,
|
||
"200x": 0.04045,
|
||
"500x": 0,
|
||
"50x": 0.15108,
|
||
"5x": 0.19837
|
||
},
|
||
"expected_probability": {
|
||
"0x": 0.6,
|
||
"1000x": 0.01,
|
||
"200x": 0.04,
|
||
"500x": 0,
|
||
"50x": 0.15,
|
||
"5x": 0.2
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "RTP长跑",
|
||
"passed": true,
|
||
"summary": "100000抽实付RTP=97.9950%,投入=9800000,赔付=9799500,池余=500",
|
||
"data": {
|
||
"contributed": 9800000,
|
||
"fund_conserved": true,
|
||
"payout": 9799500,
|
||
"pool_after": 500,
|
||
"rtp_percent": 97.995
|
||
}
|
||
},
|
||
{
|
||
"name": "已结算轮次+注册48小时大奖资格",
|
||
"passed": true,
|
||
"summary": "注册\u003c48h失败;恰48h及只玩最后5分钟按实际总流水判断;用户轮次/48h严格\u003c96%,大盘允许=98%,超限或零样本失败",
|
||
"data": [
|
||
{
|
||
"case": "注册47小时,即使两个用户RTP都是95%也失败",
|
||
"registered_age_hours": 47,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "0x"
|
||
},
|
||
{
|
||
"case": "注册恰满48小时,两个用户RTP都是95%通过",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": true,
|
||
"triggered": true,
|
||
"selected_tier": "1000x"
|
||
},
|
||
{
|
||
"case": "注册已满48小时且只在最后5分钟玩,48小时总RTP就是这5分钟的95%",
|
||
"registered_age_hours": 72,
|
||
"round_wager_coins": 100,
|
||
"round_payout_coins": 95,
|
||
"rolling_48h_wager_coins": 100,
|
||
"rolling_48h_payout_coins": 95,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": true,
|
||
"triggered": true,
|
||
"selected_tier": "500x"
|
||
},
|
||
{
|
||
"case": "已结算用户轮次RTP恰好96%失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9600,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "0x"
|
||
},
|
||
{
|
||
"case": "滚动48小时总RTP恰好96%失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9600,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "0x"
|
||
},
|
||
{
|
||
"case": "已结算大盘RTP恰好98%仍通过",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": true,
|
||
"triggered": true,
|
||
"selected_tier": "500x"
|
||
},
|
||
{
|
||
"case": "已结算大盘RTP超过98%失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9801,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "5x"
|
||
},
|
||
{
|
||
"case": "仅用户轮次门失败,48小时门通过,仍失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9700,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "50x"
|
||
},
|
||
{
|
||
"case": "仅48小时门失败,用户轮次门通过,仍失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9700,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "5x"
|
||
},
|
||
{
|
||
"case": "用户轮次没有消费样本失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 0,
|
||
"round_payout_coins": 0,
|
||
"rolling_48h_wager_coins": 10000,
|
||
"rolling_48h_payout_coins": 9500,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "0x"
|
||
},
|
||
{
|
||
"case": "滚动48小时没有消费样本失败",
|
||
"registered_age_hours": 48,
|
||
"round_wager_coins": 10000,
|
||
"round_payout_coins": 9500,
|
||
"rolling_48h_wager_coins": 0,
|
||
"rolling_48h_payout_coins": 0,
|
||
"global_wager_coins": 10000,
|
||
"global_payout_coins": 9800,
|
||
"wanted": false,
|
||
"triggered": false,
|
||
"selected_tier": "0x"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "池不足仍消费已结算轮次资格",
|
||
"passed": true,
|
||
"summary": "首抽池=49不足支付200x,资格尝试后pending=false;补池到20000再抽也不会复用旧资格",
|
||
"data": {
|
||
"after_top_up_without_new_closed_round": {
|
||
"selected_tier": {
|
||
"id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 1000000,
|
||
"jackpot": false,
|
||
"enabled": true
|
||
},
|
||
"payout_coins": 0,
|
||
"pool_after_coins": 20000,
|
||
"stage": "novice",
|
||
"jackpot": false,
|
||
"consumed_milestone_token": false,
|
||
"next_state": {
|
||
"pool_balance_coins": 20000,
|
||
"consecutive_zero_draws": 2,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 0,
|
||
"user_day_spend_coins": 20,
|
||
"global_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9800
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 360000000,
|
||
"user_registered_at_ms": 187200000,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 2
|
||
},
|
||
"trace": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 20000,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 20000,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 1000000,
|
||
"raw_adjusted_weight_ppm": 1000000,
|
||
"adjusted_weight_ppm": 1000000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"weight_ppm": 1000000,
|
||
"payout_coins": 0
|
||
}
|
||
],
|
||
"removed": null,
|
||
"conditions": [
|
||
{
|
||
"name": "settled_round_qualification",
|
||
"passed": false,
|
||
"reason": "no_closed_round_pending"
|
||
},
|
||
{
|
||
"name": "global_rtp",
|
||
"numerator": 9800,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 980000,
|
||
"limit_ppm": 980000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_round_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_registered_48h",
|
||
"numerator": 172800000,
|
||
"denominator": 172800000,
|
||
"passed": true,
|
||
"reason": "registered_48h"
|
||
},
|
||
{
|
||
"name": "user_48h_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "daily_jackpot_limit",
|
||
"limit_ppm": 5,
|
||
"passed": true,
|
||
"reason": "below_limit"
|
||
}
|
||
],
|
||
"original_tier_id": "0x",
|
||
"final_reason": "zero_selected",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
},
|
||
"pool_blocked_attempt": {
|
||
"selected_tier": {
|
||
"id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 1000000,
|
||
"jackpot": false,
|
||
"enabled": true
|
||
},
|
||
"payout_coins": 0,
|
||
"pool_after_coins": 49,
|
||
"stage": "novice",
|
||
"jackpot": false,
|
||
"consumed_milestone_token": false,
|
||
"next_state": {
|
||
"pool_balance_coins": 49,
|
||
"consecutive_zero_draws": 1,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 0,
|
||
"user_day_spend_coins": 10,
|
||
"global_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9800
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 360000000,
|
||
"user_registered_at_ms": 187200000,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 1
|
||
},
|
||
"trace": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 49,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 49,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 1000000,
|
||
"raw_adjusted_weight_ppm": 1000000,
|
||
"adjusted_weight_ppm": 1000000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"weight_ppm": 1000000,
|
||
"payout_coins": 0
|
||
}
|
||
],
|
||
"removed": [
|
||
{
|
||
"tier_id": "200x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
}
|
||
],
|
||
"conditions": [
|
||
{
|
||
"name": "settled_round_qualification",
|
||
"passed": true,
|
||
"reason": "closed_round_pending"
|
||
},
|
||
{
|
||
"name": "global_rtp",
|
||
"numerator": 9800,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 980000,
|
||
"limit_ppm": 980000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_round_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_registered_48h",
|
||
"numerator": 172800000,
|
||
"denominator": 172800000,
|
||
"passed": true,
|
||
"reason": "registered_48h"
|
||
},
|
||
{
|
||
"name": "user_48h_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "daily_jackpot_limit",
|
||
"limit_ppm": 5,
|
||
"passed": true,
|
||
"reason": "below_limit"
|
||
},
|
||
{
|
||
"name": "payable_jackpot_candidate",
|
||
"passed": false,
|
||
"reason": "no_payable_jackpot_candidate"
|
||
}
|
||
],
|
||
"original_tier_id": "0x",
|
||
"final_reason": "zero_selected",
|
||
"blocked_reason": "no_payable_jackpot_candidate",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "大奖集合",
|
||
"passed": true,
|
||
"summary": "池足时大奖集合覆盖200/500/1000x=true;P=4999时只可能200x=map[200x:40]",
|
||
"data": {
|
||
"pool_10000_counts": {
|
||
"1000x": 16,
|
||
"200x": 66,
|
||
"500x": 38
|
||
},
|
||
"pool_4999_counts": {
|
||
"200x": 40
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "日5次上限",
|
||
"passed": true,
|
||
"summary": "5个独立已结算轮次命中后计数=5;第6个轮次受日上限阻断且该轮资格仍按一次尝试消费",
|
||
"data": {
|
||
"sixth": {
|
||
"selected_tier": {
|
||
"id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"jackpot": false,
|
||
"enabled": true
|
||
},
|
||
"payout_coins": 0,
|
||
"pool_after_coins": 987000,
|
||
"stage": "novice",
|
||
"jackpot": false,
|
||
"consumed_milestone_token": false,
|
||
"next_state": {
|
||
"pool_balance_coins": 987000,
|
||
"consecutive_zero_draws": 1,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 5,
|
||
"user_day_spend_coins": 60,
|
||
"global_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9800
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 381600000,
|
||
"user_registered_at_ms": 187200000,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 6
|
||
},
|
||
"trace": {
|
||
"stage": "novice",
|
||
"pool_before_coins": 987000,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 987000,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 600000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 200000,
|
||
"adjusted_weight_ppm": 200000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 150000,
|
||
"adjusted_weight_ppm": 150000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 40000,
|
||
"adjusted_weight_ppm": 40000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 10000,
|
||
"adjusted_weight_ppm": 10000,
|
||
"factors": [
|
||
{
|
||
"name": "identity",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"weight_ppm": 40000,
|
||
"payout_coins": 2000,
|
||
"removed_reason": "daily_jackpot_limit"
|
||
},
|
||
{
|
||
"sequence": 2,
|
||
"kind": "redraw",
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"weight_ppm": 600000,
|
||
"payout_coins": 0
|
||
}
|
||
],
|
||
"removed": [
|
||
{
|
||
"tier_id": "200x",
|
||
"reason": "daily_jackpot_limit"
|
||
}
|
||
],
|
||
"conditions": [
|
||
{
|
||
"name": "settled_round_qualification",
|
||
"passed": true,
|
||
"reason": "closed_round_pending"
|
||
},
|
||
{
|
||
"name": "global_rtp",
|
||
"numerator": 9800,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 980000,
|
||
"limit_ppm": 980000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_round_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_registered_48h",
|
||
"numerator": 194400000,
|
||
"denominator": 172800000,
|
||
"passed": true,
|
||
"reason": "registered_48h"
|
||
},
|
||
{
|
||
"name": "user_48h_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "daily_jackpot_limit",
|
||
"numerator": 5,
|
||
"limit_ppm": 5,
|
||
"passed": false,
|
||
"reason": "daily_jackpot_limit"
|
||
}
|
||
],
|
||
"original_tier_id": "200x",
|
||
"redraw_tier_ids": [
|
||
"0x"
|
||
],
|
||
"final_reason": "zero_selected",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "六维risk capacity代表边界",
|
||
"passed": true,
|
||
"summary": "单次/用户小时/用户日/设备日/房间小时/主播日六维均验证W=capacity可赔、W=capacity+1硬阻断",
|
||
"data": {
|
||
"anchor_day": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
},
|
||
"device_day": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
},
|
||
"room_hour": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
},
|
||
"single_draw": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
},
|
||
"user_day": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
},
|
||
"user_hour": {
|
||
"below_capacity_payout": 0,
|
||
"equal_capacity_payout": 50,
|
||
"pass": true
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "充值分层",
|
||
"passed": true,
|
||
"summary": "normal/advanced同时达到7日与30日下限才提档;任一维低于normal即使非零也是novice",
|
||
"data": {
|
||
"boundary_rows": [
|
||
{
|
||
"recharge_7d": 99,
|
||
"recharge_30d": 499,
|
||
"stage": "novice"
|
||
},
|
||
{
|
||
"recharge_7d": 100,
|
||
"recharge_30d": 499,
|
||
"stage": "novice"
|
||
},
|
||
{
|
||
"recharge_7d": 99,
|
||
"recharge_30d": 500,
|
||
"stage": "novice"
|
||
},
|
||
{
|
||
"recharge_7d": 100,
|
||
"recharge_30d": 500,
|
||
"stage": "normal"
|
||
},
|
||
{
|
||
"recharge_7d": 500,
|
||
"recharge_30d": 2000,
|
||
"stage": "advanced"
|
||
}
|
||
],
|
||
"thresholds": [
|
||
{
|
||
"name": "novice",
|
||
"min_recharge_7d_coins": 0,
|
||
"min_recharge_30d_coins": 0
|
||
},
|
||
{
|
||
"name": "normal",
|
||
"min_recharge_7d_coins": 100,
|
||
"min_recharge_30d_coins": 500
|
||
},
|
||
{
|
||
"name": "advanced",
|
||
"min_recharge_7d_coins": 500,
|
||
"min_recharge_30d_coins": 2000
|
||
}
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"name": "组合优先级",
|
||
"passed": true,
|
||
"summary": "优先级=已结算轮次资格\u003e普通P/W/第6抽;大奖池不足时资格消费,本抽仅赔可支付5x",
|
||
"data": {
|
||
"all_eligible": {
|
||
"selected_tier": {
|
||
"id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"jackpot": true,
|
||
"jackpot_weight": 1,
|
||
"enabled": true
|
||
},
|
||
"payout_coins": 10000,
|
||
"pool_after_coins": 0,
|
||
"stage": "advanced",
|
||
"jackpot": true,
|
||
"jackpot_mechanism": "rtp_compensation",
|
||
"consumed_milestone_token": false,
|
||
"next_state": {
|
||
"pool_balance_coins": 0,
|
||
"consecutive_zero_draws": 0,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 1,
|
||
"user_day_spend_coins": 10,
|
||
"global_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9800
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 360000000,
|
||
"user_registered_at_ms": 187200000,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 1
|
||
},
|
||
"trace": {
|
||
"stage": "advanced",
|
||
"pool_before_coins": 10000,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 10000,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 692000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 154000,
|
||
"adjusted_weight_ppm": 154000,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 115500,
|
||
"adjusted_weight_ppm": 115500,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 30800,
|
||
"adjusted_weight_ppm": 30800,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 7700,
|
||
"adjusted_weight_ppm": 7700,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "jackpot_mechanism_1",
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"weight_ppm": 1,
|
||
"payout_coins": 10000
|
||
}
|
||
],
|
||
"removed": null,
|
||
"conditions": [
|
||
{
|
||
"name": "settled_round_qualification",
|
||
"passed": true,
|
||
"reason": "closed_round_pending"
|
||
},
|
||
{
|
||
"name": "global_rtp",
|
||
"numerator": 9800,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 980000,
|
||
"limit_ppm": 980000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_round_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_registered_48h",
|
||
"numerator": 172800000,
|
||
"denominator": 172800000,
|
||
"passed": true,
|
||
"reason": "registered_48h"
|
||
},
|
||
{
|
||
"name": "user_48h_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "daily_jackpot_limit",
|
||
"limit_ppm": 5,
|
||
"passed": true,
|
||
"reason": "below_limit"
|
||
},
|
||
{
|
||
"name": "payable_jackpot_candidate",
|
||
"passed": true,
|
||
"reason": "payable_jackpot_selected"
|
||
}
|
||
],
|
||
"final_reason": "rtp_compensation_jackpot",
|
||
"jackpot_mechanism": "rtp_compensation",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
},
|
||
"special_pool_blocked": {
|
||
"selected_tier": {
|
||
"id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"jackpot": false,
|
||
"enabled": true
|
||
},
|
||
"payout_coins": 50,
|
||
"pool_after_coins": 0,
|
||
"stage": "advanced",
|
||
"jackpot": false,
|
||
"consumed_milestone_token": false,
|
||
"next_state": {
|
||
"pool_balance_coins": 0,
|
||
"consecutive_zero_draws": 0,
|
||
"pending_milestone_tokens": 0,
|
||
"user_daily_jackpot_wins": 0,
|
||
"user_day_spend_coins": 10,
|
||
"global_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9800
|
||
},
|
||
"user_round_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"user_48h_rtp": {
|
||
"wager_coins": 10000,
|
||
"payout_coins": 9500
|
||
},
|
||
"settled_round_pending": false,
|
||
"qualification_closed_at_ms": 360000000,
|
||
"user_registered_at_ms": 187200000,
|
||
"user_day_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"user_72h_rtp": {
|
||
"wager_coins": 0,
|
||
"payout_coins": 0
|
||
},
|
||
"version": 1
|
||
},
|
||
"trace": {
|
||
"stage": "advanced",
|
||
"pool_before_coins": 50,
|
||
"pool_contribution_coins": 0,
|
||
"available_pool_coins": 50,
|
||
"effective_risk_capacity_coins": 9223372036854775807,
|
||
"weights": [
|
||
{
|
||
"tier_id": "0x",
|
||
"multiplier_ppm": 0,
|
||
"base_weight_ppm": 600000,
|
||
"raw_adjusted_weight_ppm": 600000,
|
||
"adjusted_weight_ppm": 692000,
|
||
"factors": [
|
||
{
|
||
"name": "zero_remainder",
|
||
"factor_ppm": 1000000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"base_weight_ppm": 200000,
|
||
"raw_adjusted_weight_ppm": 154000,
|
||
"adjusted_weight_ppm": 154000,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "50x",
|
||
"multiplier_ppm": 50000000,
|
||
"base_weight_ppm": 150000,
|
||
"raw_adjusted_weight_ppm": 115500,
|
||
"adjusted_weight_ppm": 115500,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "200x",
|
||
"multiplier_ppm": 200000000,
|
||
"base_weight_ppm": 40000,
|
||
"raw_adjusted_weight_ppm": 30800,
|
||
"adjusted_weight_ppm": 30800,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"multiplier_ppm": 500000000,
|
||
"base_weight_ppm": 0,
|
||
"raw_adjusted_weight_ppm": 0,
|
||
"adjusted_weight_ppm": 0,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"multiplier_ppm": 1000000000,
|
||
"base_weight_ppm": 10000,
|
||
"raw_adjusted_weight_ppm": 7700,
|
||
"adjusted_weight_ppm": 7700,
|
||
"factors": [
|
||
{
|
||
"name": "low_water",
|
||
"factor_ppm": 700000
|
||
},
|
||
{
|
||
"name": "recent_recharge",
|
||
"factor_ppm": 1100000
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"draws": [
|
||
{
|
||
"sequence": 1,
|
||
"kind": "original",
|
||
"tier_id": "5x",
|
||
"multiplier_ppm": 5000000,
|
||
"weight_ppm": 154000,
|
||
"payout_coins": 50
|
||
}
|
||
],
|
||
"removed": [
|
||
{
|
||
"tier_id": "200x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "500x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "1000x",
|
||
"reason": "pool_insufficient_w_gt_p"
|
||
},
|
||
{
|
||
"tier_id": "0x",
|
||
"reason": "miss_protection_excludes_zero"
|
||
}
|
||
],
|
||
"conditions": [
|
||
{
|
||
"name": "settled_round_qualification",
|
||
"passed": true,
|
||
"reason": "closed_round_pending"
|
||
},
|
||
{
|
||
"name": "global_rtp",
|
||
"numerator": 9800,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 980000,
|
||
"limit_ppm": 980000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_round_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "user_registered_48h",
|
||
"numerator": 172800000,
|
||
"denominator": 172800000,
|
||
"passed": true,
|
||
"reason": "registered_48h"
|
||
},
|
||
{
|
||
"name": "user_48h_rtp",
|
||
"numerator": 9500,
|
||
"denominator": 10000,
|
||
"ratio_ppm": 950000,
|
||
"limit_ppm": 960000,
|
||
"passed": true,
|
||
"reason": "within_limit"
|
||
},
|
||
{
|
||
"name": "daily_jackpot_limit",
|
||
"limit_ppm": 5,
|
||
"passed": true,
|
||
"reason": "below_limit"
|
||
},
|
||
{
|
||
"name": "payable_jackpot_candidate",
|
||
"passed": false,
|
||
"reason": "no_payable_jackpot_candidate"
|
||
}
|
||
],
|
||
"original_tier_id": "5x",
|
||
"final_reason": "paid",
|
||
"blocked_reason": "no_payable_jackpot_candidate",
|
||
"milestone_token_consumed": false,
|
||
"milestone_token_retained": false,
|
||
"milestone_tokens_earned": 0
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "并发/幂等模型",
|
||
"passed": true,
|
||
"summary": "32个同幂等键仅1次状态迁移;100个并发唯一键串行化为100个版本且池余=300",
|
||
"data": {
|
||
"duplicate": {
|
||
"errors": [],
|
||
"requests": 32,
|
||
"transitions": 1,
|
||
"version": 1
|
||
},
|
||
"unique": {
|
||
"errors": [],
|
||
"pool_after": 300,
|
||
"requests": 100,
|
||
"transitions": 100,
|
||
"version": 100
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"name": "长跑分群",
|
||
"passed": true,
|
||
"summary": "novice/normal/advanced各30000抽,分层权重不同但三组资金RTP均\u003c=98%且守恒",
|
||
"data": [
|
||
{
|
||
"expected_stage": "novice",
|
||
"observed_stage": "novice",
|
||
"draws": 30000,
|
||
"tier_counts": {
|
||
"0.5x": 3036,
|
||
"0x": 3062,
|
||
"1x": 23902
|
||
},
|
||
"payout_coins": 2542000,
|
||
"pool_after": 398000,
|
||
"rtp_percent": 84.73333333333333
|
||
},
|
||
{
|
||
"expected_stage": "normal",
|
||
"observed_stage": "normal",
|
||
"draws": 30000,
|
||
"tier_counts": {
|
||
"0.5x": 1507,
|
||
"0x": 1598,
|
||
"1x": 25370,
|
||
"2x": 1525
|
||
},
|
||
"payout_coins": 2917350,
|
||
"pool_after": 22650,
|
||
"rtp_percent": 97.245
|
||
},
|
||
{
|
||
"expected_stage": "advanced",
|
||
"observed_stage": "advanced",
|
||
"draws": 30000,
|
||
"tier_counts": {
|
||
"0.5x": 1224,
|
||
"0x": 1802,
|
||
"1x": 25190,
|
||
"2x": 1784
|
||
},
|
||
"payout_coins": 2937000,
|
||
"pool_after": 3000,
|
||
"rtp_percent": 97.89999999999999
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"all_passed": true
|
||
}
|