公链随机性怎么产生?VRF 与 Beacon RANDAO 原理 图 1
公链随机性怎么产生?VRF 与 Beacon RANDAO 原理 · 图 1

结论先说

公链没有中心服务器,很多功能(选出块者、抽奖、质押分配、协议参数轮换)又需要”没人能提前知道结果”的随机数。解决思路有两条:RANDAO 式集体随机——让参与者各自贡献熵、混合后出结果;VRF 可验证随机函数——用密钥算出一个”看起来随机、且任何人都能验证确实由这个密钥算出”的值。两者常配合使用,也都各有可被利用的边界。

为什么链上随机难

直觉上”让节点抛硬币”就行,但链上环境有三个麻烦:结果必须可验证(否则谁都能谎报),来源必须分散(否则单方操纵),时机必须可预测(协议要按固定节奏取用)。普通随机数生成器不满足可验证性;中心发随机数不满足去中心化;提前暴露的随机源又会被知道的人利用。所以链上随机性本质上是一个”分散熵 + 可验证”的组合问题。

RANDAO:集体随机怎么工作

以太坊信标链的 RANDAO 流程大致是:每个周期(epoch)开始前,每个活跃验证者用自己的密钥对周期标识签名,生成一个贡献值;周期开始时,所有贡献值按预定顺序哈希混合,得到该周期的随机数,用于下一轮验证者委员会的洗牌。它的优点是熵来源是全体验证者,单方难以预测整体;局限同样明显:因为贡献要在出结果前公开(否则无法验证),最后一个出块的验证者理论上能”看到当前混合值、选择对自己有利的贡献”,这种”最后贡献者优势”是有界的(只能影响部分比特),但在高价值场景(大额抽奖)里仍可能被利用。

VRF:可验证随机函数是什么

VRF(Verifiable Random Function)是一类特殊哈希:给定密钥和输入,输出一个伪随机值,同时附带一个短证明,让任何持有公钥的人都能验证”这个值确实由这个私钥对这个输入算出,且没有被挑选”。关键性质是”输入选定后输出不可挑选”:签名者在不知道输出的情况下选定输入(承诺),事后才能算出输出,因此无法从多个候选里挑一个有利值。VRF 适合”单个持有者生成、多方验证”的场景,比如轻客户端验证某节点的随机输出、或预言机报告带随机种子。

两者如何配合

现代 PoS 链通常是混合架构:协议级洗牌用集体随机(RANDAO 式),保证分散性;节点级任务(如被抽中提案时的本地随机选择、attestation 随机域)用 VRF,保证”被抽中的人”无法伪装身份或挑选有利结果。以太坊里验证者对每个槽位用 VRF 证明自己被正确抽中,委员会划分则依赖 RANDAO 输出。理解这个分工,才能看懂”随机数被操纵”的报道到底指哪一层、影响多大。

局限:链上随机永远不”绝对公平”

必须明确:任何依赖链上状态的随机源,最终都被链上状态决定,而链上状态可被有资金的人影响(出块权、贡献时机、甚至重组)。RANDAO 有最后贡献者优势,VRF 防挑选但防不了”持钥者作恶”,外部随机源(如哈希前 N 个区块)又有可预测窗口。因此高价值场景的通行做法是:多源混合、延迟结算(用未来区块做随机源,让操纵者无法在结算前知道结果)、或干脆把随机性外包给专门的去中心化网络。把”链上随机”理解成”操纵成本足够高的随机”,比理解成”绝对公平”更准确。

使用场景对照

选提出块者:用集体随机 + VRF 证明抽中,防身份伪装。链上游戏抽奖:低价值用 RANDAO 输出即可;高价值应延迟结算或多源混合,否则存在可计算的小额优势。质押与验证者轮换:协议级洗牌,安全性来自分散熵加惩罚机制。DApp 自建随机:建议优先用预言机/去中心化随机网络,并在合约里把”随机源被延迟结算”纳入设计,而不是直接用当前区块哈希。

风险提示

随机性缺陷很少”爆雷”,更多是长期的小额优势累积:抽奖池的数学期望偏移、高价值拍卖的狙击空间。评估一条链或一个 DApp 的随机设计时,看三件事:熵来源是否分散、是否存在最后贡献者/出块者优势、结算是否延迟到操纵者无法预知的时点。本文只解释机制,不对任何协议的随机质量做评级。

小结

一句话记忆:RANDAO 把随机性摊给全体参与者,代价是最后贡献者的小额优势;VRF 把随机性锁进”先承诺后揭示”的密码学结构,防挑选不防持钥者。两者混合使用、高价值场景延迟结算,是当前的工程共识;“绝对公平”在链上不存在,存在的是可计算的操纵成本。