Tapeout·芯火夺宝

ONCHAIN · EXPLAINED

中奖号码是怎么算出来的

先停止购买,再验证公开的随机数,由巨兽 2075 电路参与计算开奖结果。下面说清楚每一步怎么做,以及你可以去哪里查。

5 / 10 / 50 BEM 场 · BNB 主网 · Chain ID 56 · 阅读与查询无需连接钱包

01 / PROCESS

从买号码到领奖,一共这几步

  1. 购买号码

    每期有 10,000 个号码,从 00001 到 10000。购买成功后,哪些号码属于你的钱包,会记录在链上。每笔最多买 5,000 份,同一钱包当期多次购买也合计最多 5,000 份。

  2. 停止购买,准备开奖

    全部卖完,立即停止购买。卖出 9,500 份后,会开始最多 30 分钟的倒计时。本期从第一笔购买起,最多售卖 24 小时;临近截止才卖到 9,500 份时,可能需要退款,具体见下方说明。

  3. 等待随机数公布

    停止购买时,合约就定好使用 drand 哪一期的随机数,它至少要再过 60 秒才会公布。后台把随机数证明提交到链上,由合约检查来源和期号是否正确。

  4. 巨兽 2075 电路计算

    合约用验证后的随机数和本期资料生成输入,交给巨兽 2075 电路计算,再用计算结果得出号码。合约会检查电路和计算是否符合规则,拿到同样的数据就能复算。

  5. 确认中奖号码

    合约按固定顺序检查算出的结果。超出范围的数值、还没卖出的号码,都会跳过。第一个符合规则且已卖出的号码中奖,提交交易的人不能另挑一个。

  6. 中奖后领取奖金

    中奖钱包和奖金金额会记录在链上。中奖后连接对应钱包,在 24 小时内领取,奖金只会转给中奖钱包。合约同时按规则将相应份额转入收款容器和销毁地址。

开奖交易由后台自动提交,不需要玩家点击开奖。完成时间还要看后台和区块链的处理情况。页面上的卷轴动画,展示的是链上已经确定的结果。

02 / RANDOMNESS & CIRCUIT

随机数从哪里来,电路怎么算

随机数来自 drand evmnet

drand evmnet 每 3 秒公布一组随机数。合约会在所用随机数公布前,先记下要用哪一期。后台负责把这一期的证明提交到链上。

合约按照事先固定的网络和公钥检查证明。证明被改过,或者拿了其他期的证明,都不能通过。任何人都可以在 drand 查询同一份公开数据。

drand 官方网络文档 ↗

巨兽 2075 电路负责计算

巨兽 2075 电路按固定规则计算,同样的输入一定得到同样的输出。随机性来自 drand,电路负责计算根据它生成的输入。

计算时还会带上场次、期号、已售份数等本期资料。下方列出了完整的电路合约地址和网表哈希,可以核对实际用的是哪份电路。

展开技术细节:怎么验随机数、怎么计算、每份中奖概率是多少

共用验证合约检查固定 evmnet 轮次的 64 字节 BLS 签名,再用 SHA-256(signature) 得到随机数。验证器内固定了网络哈希和公钥。

合约将随机数、链 ID、场次地址、链上期号、实售份数和信标信息,按不同用途标签做 Keccak-256 哈希,生成两组输入。计算时会检查电路网表哈希及规定的输入输出关系。

两组 12 位输入进入电路,合约要求 output = (input & 255) + (input >> 8)。两个输出的低 8 位组成 16 位候选值。仅接受小于 60,000 的候选,再用 candidate % 10,000 得到内部号码 0~9999;展示号码为内部号码 + 1。

output0 = circuit2075(input0)
output1 = circuit2075(input1)
candidate = ((output0 & 255) << 8) | (output1 & 255)
accept: candidate < 60000 AND ticketOwner(roundId, candidate % 10000) != 0
displayNumber = (candidate % 10000) + 1

在 4,096 个输入中,每个低字节输出有 16 个原像;被接受的 60,000 个候选值,对每个号码各映射 6 次。在随机数和哈希假设成立时,跳过未售号码后,每份概率为 1/S。持有 K 份的钱包概率为 K/S:例如 9,500 份中持有 5,000 份,约为 52.63%,并非 50%。

