- 在区块链系统中,共识算法很重要的一个职责,就是确定哪个节点拥有记账权。
- 在基于 POW 共识的区块链系统中,矿工通过不断的尝试来计算得出一个随机数,若能使得这个随机数小于指定的难度值便可获得记账权。
- 有没有可能在没有挖矿的前提下,生成一个全网可验证的随机数呢?VRF 就是干这个事儿的。
- VRF 全称可验证的随机函数,可以说是哈希函数与非对称加密结合的产物。
- 通过哈希函数,我们可以生成一段信息的数字指纹,防止信息被攥改。但如果还要对信息来源进行验证,我们需要信息验证码 MAC。也就是在进行哈希计算时除了本来的信息,在加上一个密码,但要在通信双方共享这个密码,才能对消息进行验证。
- VRF 比 MAC 厉害的地方在于,通过与非对称加密结合,通信双方可以不知道对方私钥的情况下,也可以对消息完整性和消息来源进行验证。
- 具体流程是下面这样的:
1、证明者生成一对密钥,PK、SK;// 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表示验证未通过。
网友评论