作者:Aolotto
来源:内容公会 - 新闻
原文首发于:@aolotto_dao
原文链接:
本着对公平性与安全性的更高追求,Aolotto 协议对开奖算法进行了全新升级,调整了开奖机制,让用户能够在更加公正的机制下参与彩票投注。
Aolotto 协议每轮抽奖的结果,都是通过多个随机数基于 HMAC 算法生成的,其中包括区块哈希(BlockHash)。此次新算法的核心变化是,区块哈希的采纳时机比之前延迟了 5 个区块。
每轮结束后,系统会立即切换到下一轮并归档上一轮的投注记录,但开奖时间会推迟。协议会等待 5 个区块高度后,基于归档的投注信息再进行开奖,生成最终幸运号码。
开奖过程中,最重要的环节是生成随机数。随机数一旦生成,基于 HMAC 算法的结果是固定的,任何人都可以通过链上的公开信息进行验证。
Aolotto 协议原算法直接使用当前区块哈希作为随机数之一,理论上矿工可以通过调整区块数据来影响哈希值。如果开奖立即使用当前区块哈希,矿工可能会尝试操控它。但实际上这种操控需要较大的计算资源与时间成本,最终无利可图。
尽管原算法已经足够安全,但 Aolotto 追求更极致的公平性和防作弊能力。因此,通过延迟 5 个区块的方式,矿工无法控制未来区块的生成,从而进一步减少操控开奖结果的可能性,确保整个过程更加透明和可信。
1.轮次结束与归档:轮次结束后,所有投注记录和状态被存档在 Arweave 区块链,并生成唯一的 ArchiveId 作为第一个开奖种子因子。
2.归档成功确认:归档确认后,协议会生成 ArchivedId,作为第二个开奖种子因子。
3.等待区块高度满足条件:奖池进程每分钟检查最新区块高度,确保最新区块高度与归档区块高度 ≥ 5。满足条件后,获取最新区块的 BlockHash,作为第三个开奖种子因子。
4.提取额外因子:从归档信息中提取 LastBetId(最后投注交易 ID)和 TimeStamp(开奖时间戳)作为第四和第五个开奖种子因子。
5.组合种子:将 5 个因子组合成种子,并按照以下顺序组成种子字符串 BlockHash_ArchiveId_ArchivedId_LastBetId_TimeStamp。
6.生成幸运号码:协议根据种子字符串生成 3 位幸运号码(0-9 之间的随机数),分别对应 seed+1、seed+2 和 seed+3。
7.确定中奖者并公布:根据幸运号码,从归档信息中确定中奖者,并公布开奖结果。
在区块链领域,生成随机数面临不可预测性与可验证性之间的挑战。非确定性算法使计算过程变成黑箱,而确定性算法则容易被预测。对于以太坊等主流公链,通常依赖第三方预言机确保随机数的公平性。
对于 AO 而言,这并非问题。AO 支持定时消息(Cron Messages),允许智能合约定时执行功能。通过这一机制,Aolotto 协议能将开奖过程推迟至未来,从而有效避免结果被提前预测,实现了公平的随机数生成。
🏆 “捉虫”有奖:在本文发现错字、病句、描述有误,点我报告,可得激励。
免责声明:本文不代表 PermaDAO 的观点或立场。PermaDAO 不提供投资建议,亦不为任何项目背书。请读者遵守所在国法律,合规进行 Web3 活动。
🔗 关于 PermaDAO:Website | Twitter | Telegram | Discord | Medium | Youtube
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。