VRF可验证随机函数4个函数

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VRF可验证随机函数4个函数相关的知识,希望对你有一定的参考价值。

1.4个函数

1.1 生成密钥函数VRFgen:生成一个公钥私钥对(VRFSK、VRFPK)

VRFSK: secret key
VRFPK: public key

1.2. 生成随机数输出VRFval

伪随机值val = VRFval (VRFSK, x)
input :x

1.3. 计算零知识证明VRFprove

varProof, proof = VRFprove(VRFSK, x)
验证 val和varProof相等

1.4. 验证随机数输出 VRFver

VRFver(VRFPK, x, val,proof)
eg. fn vrf_verify(PublicKey, Transcript, val, proof) -> bool;


2. 伪代码

func TestHonestComplete(t *testing.T)   
        // 证明者
    pk, sk, err := GenerateKey(nil)    // step 1, 生成密钥对
    if err != nil 
        t.Fatal(err)
    
    alice := []byte("alice")     // Info
    aliceVRF := Compute(alice, sk)   // step 2, 计算result
    aliceVRFFromProof, aliceProof := Prove(alice, sk)  
                                    // step 3, 计算proof,这儿是aliceVRFFromProof

    fmt.Printf("pk:           %X\\n", pk)
    fmt.Printf("sk:           %X\\n", *sk)
    fmt.Printf("alice(bytes): %X\\n", alice)
    fmt.Printf("aliceVRF:     %X\\n", aliceVRF)
    fmt.Printf("aliceProof:   %X\\n", aliceProof)
        // 接收者
    if !bytes.Equal(aliceVRF, aliceVRFFromProof)      // step 5,验证result 和proof
        t.Errorf("Compute != Prove")
    
    if !Verify(pk, alice, aliceVRF, aliceProof)              // step 7, 加入PK和Info验证
        t.Errorf("Gen -> Compute -> Prove -> Verify -> FALSE")
    

以上是关于VRF可验证随机函数4个函数的主要内容,如果未能解决你的问题,请参考以下文章

可验证随机函数 VRF

可验证随机函数 VRF

区块链知识之 VRF: 可验证随机函数

区块链知识之 VRF: 可验证随机函数

区块链知识之 VRF: 可验证随机函数

可验证随机函数(Verifiable Random Function, VRF)