Skip to main content
任何一局已结束的游戏,你都可以仅凭公开的链上数据自行验证,既不需要账户,也不需要任何特殊权限。需要核对的有三点:承诺哈希确实在本局开始之前就已发布、被揭示的秘密值的哈希与该承诺一致,以及用公开公式重算得到的结果与本局实际结算的结果完全相同。 本指南会取一局已结束的 Crash,并从头到尾验证它:运营方的秘密值确实是在本局之前承诺的,而崩盘点也正是公开公式所得出的结果。你不需要任何特殊权限 —— 所有数据都来自公开的链上信息。文末有一小节讲 Dice 与 Mines,它们各自只需一到两笔交易即可验证。

你要证明的是什么

  1. 承诺在先。 秘密值的哈希在本局开始之前就已在链上 —— 因此结果不可能是在你下注之后才挑选的。
  2. 秘密值与承诺吻合。 sha256(secret) 等于所承诺的哈希。
  3. 倍数是诚实的。 用秘密值与区块哈希重新计算公式,得到的正是本局用于赔付的崩盘点。

第 1 步 —— 在应用中打开本局的公平性数据

打开你的下注记录(或对局记录),点击一局已结束的游戏进入详情。在本局结果旁边,你会看到:
  • 崩盘于 —— 需要验证的最终倍数。
  • 游戏密钥哈希 —— 已揭示的 32 字节秘密值。它会链接到 Solana 区块浏览器上的承诺交易。
  • 区块哈希 —— 用作链上熵的 Solana 槽位哈希。它会链接到开局交易。
  • 「本局是否公平?使用公平性验证工具」 —— 打开已预填本局数据的公平性验证工具。该工具会获取本局的三个交易签名(承诺、区块哈希、揭示)以及所在网络,并一键替你完成下面的全部重算。
公平性工具是便捷路径。本页其余部分是完全独立的路径 —— 除了链和你自己的电脑,什么都不必信任。

第 2 步 —— 一局的三笔交易

第 3 步 —— 从 Solana 区块浏览器读取数值

在你惯用的区块浏览器(Solscan、Solana Explorer、SolanaFM……)上,按应用所运行的网络分别打开这三笔交易。在交易页面中查找已解码的程序事件(有时位于「Logs」或「Instruction data」之下;能识别该程序 IDL 的浏览器会按字段名解码事件)。 收集四个数值:
  • commit_hash —— 32 字节,来自承诺交易。
  • blockhash —— 32 字节,来自区块哈希交易。
  • local_e —— 32 字节的秘密值,来自揭示交易。
  • crash_point_bps —— 以基点表示的最终崩盘点,来自揭示交易(29948 表示 2.9948x)。
编码格式不同站点会把 32 字节数值显示为十六进制、base58 或字节数组。下面的脚本要求十六进制;如果你的浏览器显示的是 base58,请先转换(任何 base58 解码器都可以 —— 重要的是字节值本身,而非表示法)。

第 4 步 —— 核对先后顺序

在区块浏览器上,比较承诺交易与区块哈希交易的槽位(或区块时间)。承诺必须在先。这正是整套机制的核心:秘密值在与之混合的那份熵存在之前,就已被封存。

第 5 步 —— 重新计算崩盘点

用 Node.js 运行下面的代码(无需任何依赖),把第 3 步得到的三个十六进制字符串填进去:
两项检查都必须通过:commitment ok: true,且打印出的崩盘点必须与本局的崩盘于倍数一致(也与揭示事件中的 crash_point_bps 一致)。如果一致,你就已经证明了 —— 无需信任任何人 —— 本局的结果在开始之前就已锁定,并且完全由公开公式计算得出。

Dice 与 Mines

即时游戏的验证方式相同,只是涉及的交易更少:
  • Dice —— 每笔下注一笔交易。其 DiceBetSettled 事件包含全部推导输入(slothash、user、nonce)以及 roll 与赔付。用 Dice 公平性中的公式重新计算。
  • Mines —— 每局两笔交易。开局交易公布棋盘承诺与槽位哈希;结算交易揭示种子与完整棋盘。用 Mines 公平性中的公式重新计算。

如果对不上

先排除常见原因:把 base58 的值粘贴到了要求十六进制的地方、找错了交易(每一局有三笔),或者所用的庄家优势与本局当时的取值不同(优势存放在链上配置中,而对它的每一次更改本身也是一笔链上交易)。 如果你仍然得到真实的不一致,那正是这套系统存在的意义所在:数据是公开且永久的,因此任何人都可以重跑你的验证。请带上对局编号联系客服 —— 并且请注意,真正的承诺不符或公式不符是没有任何诚实解释的,而这正是本机制让它们无法被掩盖的原因。