自己验证公平性
网站对合约所说的一切,都可以在网络的公开数据中核对。下面的检查,从最简单的(两分钟)到最深入的(构建代码)。大多数人不需要懂编程。
验证的原理
网站可以被伪造,也可能出错,而区块链上的记录不会。所以请不要在项目的网站上验证,而要在区块浏览器中验证:这是显示区块链内容的独立网站(Solscan、Solana Explorer、SolanaFM 等)。请自己打开其中任何一个,不要通过别人消息里的链接打开。
验证需要两个地址:程序(合约)和代币。它们显示在“安全”页面。请至少再到另外两个独立的地方核对(仓库、官方渠道):如果地址对不上,说明有人想骗你。
快速检查(2–10 分钟)
| 检查什么 | 在哪里看 | 应该是什么样 | 如果不是这样 |
|---|---|---|---|
| 1. 能否增发新代币 | 区块浏览器中的代币页面,Mint Authority 字段 | 为空(已撤销) | 地址所列的持有者可以发行任意数量的代币,使你的代币贬值。 |
| 2. 能否冻结代币 | 同一页面,Freeze Authority 字段 | 空 | 持有者可以冻结任何钱包,包括你的。 |
| 3. 谁能修改代码 | 程序页面,Upgrade Authority 字段 | 为空(代码已冻结),或是带更新延迟的多签地址 | 如果是一个普通地址,意味着其持有者可以随时上传另一套规则。 |
| 4. 代币总发行量 | 代币页面:Supply | 不超过 100,000,000,000,并且只会因销毁而减少 | 更多则说明发行量被增加过。 |
| 5. 代币是否一致 | 钱包中的代币地址与“安全”页面对照 | 地址逐字符完全一致 | 这不是真正的 FAIRDRUM。不要购买,也不要存入。 |
| 6. 金库中的代币是否足够 | “安全”页面上的金库地址、代币余额;“经济模型”页面上各奖池的金额 | 金库余额不少于各奖池金额之和(再加上玩家的游戏余额) | 合约的代币必须始终足额。出现差额是一个严重信号。 |
“安全”页面上方的表格直接从网络读取同样的字段,并标出 ✔ 或 ⚠,但不要只依赖它:请自己核对一次。
验证你自己的旋转
每次旋转都会在网络上留下记录,屏幕上的结果可以与它核对。
找到交易
旋转之后,按钮下方会出现“交易”链接。它会在区块浏览器中打开这条记录。或者,在区块浏览器中打开你钱包的历史,选择与 FAIRDRUM 程序有关的交易。
应该是:状态为 Success,并有一份指令列表。
找到两对调用
第一笔交易中有一次 Switchboard 调用(请求随机数,commit)和一次 FAIRDRUM 程序的
spin_commit调用(投注)。第二笔中:一次 Switchboard 调用(揭示,reveal)和spin_settle(结算)。不同浏览器中的名称写法略有差别(SpinCommit、spinCommit)。比较顺序
投注是在数值揭示之前记录的:第一笔交易的区块编号(Slot)比第二笔小。这说明在投注的那一刻,你和项目方都不知道结果。
查看第二笔交易的日志(Logs)
那里记录着事件
SpinSettled,包含旋转次数、奖金,以及命中迷你头奖、头奖和超级头奖的情况。这些数字与转盘显示的相同。检查随机数的所有者
交易中给出的随机数账户,必须归 Switchboard 程序所有。合约本身会拒绝任何其他账户,但仍值得亲自确认:打开该账户,查看 Owner 字段。
深入检查
构建代码并比较哈希
获取项目在 GitHub 上的仓库(发布后会出现链接),用可复现的模式构建程序(anchor build --verifiable),并把哈希与链上的哈希(solana-verify)进行比较。一致就说明链上放的正是这份开源代码。
阅读常量
游戏的所有数值都集中在一个文件 consts.rs 里:比例、概率、奖金阶梯、手续费、期限。网站正是据此生成自己的表格,所以网站与合约之间不应该有差异。
运行测试
仓库里有针对规则和计算的测试(cargo test),以及针对客户端的测试(npm test)。例如,它们会检查所有奖池和余额之和不超过金库中的代币。
弄清结果是如何选出的
合约通过 SHA-256,从揭示出的 32 字节随机数中得到数值。对主转盘来说,这是若干块 SHA-256("FDRM-M" + 随机数 + 区块编号),每块中每次取 4 个字节(little-endian),为每一次已完成的旋转取一个数。对金色转盘:SHA-256("FDRM-G" + 随机数 + 已完成旋转的编号)。这个数与以 232 的分数表示的阈值比较;阈值本身取决于结算时的每周游戏量和各奖池的大小,所以只有连同该 slot 上的程序状态,才能完整重算一次旧的旋转。公式在 math.rs 和 engine.rs 中。
读取一段时间的日志
任何人都可以从网络导出某一时期内所有 SpinSettled 事件,并自己统计金色出现的频率和奖池的大小。与“概率”对照。旋转次数少时,波动极大:要看到 1% 的概率,需要几千次旋转。
无法验证的内容
- 预言机的诚实性。随机数来自 Switchboard 网络。合约会检查数值来自指定账户、且是在投注之后揭示的,但无法检查预言机节点是否串通。这是一项外部依赖。
- 代码没有错误。测试和开源代码能增加信心,但不能代替独立审计。在没有给出审计链接之前,就是没有审计。
- 未来。在升级权限被撤销之前,规则可能因新版本而改变。请关注程序更新的交易。
- 管理员在合约之外做的事。出售他的代币、营销、上市决定,合约都无法控制。推广基金的支出是公开的,但“用在什么上”,合约不会检查。