Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

VRF(可验证随机函数)

可验证随机函数(Verifiable Random Function)由密钥持有者本地计算:给定输入 \(x\) 输出伪随机值 \(y\) 与证明 \(\pi\),任何人可用公钥验证 \(y\) 确实由 \((sk, x)\) 决定生成。共识用它做无偏随机抽签:提议者或委员会由随机数选中,且结果在揭示前不可预知。

性质

  • 确定性 / 唯一性:对固定的 \((sk, x)\) 只有唯一输出,无法对同一输入给出两个都通过验证的 \(y\)。
  • 伪随机性:没有私钥的人无法把 \(y\) 与均匀随机数区分开(即使知道 \(x\) 与所有历史输出)。
  • 可验证性:\(\pi\) 证明 \(y = \mathrm{VRF}_{sk}(x)\),第三方验算不需要信任持有者。

与普通哈希的差别:对公开输入做 \(H(x)\) 谁都能算、可随意 grind;VRF 的输出绑定私钥,别人算不出、持有者改不了。

构造

  • EC-VRF(RFC 9381):私钥标量乘基点得到哈希点,输出该点坐标的哈希,证明含该点及其标量乘法证据。
  • BLS VRF:把输入哈希到 \(G_1\) 后乘私钥,输出即签名本身,用配对验证,见 BLS。
  • RSA-VRF:基于 RSA 求模幂,历史上用于 Ouroboros(Cardano)。

验算成本在椭圆曲线或配对侧,远高于裸哈希,但结论是“无偏 + 可证明“,这是抽签的信任前提。

抽签

按权重抽签:验证者 \(i\) 计算 \(v = \mathrm{VRF}_{sk_i}(\text{round})\),若

\[ \frac{v}{2^{256}} < p_i \]

则本轮中签,\(p_i\) 与其质押权重成正比。中签者自证并广播证明;未中签者无需透露结果——这是与“全体轮询“的关键差异,见 Algorand。子单位法把质押细分为最小单元再逐个抽签,可做到精确加权而不泄露细节。

随机 beacon

多个成员的 VRF 输出混合(XOR / 级联)成公开随机源,用于提议者日程、委员会分片。与链上 RANDAO 的对照:

RANDAO(以太坊)VRF / 门限 beacon
随机来源提议者自愿揭示的随机值密钥持有者本地计算
偏置面最后一个揭示者可微调需控制阈值比例的密钥才能偏置
信任前提无密钥假设,但依赖参与者诚实揭示依赖 DKG / 密钥分片
用途验证者选择Algorand 抽签、drand、Dfinity

以太坊用 RANDAO + 延迟揭示降低操纵面;Algorand 直接把 VRF 用于每轮抽签,见 PoS 通论 的抽签一节。