开奖结果卡片
在“已开奖”状态下显示“已验证通过”,旁边放“查看验证”入口。
链上 VRF 先给出随机数,系统只按公开公式计算中奖票位。你不需要相信平台口头说明,按下面两步就能核对。
用户最需要验证的时候,是刚看到开奖结果、回看记录、或从公告进入时。
在“已开奖”状态下显示“已验证通过”,旁边放“查看验证”入口。
中奖和未中奖记录都保留“链上验证”,避免用户只看到一个交易 hash。
每期详情页展示中奖号、中奖用户脱敏信息、公式复算结果和回调交易。
通知里给“查看开奖结果”和“验证开奖”两个按钮,深链直接打开本页。
先复算公式,再去区块浏览器核对事件。看不懂高级字段也能完成判断。
用 randomWord % drawTotal + 1,结果必须等于 winningIndex。
打开 callbackTxHash,在 Logs / Events 中找平台合约发出的 DrawFulfilled。
这里展示的是用户最应该先看的结论:公式是否对得上。
发给别人也能独立复核,不需要登录平台。
VRF 回调给出的随机数,平台不能提前知道。
售罄时锁定的总票位,中奖位置只会落在 1 到 drawTotal。
公式算出的第几个票位中奖,之后再映射到真实票号。
在区块浏览器里用它找到 DrawFulfilled 事件。
重点看 callbackTxHash,不要停在 requestTxHash。
同一笔回调交易里可能同时出现 Chainlink 事件和平台开奖事件。
这是 Chainlink VRF Coordinator 的事件,说明随机数服务完成回调和扣费,但它不是最终开奖证明。
这是平台 DrawCoordinator 发出的开奖完成事件,里面才有 randomWord、winningIndex、drawTotal、ticketRoot。
系统生成 ticketRoot,对应售罄时的票号快照。
开奖合约发起 requestTxHash,等待随机数回调。
callbackTxHash 中记录平台合约发出的 DrawFulfilled。
winningIndex = randomWord % drawTotal + 1,再映射到票号 1。
这三件事同时成立,就可以说明本期开奖位置不是平台手填。
randomWord % drawTotal + 1 的结果等于 winningIndex。
DrawFulfilled 里的 randomWord、winningIndex、drawTotal、ticketRoot 和页面一致。
DrawFulfilled 的发出地址等于本页的 drawCoordinator。
普通用户看完本页就够了。工程、风控、审计可以继续看完整说明页。