跳转到主要内容

可验证公平 - 承诺方案

什么是承诺方案:

承诺方案是一种机制,它允许玩家和平台安全地锁定(承诺)各自选定的秘密值,同时对他人保密。

这些值可以在事后公开,以便第三方核对承诺内容与公开的值是否一致。承诺方案确保了娱乐场的结果可被验证。

承诺方案分为两个阶段:承诺(Commit)阶段和揭示(Reveal)阶段。

承诺阶段:

承诺阶段的目的是锁定由玩家和运营方生成的特定值,用于生成游戏结果。

简单来说,共有 3 个值被承诺并用于生成游戏结果。一旦承诺,这些值在揭示阶段之前都无法更改。在承诺过程中会进行哈希运算,以防止篡改。

  1. 当前客户端种子

  2. 当前服务器种子(未哈希)

  3. Nonce(随机数)

Output = Commit(Active_Client_Seed, Active_Server_Seed, Nonce)

当前客户端种子:未经哈希处理,由玩家自行设定。

当前服务器种子(未哈希):由服务器生成并保密。该秘密值会经过哈希处理,运营方和玩家只能看到哈希后的值。

Nonce 初始值为 0,因为此时尚未进行任何游戏。之后每进行一局游戏,其数值都会递增。

这 3 个变量的组合确保每次承诺的输出结果都各不相同。

揭示阶段:

揭示阶段的目的是公开未哈希的服务器种子。在得知未哈希的种子和 Nonce 后,用户即可自行验证游戏结果。

如果玩家想要验证自己的结果,需要先更换(轮换)当前的服务器种子和客户端种子组合。

完成更换后,平台会公开此前使用的服务器种子的未哈希原值。此时,玩家、运营方以及任何第三方都能获知全部 3 项信息:客户端种子、服务器种子和 Nonce。

只要输入已知的客户端种子、服务器种子以及该局的 Nonce,就始终可以证明该游戏、该局的结果。

服务器种子

服务器种子由系统随机生成,是一个 64 位的十六进制字符串。该种子会经过 SHA-256 哈希处理,并显示哈希后的值。哈希处理有两个目的:

  1. 防止作弊:从哈希值反推出未哈希的原始服务器种子在计算上是不可行的(原像抗性),从而防止玩家作弊。

  2. 防止操纵:由于 SHA-256 具有抗碰撞性,在计算上不可能找到两个能产生相同哈希输出的不同输入,从而防止运营方欺骗玩家。

只有在游戏结束且用户更换种子后,娱乐场才会公开未哈希的服务器种子以供验证。

客户端种子

客户端种子属于玩家本人,确保您能够影响每一局游戏结果的随机性。

客户端种子最初由您的浏览器随机生成,但我们建议您将其修改为自己喜欢的值。这样可以确保您作为玩家对游戏结果拥有话语权。

Nonce(随机数)

在密码学中,Nonce 指“仅使用一次的数字”(number once)。在同一组服务器种子和客户端种子下,每进行一次新的投注,该数值就会递增。

这确保了每局游戏中服务器种子、客户端种子和 Nonce 的组合都不相同,承诺方案的输出结果也随之不同。

进一步了解这些值在代码中是如何实现的。

这是否解答了您的问题?