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个函数的主要内容,如果未能解决你的问题,请参考以下文章