VRF(Verifiable Random Function), 为可验证的随机函数,主要用于生成链上随机数(Chainlink)和用于共识机制(Algorand, Polkdot)中。
ECVRF
目前主要采用基于椭圆曲线的VRF算法,描述如下:
初始设置
选择椭圆曲线 , 有限域
,
上的基点
, 素数
, 余因子点椭圆曲线点的个数除以
。 VRF 的私钥为
, 公钥为:
随机数生成
对于消息 , 生成随机数的过程如下:
- 计算
;
- 计算
;
- 选择随机数
;
- 计算
;
- 计算
- 得到
- 输出
最终 为生成的随机数,
为生成的证明。
随机数的验证
- 首先得到
;
- 计算
;
- 计算
;
- 计算
;
- 得到
;
- 验证
参考
https://eprint.iacr.org/2017/099.pdf
https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-vrf-05#section-5.3
https://www.secg.org/sec2-v2.pdf
https://medium.com/witnet/cryptographic-sortition-in-blockchains-the-importance-of-vrfs-ad5c20a4e018
https://hackernoon.com/generating-randomness-in-blockchain-verifiable-random-function-ft1534ud
网友评论