ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

链上随机数生成器的陷阱:AMA Protocol VRF Stage 1的已知攻击面

链上随机数生成器的陷阱:AMA Protocol VRF Stage 1的已知攻击面 链上随机数生成器的陷阱AMA Protocol VRF Stage 1的已知攻击面【免费下载链接】node项目地址: https://gitcode.com/GitHub_Trending/node95/node链上随机数生成器是区块链上最容易被忽视的脆弱环节。在 AMA Protocol本项目代码库中的 node 节点即 Amadeus 链中合约里每一次抽奖、每一次 NPC 战斗、每一次盲盒开启背后都依赖链上随机数。而目前实现的VRF Stage 1存在一个已知攻击面恶意验证者可以执行扣留攻击在随机结果对自己不利时悄悄丢弃交易。这篇文章将用最直白的方式拆解 AMA Protocol 的 VRF Stage 1 机制、它的陷阱在哪里以及项目计划中的 VRF Stage 2 如何补上这个漏洞。 为什么链上随机这么难在传统游戏里随机数由服务器生成玩家无法干预。但在区块链上一切都公开、可验证这带来两个核心难题难题说明可预测性链上数据一旦公开任何人在交易执行前就能算出结果可操纵性矿工/验证者可以挑选或重排交易影响随机结果如果随机数来源不可靠那么抽奖、竞猜、开盲盒这类应用就形同虚设——攻击者只需要算得比你快。 AMA Protocol 的答案VRF可验证随机函数AMA Protocol 采用的是VRFVerifiable Random Function可验证随机函数其核心思想是验证者用自己的私钥对某个输入签名签名结果就是随机数同时任何人都可以用公钥验证这个随机数确实是由该验证者生成的。在节点代码中VRF 的签名域DST被明确定义在aggsig.rs中DST_VRF AMADEUS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_VRF_它基于 BLS12-381 椭圆曲线实现具体调用链可以参考bls12_aggsig.ex与区块构建逻辑entry.ex。⚠️ VRF Stage 1 的核心机制与陷阱在当前的VRF Stage 1中随机数的生成规则如下种子 当前验证者对上一个 VRF 结果的签名也就是说每一轮的随机数都直接由当轮出块的单个验证者决定。这一设计在源码注释里写得非常直白见3_nft.ts//Current: VRF Stage 1 is used. //Seed is signature of previous VRF by current validator. //A malicious validator can do a withholding attack //(not include a TX if the RNG is unfavorable)️ 陷阱一扣留攻击Withholding Attack这是VRF Stage 1 最致命的攻击面。场景还原一个 NFT 抽奖合约正在运行玩家提交了抽奖交易。负责打包的验证者提前算出了随机结果——结果对他自己不利比如他中不了奖。此时他有两个选择正常打包随机结果公开大家公平抽奖扣留把这条交易压住不放或者塞进一个注定失败的分叉里等下一轮对自己有利时再打包。由于验证者是先知道随机结果、再决定是否包含交易这种先看牌再下注的权力足以让单点验证者系统性获利。这正是注释中明确指出的攻击面。️ 陷阱二单验证者完全掌控种子VRF Stage 1 的种子只来源于一个验证者的私钥签名没有其他熵源参与混合。这意味着随机性质量完全取决于该验证者是否诚实一旦出块者作恶攻击者对该轮的随机结果有决定性影响防御方没有任何机制可以稀释这种影响。️ 陷阱三合约层的滥用放大风险节点在 WASM 合约执行时会为每次调用派生随机种子。相关逻辑位于consensus_apply.rs种子由四部分混合而成entry_vr区块级 VRF tx_hash tx_index call_counter其中entry_vr正是 VRF Stage 1 的产物。换句话说链上随机数生成器的所有下游应用——包括示例合约里的骰子玩法——都共享同一个弱点。比如3_nft.ts的roll_dice()和 RPG 合约5_rpg/main.ts中的怪物遭遇判定一旦底层 VRF 被操纵整个游戏平衡都会被打破。️ 这些攻击实际影响哪些场景链上随机数生成器被广泛用于以下场景而 VRF Stage 1 的漏洞会逐一波及NFT 盲盒与空投抽奖验证者可以精准抽中自己⚔️链上游戏RPG、卡牌战斗判定可被预测与操控竞猜与预测市场结果偏向打包者DeFi 抽奖池资金分配可被定向操纵。 VRF Stage 2如何修复——BLS 门限签名 DKG好消息是项目方已经规划了升级路径。源码注释中写明了下一阶段的方案Coming Soon: VRF Stage 2 will be only attackable if 67% are malicious as it will use BLS Threshold /w DKG翻译过来就是VRF Stage 2 将采用 BLS 门限签名Threshold Signature DKG分布式密钥生成届时随机数将由多个验证者共同参与生成攻击者只有在超过 67% 的验证者集体作恶时才能攻破。相比 Stage 1 的单点即危险这是一个质的飞跃维度VRF Stage 1现状VRF Stage 2规划随机数来源单个验证者签名多验证者门限签名攻击门槛1 个恶意验证者67% 验证者共谋扣留攻击可行且低成本基本失效信任模型单点信任分布式信任 给合约开发者的实用建议在 VRF Stage 2 落地之前如果你正在 AMA Protocol 上开发依赖链上随机数的应用建议不要直接信任单块 VRF关键抽奖可引入提交—揭示Commit-Reveal模式让用户先提交哈希、后揭示随机值延迟结算把结果判定推迟到随机源确定之后的区块避免被看牌再下注混合外部熵在条件允许时将链上 VRF 与用户提交的随机值混合增加操纵成本关注协议升级留意 VRF Stage 2 的发布节奏上线后及时迁移。 总结链上随机数生成器是整个区块链应用安全链上最容易被忽略的一环。AMA Protocol 的VRF Stage 1用上一个 VRF 的签名作为种子设计简洁、易于验证但单验证者掌控随机结果的架构决定了它天然存在扣留攻击这一已知攻击面。项目方已明确规划了基于 BLS 门限签名与 DKG 的 VRF Stage 2把攻击门槛从 1 个恶意节点提升到 67% 共谋——这正是链上随机性从可用走向可信的关键一步。对于开发者而言理解这些陷阱、在合约层做好防御才能让你的抽奖、游戏与竞猜应用真正经得起考验。【免费下载链接】node项目地址: https://gitcode.com/GitHub_Trending/node95/node创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表