每笔结算交易最多检查 4 个候选,后续调用从已保存的位置继续,采用首个有效已售号码。网页随机选号仅影响购买时挑选的号码,不是开奖随机数来源。

03 / FUNDS & DEADLINES

奖金怎么算,最晚什么时候领

按本期实际收到的 BEM 分配:1% 转入 13061 容器,按场次扣除下表中的销毁份额,剩下的就是奖金。金额的小数处理按合约规则计算。

场次容器销毁奖金
5 BEM1%3%96%
10 BEM1%4%95%
50 BEM1%5%94%

04 / LOOK UP & VERIFY

不连接钱包,也能查询开奖结果

先选场次,再填写网站显示的完整期号,或合约里的内部期号。网站期号前面是 UTC 日期,后面是所有场次累计的序号;合约内部期号则是每个场次各自计数,查询时要选对场次。

选择场次,填写要查的期号。

网站会在交易确认后更新记录,显示可能稍有延迟。如果没查到或读取失败,还可以通过下方合约和交易链接直接查链上记录。

独立核验的四个步骤

  1. 核对场次身份。在 BscScan 打开下方合约,核对 BNB 主网、创建交易、已部署字节码及其 Keccak-256 哈希。交易哈希、区块哈希、源码文件 SHA-256 与运行代码哈希是不同标识。
  2. 核对号码归属与固定信标。查看 TicketsAllocated、RoundLocked 和 BeaconFixed 日志。配合 ABI,读取 rounds(roundId)、beaconRound(roundId)、sealedAt(roundId) 和 ticketOwner(roundId, internalTicket)。传入链上内部期号,不是网站展示期号。
  3. 核对签名与计算。读取 BeaconVerified、beaconRandomness(roundId) 和 randomnessProof(roundId)。与同轮 drand 信标对照,核对 SHA-256(signature),并只读调用验证器 verifyBeacon(beaconRound, signature)。复算上下文哈希,再依次核对 previewAttempt(ticketWord, circuitWord, cursor)。
  4. 核对结算与资金去向。在成功结算回执中核对 Settled、PrizeAvailable 和 BEM Transfer 日志,检查首个有效已售号码、中奖钱包及金额。“可领取”不代表“已领取”,还需核对 PrizeClaimed 和给中奖钱包的代币转账。

如果 BscScan 没有已验证源码的 Read Contract 标签,不代表开奖失败。可下载下方编译输入,按其中参数编译取得 ABI,通过 BNB RPC 的 eth_call 读取。浏览器存在 Code 标签本身不等于源码已验证。

05 / PUBLIC REGISTER

现役合约与完整哈希

5、10、50 BEM 三个场次各有自己的合约,共用一份随机数验证合约。下方列出完整地址、部署交易和哈希,点击链接即可在 BscScan 查看对应的 BNB 主网记录。

部署资料快照:BNB 区块 120476370。运行代码哈希指 eth_getCode 返回字节码的 Keccak-256,不是未填入构造参数的代码模板。区块哈希标识部署区块;drand 网络哈希标识信标网络,不是交易。

巨兽 2075 电路与公共依赖

巨兽 2075 电路所在合约
0x1F5Cb4aeaE1807Bf60c3b9C0D8aDBCC14e91f12C
电路编号
2075
电路网表哈希 · Keccak-256
0xa375924f2a31f5169606ea20e357efa2aeeb2355aff859f28f40a15519714eef
BEM 代币 · 8 位小数
0x5ce033B2bFCa3Af30b3e8C8457DeaF776A8b695a
13061 收款容器
0x001f110422F04a90bF7D6eC96714f75046BD7126
销毁地址
0x000000000000000000000000000000000000dEaD
drand evmnet 网络哈希
04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3
drand 网络参数与公钥
查看原始 JSON
Solidity 编译器与参数
0.8.36+commit.8a079791.Emscripten.clangoptimizer: true / runs: 200 / viaIR: true / EVM: shanghai
完整 Solidity 编译输入 · SHA-256
0f313d96b6aae700fa1c4097feeed7bbf69ad5a9add620fc86fdc556711ebeb8下载源码与编译参数
部署证据文件 · SHA-256
36394b79353ce2e9942f8798a8f58ef463c4c7abb945fccf53132b6daef2e923下载正式场部署资料

06 / RULES & LIMITATIONS

购买前,还要知道这些情况

查看 drand 安全假设 ↗