常规 RNG 的问题
在典型的在线老虎机中,随机数生成器(RNG)位于运营商的服务器上。玩家只能看到结果。即使是诚实的运营商也无法向特定玩家证明这一次旋转没有被操纵——你只能依赖证书和声誉。
可证明公平填补了这一空白:运营商提前“锁定”其秘密,游戏后公开,因此任何人都可以独立重新计算结果。
提交-揭示方案
在一系列旋转之前,服务器生成一个 serverSeed 并只发布其哈希——SHA-256(serverSeed)。这是一个“承诺”:服务器已经承诺,但种子本身尚未揭示,因此无法追溯更改。
玩家添加自己的clientSeed——可随时更改。每次旋转都用nonce计数器编号。结果由三个值确定性地计算得出:serverSeed + clientSeed + nonce。
当serverSeed发生变化(轮换)时,旧的serverSeed会被揭示——即“reveal”。玩家验证SHA-256(揭示的种子)与先前公布的哈希是否匹配,并重新计算他们过去的所有旋转。
为何恰好是 HMAC-SHA256
从三个种子中,通过 HMAC-SHA256 生成随机字节流——一个加密安全的函数:知道结果,就不可能反向计算出 serverSeed,而改变种子的任何单个比特都会完全改变结果。
一个重要细节是“模偏差”的缺失。如果你只是将随机数除以转轮尺寸取余数,频繁出现的符号会获得略多的权重。正确的实现使用拒绝采样:丢弃范围中“不均匀尾部”的值,分布保持严格均匀。
如何验证你的旋转
在我们的引擎中,每次旋转都有公平性面板:nonce、clientSeed、游戏前的 hash(serverSeed) 以及回合结束后揭示的 serverSeed。/api/fair/verify 端点会根据这些值独立重新计算结果——你得到的结果与游戏中看到的相同。
这就是"可证明公平"的含义:你不是凭信仰接受——你去验证它。同样的机制在Megaways模式和级联主题中运作。