什么是承诺方案:
承诺方案是一种机制,它允许玩家和平台安全地锁定(承诺)各自选定的秘密值,同时对他人保密。
这些值可以在事后公开,以便第三方核对承诺内容与公开的值是否一致。承诺方案确保了娱乐场的结果可被验证。
承诺方案分为两个阶段:承诺(Commit)阶段和揭示(Reveal)阶段。
承诺阶段:
承诺阶段的目的是锁定由玩家和运营方生成的特定值,用于生成游戏结果。
简单来说,共有 3 个值被承诺并用于生成游戏结果。一旦承诺,这些值在揭示阶段之前都无法更改。在承诺过程中会进行哈希运算,以防止篡改。
当前客户端种子
当前服务器种子(未哈希)
Nonce(随机数)
Output = Commit(Active_Client_Seed, Active_Server_Seed, Nonce)
当前客户端种子:未经哈希处理,由玩家自行设定。
当前服务器种子(未哈希):由服务器生成并保密。该秘密值会经过哈希处理,运营方和玩家只能看到哈希后的值。
Nonce 初始值为 0,因为此时尚未进行任何游戏。之后每进行一局游戏,其数值都会递增。
这 3 个变量的组合确保每次承诺的输出结果都各不相同。
揭示阶段:
揭示阶段的目的是公开未哈希的服务器种子。在得知未哈希的种子和 Nonce 后,用户即可自行验证游戏结果。
如果玩家想要验证自己的结果,需要先更换(轮换)当前的服务器种子和客户端种子组合。
完成更换后,平台会公开此前使用的服务器种子的未哈希原值。此时,玩家、运营方以及任何第三方都能获知全部 3 项信息:客户端种子、服务器种子和 Nonce。
只要输入已知的客户端种子、服务器种子以及该局的 Nonce,就始终可以证明该游戏、该局的结果。
服务器种子
服务器种子由系统随机生成,是一个 64 位的十六进制字符串。该种子会经过 SHA-256 哈希处理,并显示哈希后的值。哈希处理有两个目的:
防止作弊:从哈希值反推出未哈希的原始服务器种子在计算上是不可行的(原像抗性),从而防止玩家作弊。
防止操纵:由于 SHA-256 具有抗碰撞性,在计算上不可能找到两个能产生相同哈希输出的不同输入,从而防止运营方欺骗玩家。
只有在游戏结束且用户更换种子后,娱乐场才会公开未哈希的服务器种子以供验证。
客户端种子
客户端种子属于玩家本人,确保您能够影响每一局游戏结果的随机性。
客户端种子最初由您的浏览器随机生成,但我们建议您将其修改为自己喜欢的值。这样可以确保您作为玩家对游戏结果拥有话语权。
Nonce(随机数)
在密码学中,Nonce 指“仅使用一次的数字”(number once)。在同一组服务器种子和客户端种子下,每进行一次新的投注,该数值就会递增。
这确保了每局游戏中服务器种子、客户端种子和 Nonce 的组合都不相同,承诺方案的输出结果也随之不同。
进一步了解这些值在代码中是如何实现的。


