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
网友评论