可证明公平的政策
可证明公平:旋转透明度的保证
在 Spin,您的信任就是一切。这就是为什么我们使用可证明公平的系统来以数学和透明的方式证明我们的战利品盒和原创游戏中的每个结果都是真正随机的、防篡改的,并且不能被包括我们在内的任何人操纵。
下面从概念和技术角度全面介绍了它的工作原理,以便您可以充分理解并验证您的游戏结果。
公平的核心:种子对和Nonce系统
每个游戏回合(例如,打开战利品箱)都由三个元素的独特组合驱动:
1.服务器种子
Spin 生成的随机值。
2.客户种子
由您的浏览器生成的值(您可以随时更改它)。
3.随机数
计数器从 0 开始,每轮新游戏都会增加 1。
这三个值共同创建一个组合种子,用于生成游戏结果。这种方法确保每场比赛都有独特的、可验证的结果。
每个公平结果是如何产生的
为了确定每场比赛的结果,系统遵循精确、可验证的流程:
1. 服务器种子生成
Spin 生成一个称为服务器种子的秘密随机字符串。在游戏开始之前,我们会向您显示其 SHA-256 哈希值(称为哈希服务器种子),这证明我们以后无法更改它而不被抓住。
2. 客户种子创建
您的浏览器会生成客户端种子,这是您对随机化过程的独特贡献。您可以随时更新此种子,从而可以控制用于生成游戏结果的输入。
3. 随机数计数器
对于每一轮新游戏(例如打开战利品箱),Nonce 都会增加 1。它保证每一轮都会产生独特的结果——即使使用相同的种子对。
技术细分:从种子到随机结果
以下是我们如何将种子数据转化为公平随机结果的方法:
1. 结合种子和随机数
服务器种子、客户端种子和随机数合并为单个字符串。这种组合种子对于每轮比赛来说都是独一无二的。
const combinedSeed = `${clientSeed}:${serverSeed}:${nonce}`;2. 对组合种子进行哈希处理
我们将 SHA-512 哈希算法应用于组合种子,创建一长串看似随机的字符(哈希)。这个哈希值决定了实际的游戏结果。
const hash = sha512(combinedSeed);3. 提取票号
根据这个哈希值,我们生成一个随机票号——一个 0 到 99,999,999 之间的数字。这张票决定了该轮的结果。
我们的战利品箱中的每个物品或结果都被分配给特定范围的票号。当您的票落在特定范围内时,您将获得相应的奖励。
private getTicketNumber(hash: max = 1e8) {
// Take the first 8 characters of the hash
const subHash = hash.slice(0,8);
// Parse the hex substring to a number
const valueFromHash = parseInt(subHash, 16);
// Calculate a value between 0 and 1 by dividing by 2^32
const e = Math.pow(2,32);
const normalizedValue = valueFromHash / e;
// Using Math.floor ensures we get integers from 0 to max-1
return Math.floor(normalizedValue * max);
}每轮游戏的工作流程示例
1. 你打开一个战利品箱。
2. 该系统使用:
- 隐藏的服务器种子
- 您的客户种子
- 当前的随机数
3. 这些被组合并散列。
4. 根据哈希值生成随机票号。
5. 该票号根据每个项目的定义范围决定您的结果。
6. 一旦服务器种子退役,它就会被公开披露,以便您可以验证每个结果。
亲自验证过去的回合
我们相信彻底的透明度。这就是为什么我们为您提供工具来独立验证过去的每个结果。
使用我们的CodePen验证工具输入:
1. 服务器种子(退役后揭晓)
2. 哈希服务器种子(您在玩之前看到的)
3. 您的客户种子
4. 每轮游戏的 Nonce
有了这些信息,您可以重现随机票号并确认它与您收到的结果相符。
是什么让这被证明是公平的?
1. 我们提前承诺服务器种子(通过其哈希值)。
2. 您贡献自己的客户端种子,您可以更改它。
3. Nonce 确保每一轮的唯一性。
4. SHA-512 哈希使任何人都无法预测或操纵结果。
5. 之后您可以使用公共数据验证每场比赛。
该系统使作弊或偏见成为不可能——无论是我们还是任何第三方。您所看到的正是您所得到的:可验证的随机性。