
公平性验证
在你自己的浏览器里复算任意一局:全部计算本地完成,不向服务器发送任何数据,断网也能验证。
复算一局
复算结果
在你自己的浏览器里复算任意一局:全部计算本地完成,不向服务器发送任何数据,断网也能验证。
算法与验证步骤
同一组 (server seed, client seed, nonce) 在任何语言、任何平台按上述整数公式复算,都会得到逐位相同的 u 与 roll。
- 1取材料:在游戏历史记录中复制本局的 server seed、client seed 与 nonce。
serverSeed, clientSeed, nonce - 2计算哈希:对 server seed 做 SHA256 哈希,与该局公示的哈希比对。
hash = SHA256(serverSeed) - 3生成随机数:使用 HMAC-SHA256 派生一个 53 位整数并归一化到 [0,1)。
h = HMAC_SHA256(key=serverSeed, msg=clientSeed + ":" + nonce) >> 11 - 4计算结果:根据游戏规则将随机数映射为最终结果。
result = mapToGame(h / 2^53, gameRule)
各游戏映射
- 映射:roll = floor(u × 10000) ∈ [0,10000);over 押点数 > target 赢,under 押点数 < target 赢,恰好等于 target 算输。
- Crash 映射:m = (1 − edge) / (1 − u),小于 1 取 1(即时崩盘,概率恰为 edge),超上限截断;定点倍数 = floor(m × 100)。
- Mines 映射:第 i 颗雷用消息 "client seed:nonce:i" 单独派生 u_i,局部 Fisher–Yates 从剩余格中取 offset = floor(u_i × 剩余格数);开局一次性布雷,开格只是查表。
- Plinko 映射:取 u64 高 53 位的低 rows 位作路径(1 = 向右),落点桶 = 位串中 1 的个数;倍数 = floor(公示赔付表[桶] × (10000 − edge) / 9900)。
