作者:Shor,Annchain核心开发成员,中科大毕业。负责annchain高性能p2p网络、通信与编码、基于DAG的高效交易同步、交易执行逻辑、wasm虚拟机智能合约平台、rpc等模块的研发以及系统优化。
(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。)
VFR 简介
可验证随机函数(Verifiable Random Function) 简称VRF ,由Micali,Rabin 和Vadhan提出。 VRF为伪随机函数,给定一个输入X,以及一个私钥Sk, 可以算出一个随机输出Y=F(Sk,X) 以及证明P。任何人使用该私钥对应的公钥Pk, 以及输入X, 证明P, 可以验证随机输出y确实通过私钥Sk和输入X计算出来的, 而且无法推导出私钥Sk。
VRF算法
VRF算法由秘钥生成函数Key_Gen、VRF计算函数VRF_HASH、VRF证明函数VRF_Proof与VRF验证函数VRF_Verify等密码学函数组成。VRF是公钥版本的密码学哈希函数。
秘钥生成函数:Sk,Pk = Key_Gen(r), 对任意的随机输入、产生VRF私钥Sk、和私钥Sk对应的公钥Pk。 在基于RSA的VRF中、生成一对RSA公私钥对、在基于椭圆曲线密码学的VRF(ECVRF)中生成一对椭圆曲线公私钥对。
VRF计算函数:Y = VRF_Hash(Sk,X) , 对输入消息X, 使用VRF 私钥Sk计算VRF哈希输出Y。由于理想的哈希函数值域是离散的,给定不同的输入、哈希函数的输出随机分布在值域区间内,VRF计算过程中使用哈希方法,计算出来的值是随机的。
VRF证明的计算:P = VRF_Prove(Sk, X),对输入消息X,以及私钥Sk, 计算VRF证明。
由vrf证明推导出vrf输出:Y = VRF_Proof_To_Hash(P) 由VRF证明直接算出VRF输出Y。
证明者计算完成之后、需要将输入数据X、VRF输出Y、VRF公钥Pk、VRF证明P发送给验证者。
VRF验证:True/False = VRF_Verify(Pk,X,Y,P),验证者输入验证的VRF公钥Pk, 消息X,以及VRF输出的随机值Y和证明P进行验证。输出为False/True。 如果证明P是根据X产生的、且由P可以推导出Y,则验证通过输出为True, 否则验证失败、输出为FALSE。
目前VRF的开源实现主要有基于RAS的VRF RSA_VRF与基于椭圆曲线密码学的VRF ECVRF等两种。
VRF 特性
VRF具有唯一性、抗碰撞性、与随机性等特性。
唯一性:对相同私钥Sk与相同的输入X,输出Y是唯一的,具有不可抵赖性。
随机性: 输出Y是随机的,对于不知道证明P的旁观者来说是不可预测的、随机的。
抗碰撞性:私钥Sk由证明方秘密保存,VRF可以理解为带公钥版本的哈希函数,基于哈希函数的抗碰撞性、无法根据输入X与输出Y推导出私钥Sk。
VRF在在区块链中的应用
VRF在区块链中用于加密抽签和选举出块节点。
在区块链中,大部分共识算法需要选择一个或者多个节点参与共识打包区块。在POW中拼算力,谁算力强谁大概率有记账权,在POS、DPOS中根据持币情况等因素选择出块节点。传统的POW、POS、DPOS、BFT等共识算法不能保证出块节点的完全随机性。
引入了VRF之后,可以公平、随机选择出一个或者多个点作为共识节点参与共识。一般通过VRF选择共识节点过程如下:
区块链网络中每个节点使用自己的私钥Sk、将网络中共有的一个数据X(前一个随机数、代表高度、轮次等变量进行组合)作为输入, 算出VRF输出Y与证明P, 由于Y 是随机的、不可预测的,可以根据Y是否满足一定的条件来选择出块节点。比如VRF输出小于某个阈值、则该节点被选择为出块节点。
目前在共识算法中使用VRF的有Algorand、Diffinity、Ontology的Vbft等共识算法。
在ALgorand共识算法中,通过VRF、结合账户的余额比例随机选择出块节点、再通过BA*(一种拜占庭一致性协议)共识算法进行共识出块。
在Diffinity 共识中,节点需要交一定数量的stake作为押金,再通过VRF选择出块节点再选公证人进行出块。
在VBFT共识算法中, 通过vrf选择一轮共识的备选出块提案节点,区块验证节点与区块确认节点、然后又选出的节点集完成共识。VBFT是对BFT算法在随机性的一个改进。
参考文献
1.Micali, Silvio; Rabin, Michael O.; Vadhan, Salil P. (1999). "Verifiable random functions". Proceedings of the 40th IEEE Symposium on Foundations of Computer Science. pp. 120–130.
2.https://datatracker.ietf.org/doc/draft-irtf-cfrg-vrf/?include_text=1
Annchain是由众安科技、众安-复旦区块链与信息安全联合实验室研发, 支持智能合约的高性能通用区块链协议。作为工信部指导的中国区块链技术和产业发展论坛两大开源项目之一,Annchain立足于中国,致力于助力中国抢占区块链全球话语权。
Annchain专注于解决扩展性、去中心化、安全三者平衡问题,做通用的分布式应用计算平台。目前已在数十家生态伙伴的商业场景中落地,场景涵盖农业溯源、珠宝溯源、资产通证化、公益、数据开放计算、广告分发平台和供应链金融等,开发者可基于Annchain高效构建适合自身的区块链应用。
Annchain当前包含两个子项目Annchain.Genesis和Annchain.OG。
Annchain.Genesis作为基于链表式结构的第一代区块链基础协议,其主要特征是模块化、高可靠、易用,支持多种智能合约引擎,开发者可根据具体业务需求选用共识与合约引擎,达到企业级使用需求。
Annchain.OG作为基于DAG账本结构的第二代区块链基础协议,其拥有DAG高效,强扩展特点的同时,又通过基于贡献的多维共识解决其安全可靠问题,同时Annchain.OG支持多种智能合约引擎及计算引擎,具有了更强计算和存储能力。
众安科技
众安信息技术服务有限公司(简称“众安科技”)成立于2016年11月2日,是由蚂蚁金服、腾讯、中国平安发起设立的众安保险旗下的全资科技子公司,专注于区块链、人工智能、密码学、物联网等前沿技术研究。众安科技汇聚了行业内的顶尖科研人才,其中区块链团队规模近200人,多数来自于各顶尖区块链团队。
众安-复旦区块链与信息安全联合实验室
众安-复旦区块链与信息安全联合实验室是国内首个高校与企业联合组建的区块链与信息安全实验室,专注于区块链核心技术研究,探索应用落地。
上海市区块链工程技术研究中心
上海市区块链工程技术研究中心由科委主导,依托复旦大学,联合众安在线财产保险股份有限公司,上海众人信息技术有限公司共同设立。专注分布式账本前沿共性技术与成果转化研究,推动工程落地。
更多关于Annchain:
官网:www.annchain.io
Github:http://Github: github.com/annchain
Facebook: https://www.facebook.com/Annchain-295110641341258
扫码备注昵称+研发方向
加入annchain技术社群