VRF函数

作者: 雪落无留痕 | 来源:发表于2021-04-22 22:34 被阅读0次

    VRF(Verifiable Random Function), 为可验证的随机函数,主要用于生成链上随机数(Chainlink)和用于共识机制(Algorand, Polkdot)中。

    ECVRF

    目前主要采用基于椭圆曲线的VRF算法,描述如下:

    初始设置

    选择椭圆曲线 E, 有限域F, E 上的基点 G, 素数 q, 余因子点椭圆曲线点的个数除以 q。 VRF 的私钥为 k, 0< k< q, 公钥为:Q=k\cdot G

    随机数生成

    对于消息 m, 生成随机数的过程如下:

    1. 计算 H=ECVRF\_hash\_to\_curve(Q,m);
    2. 计算 \beta = k * H;
    3. 选择随机数 t\in [0, q-1];
    4. 计算 c = ECVRF\_hash\_points(G,H,Q,\beta, t\cdot G, t\cdot H);
    5. 计算 s=t-c*k\ mod\ q
    6. 得到 \pi = c||s
    7. 输出 \beta || \pi

    最终 \beta 为生成的随机数,\pi 为生成的证明。

    随机数的验证

    1. 首先得到 D=(\beta, c,s);
    2. 计算 u=c\cdot Q+s\cdot G;
    3. 计算 H=ECVRF\_hash\_to\_curve(Q,m);
    4. 计算 v=c\cdot \beta + s\cdot H;
    5. 得到 c' = ECVRF\_hash\_points(G,H,Q,\beta, u, v);
    6. 验证 c= c'

    参考

    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

    https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Pseudo%20Randomness/Verifiable_Random_Functions.pdf

    相关文章

      网友评论

          本文标题:VRF函数

          本文链接:https://www.haomeiwen.com/subject/kghqrltx.html