验证解决的问题
每一局赌场游戏都是一种声明:“这个结果是随机的,我们并没有在看到你的下注之后再挑选它。”在实体房间里,你可以用眼睛来审核这一声明——崭新的牌堆、透明的骰子、你能亲眼看着的转轮。而在线上,随机性发生在别人的电脑上。Provably fair(可证明公平)就是取代观察荷官双手的密码学方案。
核心机制是承诺-揭示(commit-reveal)。在你下注之前,庄家先把自己的随机性锁定,并向你展示它的指纹——服务端种子的SHA-256哈希值。哈希是单向的:庄家无法找到另一个能产生相同指纹的种子,你也无法从指纹中反推出种子。之后当种子被揭示时,你可以将其与之前展示给你的指纹进行核对,并重新计算它所产生的每一局结果。
每一局的三个输入
| 输入 | 由谁选择 | 作用 |
|---|---|---|
| 服务端种子 | 庄家——在开始游戏前以哈希形式承诺 | 庄家一方的随机性 |
| 客户端种子 | 你——可在公平性面板中编辑 | 你这一方的随机性;庄家无法预测它 |
| Nonce(序号) | 没有人选择——按0、1、2……递增计数 | 确保在相同种子下每一局都是唯一的 |
这一局的原始随机性是HMAC-SHA256(服务端种子, 客户端种子 : nonce)——一种混合双方输入的带密钥哈希。因为你的客户端种子参与了运算,庄家若想操纵结果就必须预测你的选择;又因为服务端种子已提前承诺,事后也无法在不破坏你已持有指纹的情况下被替换。
从这个摘要中,字节被转化为数字。我们的引擎将前几个字节读取为[0,1)区间内的均匀值——舍入方式在生成器和验证器中逐位保持一致——而每款游戏则通过其公开规则,将均匀值映射到结果:骰子曲线、从逐渐缩小的牌池中抽牌、固定光标位置的天九骰子(chinchiro)等。
操作步骤
- 打开任意原版游戏,打开公平性面板。记下当前的服务端种子哈希——这就是承诺值。如果你愿意,也可以设置你自己的客户端种子。
- 玩一两局。每一局结算后都会在你的投注记录中记录其(hash、client seed、nonce)三元组。
- 在面板中轮换你的种子对。轮换会淘汰旧的服务器种子——关键时刻来了——揭示它。
- 用SHA-256对揭示出的服务器种子进行哈希运算,并与第1步得到的指纹进行比对。它们必须完全匹配。
- 重新计算该局结果:HMAC-SHA256(揭示的种子, "clientSeed:nonce"),将摘要通过游戏公布的规则映射,然后与你实际获得的结果进行比对。
- 任何独立的工具都可以用于第4-5步——在线SHA-256计算器、三行Python代码,或面板内置的验证器。数学运算不在乎是谁在运行它。
引擎验证Betkyo的实现有一个不寻常的细节:生成结果的演示引擎和检验结果的公平性面板导入的是同一个推导模块——是同一份实现,而不是两份。一个与生成器共享代码的验证器,不可能与生成器产生分歧。
遊在Limbo上试试——每局只有一个数字
Limbo是最适合优先验证的游戏:一次均匀抽取,一个倍数,可即时重新计算。Limbo →
验证并不能证明什么
诚实需要标明界限。可证明公平证明的是结果在承诺时刻就已固定,并通过公布的规则映射得出。它不能证明该规则是慷慨的——一个游戏可以是可证明公平的,同时支付得依然很差,这就是为什么我们会连同赔率表和庄家优势一起公布的原因。它不能防止亏损,不能缩短连败,也不对下一局做出任何承诺;它只承诺下一局不是被针对你而选定的。
而且它无法验证它看不到的东西:这套方案涵盖游戏结果本身,而不是,比如说,实时外部事件解析的顺序。当我们某个游戏依赖外部数据源时,公平性页面会明确说明这一点,而不是夸大声明的范围。
术语表
| 术语 | 含义 |
|---|---|
| SHA-256 | 一种单向哈希:任意输入 → 一个256位指纹;无法逆向或产生碰撞 |
| HMAC | 一种带密钥的哈希——将一个密钥(服务器种子)与一条消息(客户端种子:nonce)混合 |
| 承诺-揭示 | 先公布指纹,随后公布数值;指纹证明该数值从未被更改 |
| Nonce | “一次性数字”——使每轮摘要唯一的计数器 |
| 种子轮换 | 退役一对种子:旧的服务器种子被公开以供审计,新的承诺开始 |
常见问题
我需要懂密码学才能验证一局吗?
不需要。公平性面板会自动完成每一步,手动方式也只需将字符串粘贴到任意 SHA-256/HMAC 计算器中。理解其原理需要一段话的时间;实际操作只需一分钟。
为什么我必须轮换种子才能验证?
因为服务器种子在仍在生成结果时必须保密——提前公开会让玩家计算出未来的结果。轮换结束了该种子的生命周期,这正是使其可以安全公开和审计的原因。
庄家能为自己生成一个幸运种子吗?
承诺机制阻止了这种做法的有效性:种子在你下注之前就已固定,并与你控制的客户端种子混合。庄家需要预测你的种子、你的下注和你的下注时机——到那时它就不再是运营一家赌场,而是在表演读心术了。
可证明公平和持有牌照或经过审计是一回事吗?
不——它们回答的是不同的问题。审计和牌照是机构层面的信任;可证明公平是对每一个具体结果的数学信任。我们公开了数学原理和完整的赔付表,以确保这两种说法不会被混淆。
来源与参考资料
- HMAC——RFC 2104,每轮使用的带密钥哈希构造
- SHA-2 系列——FIPS 180-4,承诺哈希
- Betkyo 引擎源代码:共享的 RNG 原语以及单一生成器/验证器派生模块
本文涉及的游戏