本文目录导读:

在币圈资讯和区块链技术讨论中,可验证随机函数通常指 Verifiable Random Function,简称 VRF,它的核心目标是:让某个参与者在不泄露私钥的前提下,基于自己的私钥和一个公开输入生成一个随机输出,并给出密码学证明,使任何人都能验证这个输出确实由该私钥和该输入唯一决定,但无法提前预测或伪造结果。
下面从技术原理角度说明。
VRF 的基本构成
一个 VRF 通常包含四个算法:
-
密钥生成
- 生成私钥
sk和公钥pk。
- 生成私钥
-
求值
- 输入私钥
sk和消息/种子x,输出:- 随机值
y = VRF_sk(x) - 证明
π = Prove_sk(x)
- 随机值
- 输入私钥
-
验证
- 任何人用公钥
pk、输入x、输出y和证明π验证:Verify(pk, x, y, π) = true/false
- 验证通过说明
y确实是该私钥对x的 VRF 输出。
- 任何人用公钥
-
唯一性/伪随机性
- 对同一
sk和x,输出y是唯一的; - 在不知道
sk的情况下,y看起来随机,不可预测。
- 对同一
技术原理:它为什么“可验证”又“随机”
VRF 一般基于公钥密码学构造,常见路线包括:
- 基于 RSA 的 VRF;
- 基于椭圆曲线的 VRF;
- 基于双线性对的 VRF;
- 基于哈希到曲线和零知识证明的 VRF。
以常见的椭圆曲线 VRF为例,直观流程是:
第一步:密钥生成
- 私钥
sk是一个随机数; - 公钥
pk = sk * G,G是椭圆曲线基点。
第二步:求值
给定输入 x:
- 将
x哈希到椭圆曲线上的一个点H = HashToCurve(x); - 计算
Gamma = sk * H; - 对
Gamma再做哈希,得到最终随机输出y = Hash(Gamma); - 生成证明
π,证明“我知道sk,使得pk = sk * G且Gamma = sk * H”,但不泄露sk。
这个证明通常是一个零知识证明或 Schnorr 类证明。
第三步:验证
验证者拿到 pk, x, y, π 后:
- 重新计算
H = HashToCurve(x); - 用证明
π验证Gamma与pk、H的关系成立; - 检查
y = Hash(Gamma)是否匹配。
如果通过,就证明:
- 输出
y确实是由持有sk的一方生成的; - 同一
x下结果唯一; - 验证者无法从
π反推sk。
关键性质
VRF 在币圈被重視,主要因为这几个性质:
① 可验证性
任何人都能验证输出是否正确,不需要信任生成者。
② 伪随机性
在不知道私钥时,输出不可预测;对输入 x 的微小变化,输出也会不可预测地变化。
③ 唯一性
同一个私钥和同一个输入,只能得到同一个输出,这防止节点对不同人给出不同随机结果。
④ 不可伪造性
没有私钥的人无法伪造一个能通过验证的 (y, π)。
⑤ 私钥不泄露
生成证明的过程不暴露私钥。
在区块链中的典型用途
VRF 在币圈最常见的作用是可验证的随机数生成,
- PoS 链的验证者选举:如 Algorand、Cardano 等使用 VRF 类机制选择出块者或委员会成员;
- NFT 随机分配:如盲盒开奖、稀有属性分配;
- 链上抽奖、游戏随机性;
- 防女巫和公平排序:让随机选择过程可验证、不可操纵。
典型模式是:
- 链上提供种子
x; - 节点用私钥计算
y, π; - 链上合约验证
π; - 用
y作为随机结果。
需要注意的边界
VRF 解决的是“这个随机数是否由某个密钥对某个输入正确生成”,但它不自动解决所有随机性问题:
- 如果输入种子可被操纵,结果仍可能被影响;
- 如果私钥持有者拒绝发布结果,需要协议层处理;
- VRF 输出是伪随机,不是真随机;
- 不同 VRF 构造的安全假设不同,需看具体实现。
VRF 的技术原理是:基于公钥密码学,让私钥持有者对公开输入计算一个唯一且伪随机的输出,并附上零知识证明;任何人可用公钥验证该输出正确且未被伪造,但无法提前预测或反推私钥。 在币圈,它主要用于可验证、防操纵的链上随机数和验证者选举。