VRF-可验证随机函数
VRF(Verifiable Random Function):可验证随机函数用于区块链中的意义很好理解——用以完成出块节点的随机选择。
VRF算法作为一种基于密码学的新型共识模型,最大的优势是快速共识、抗攻击能力、极低算力需求,已有的解决方案有Algorand算法和Dfinity中基于BLS的算法等。
VRF的简单理解是非常容易的,首先讲一个简单的哈希函数,比如结合了secret的哈希函数:
result = SHA256(secret,info)
上面的函数,要想得到结果result,需要secret和info,要验证result,也需要secret和info,也就是说需要知道secret才能验证info和result是否对应匹配。
有没有可能在不出示secret的情况下,验证result和info是否对应匹配。这就是可验证随机函数VRF可以做到的。
result = VRF_HASH(SK,info)
其中SK表示secret key,是私钥,不对外公开的,自己秘密保存即可。与SK配对的PK表示public key,是公钥,需要公开给验证着的。有了上面这些基本的元素,具体的VRF操作流程就非常简单清晰了:
- 1.证明者生成一对秘钥,PK和SK;
- 2.证明者计算result = VRF_HASH(SK,info);
- 3.证明者计算proof = VRF_Proof(SK,info);
- 4.证明者把result和proof递交给验证者;
- 5.验证者计算result = VRF_P2H(proof)是否成立,若成立,继续,否则中止;
- 6.证明者把PK,info递交给验证者;
- 7.验证者计算True/False = VRF_Verify(PK,info,proof),True表示验证通过,False表示验证未通过。
验证通过,指proof是否是通过info生成的,通过proof是否可以计算出result,从而推导出info和result是对应匹配的。从上面可以看出,验证者并没有获得证明者的私钥SK,验证者同样可以推导出info和result是否对应匹配,这就是VRF的妙用。
对哈希函数的不断演化,可以简单用如下的路径来表示:
原始的哈希函数: info -> result
带秘钥的哈希函数: info,secret -> result
公钥版本的VRF: info,SK -> proof,PK -> result
网友评论