验证

自己查,别信我们的话

本站的每一个宇宙都是区块哈希的纯函数。这个函数开源,任何人都能跑一遍,把结果与 BNB Chain 上存的东西比一比。两条命令,不需要账号,不经过服务器。

复算任意宇宙

git clone https://github.com/q3579338/bnbbang-engine
cd bnbbang-engine
node tools/recompute.js 0x0d21840abff46b96c84b2ac9e10e4f5cdaeb5693cb665db62a2f3b02d2d57b5b

recompute.js 仅凭哈希就重建 23 个参数、结局、等级和 cardHash。推导是纯整数运算,所以结果在每个平台上都完全一致。零依赖,Node 18 或更高。

与链上比对

node tools/verify-onchain.js 1

verify-onchain.js 从 BSC 主网的 MirrorUniverse 合约读出 #1 号 token,用随它存储的区块哈希重新计算宇宙,然后逐字节比对参数、结局、等级和 cardHash。被拯救过的宇宙(烧 BANG 推过常数)由区块哈希加上写进交易里的操作日志复算,不需要服务端的存档。

仓库附带 292 项引擎自检和 118 项链上比对测试。node engine/test.js 在本地跑第一组。

签名证明了什么,没证明什么

铸造需要服务端签名:合约只开放 bangSigned()。服务端重新计算参数并盖章,这样没有人能铸一个伪造的宇宙学。签名者地址可通过 signer() 在链上读到,也列在下方;任何人都能核对某个 NFT 的签名恢复出的正是这个地址。协议连同可运行的验证器和真实测试向量,在 docs/signing-protocol.md。

签名不能让服务端凭空发明宇宙:被签名的参数必须等于 recompute.js 从哈希算出的结果,而这正是 verify-onchain.js 检查的东西。

BSC 主网上的合约

chainId 56,部署于 2026-08-22。没有代理,没有升级路径,没有 selfdestruct,没有 delegatecall,没有暂停。

实时检查:/api/health 报告服务端正在使用的链 id 与签名者;它们必须与合约一致。/api/market/status 显示市场索引落后链多少。

跑在真实字节码上的测试

所有合约测试都在本地 EVM 上执行编译后的字节码,来自 bnbbang-economy:

测试集检查项测试集检查项
economytest196craftedtest110
markettest127vestingtest41
nametest125promotest49
names2test156crosscheck110

三件仍需信任的事