CN109447795B - 一种支持快速达成最终确认性的拜占庭共识方法 - Google Patents
一种支持快速达成最终确认性的拜占庭共识方法 Download PDFInfo
- Publication number
- CN109447795B CN109447795B CN201811058157.4A CN201811058157A CN109447795B CN 109447795 B CN109447795 B CN 109447795B CN 201811058157 A CN201811058157 A CN 201811058157A CN 109447795 B CN109447795 B CN 109447795B
- Authority
- CN
- China
- Prior art keywords
- hash
- officer
- center
- weak
- officers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明公开了一种支持快速达成最终确认性的拜占庭共识方法,实施步骤包括:预先在网络中部署具有VRF函数服务接口的弱中心,选民调用VRF函数生成抽签信息,弱中心随机选取委员会成员,选出一个主官、N‑1个副官;主官将收到的交易打成区块提议并广播给弱中心以及所有的副官,副官判断是否在指定时间内收到主官发送的区块提议,如果收到区块提议则进行验证并向弱中心给出是否认可该区块的投票,弱中心统计副官的投票结果,如果全票通过则发布正常区块,否则如果赞成票数小于2f+1则进行重新投票;否则进行二次确认。本发明具有委员选举公平、过程高效、安全性高、性能高等优点。
Description
技术领域
本发明涉及区块链技术,具体涉及一种支持快速达成最终确认性的拜占庭共识方法。
背景技术
根据某公司的报告指出,该公司仅存储15%与其业务相关的数据,其余85%的数据都存储在其它机构中,且该公司仅仅为现代公司的典型。跨部门、跨系统,纵横两维打通信息孤岛,从更广维度、更高精度汇聚数据,挖掘价值,已经成为关系到经济发展和社会治理的国家重大现实需求。然而,跨不同利益主体共享数据存在责权边界不清晰,不愿主动共享以及成本高、效率低等亟待突破的技术难题。
现有的数据资源交易平台,主要分为基于大数据交易所的大数据交易模式,如贵阳大数据交易中心;基于行业数据的大数据交易,如交通、金融等行业;基于数据资源企业推动的大数据交易,如数据堂等;基于互联网企业派生出的大数据交易,如京东万象等;这些数据交易平台都是依赖于第三方平台进行数据资源交易,从而实现数据资源的流通。然而,由于数据资源本身具有隐私性、安全性以及可复制性,依赖第三方的中心化数据交易平台存在着数据资源的隐私泄露和数据资源安全性降低等风险,同时在不同平台下进行数据资源交易存在着同一数据资源被多次贩卖导致数据资源降低等问题。
数据交易规模大、数据交易频度高、数据资源拥有者身份不对等的特性。其中,交易规模大是指从数据资源分布视角看,其数据资源分布在全球各个数据资源提供者手中,没有任何一个数据资源提供者拥有全部数据或占据大部分数据。交易频度高是从数据资源交易视角看,其数据资源消费者在购买数据资源时不单单是从单一数据资源提供者购买数据资源,而是需要从多个数据资源提供者手中购买。数据资源拥有者在出售数据资源时,不单单是出售给单一的数据资源消费者而是同一数据资源可以出售给多个数据资源消费者。数据资源拥有者身份不对等是指拥有海量数据的数据资源提供者在数据交易过程中占有绝对的优势地位,数据资源消费者在购买数据资源时往往会选择拥有海量数据的数据资源提供者,容易导致数据资源往往在几大海量数据资源拥有者之间流通,形成数据资源垄断。
基于区块链以安全可控方式共享流通数据,是解决上述问题的可行方式之一。如何将区块链技术引入到大规模、高频度数据交易中,实现高安全、高可靠、高效率的跨利益主体的数据流通和价值传递,是一个亟待解决的问题。目前,区块链技术还处于快速发展的状态,主要应用还是处于非实时性、轻量级、低吞吐量、高延迟和低敏感的边缘业务场景。现有区块链技术的记账频度有限,难以满足海量、高频数据交易需求,同时现有区块链交易确认的延迟较高,以比特币为例现有的交易频度最大为7 TPS (Transaction Per Second),交易确认时间为10 min,制约区块链性能吞吐和确帐延迟的关键在于区块链的共识。
区块链的共识用于解决的是对于某个提案大家达成一致意见的过程。在区块链中,每个最终确认的交易有且仅由一个区块记录;每产生一个区块,其最终是否进行上链操作都需要经过一定的共识机制来使得所有节点达成一致。
目前现有的拜占庭共识方法包括工作证明算法PoW、股权证明PoS以及实用拜占庭容错系统PBFT。(1)工作证明算法PoW:点打包成一个区块时,需要一个随机串使得区块的哈希值满足一定的条件;节点通过大量的尝试来提供一个合理的随机串;一旦节点计算出满足条件的随机串,就将该区块广播出去;其他节点收到区块后将验证其是否符合条件,如果符合条件则将其添加到自己维护的区块链上;当网络中大部分节点都添加了区块时,则视为接受该区块,达成共识。但是,工作证明算法PoW算法造成了大量的资源浪费,且由于需要等待多个确认,使得区块达成共识的周期较长,并且容易分叉;(2)股权证明PoS:股权证明PoS是在PoW的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例降低计算难度,从而加快寻找随机串的速度。但是,股权证明PoS算法在一定程度上缩短了共识达成的时间,但依然造成大量的资源浪费,并且存在分叉的可能性;(3)实用拜占庭容错系统PBFT:实用拜占庭容错系统PBFT:假设故障节点f个,整个服务节点数为3f+1个。每个客户端的请求需要经过三次两两交互的方式在服务达成一致后再执行客户端的请求。PBFT算法可以很好的解决区块链分叉问题,且能提升效率,但仅适合于联盟链和私有链。但是,由于PBFT需要两两通信,使得其通信量为O(n^2),很难支持大规模的网络节点。
因此,如何在网络弱同步场景下如何快速达成最终确认性的拜占庭容错共识,已经成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向数据交易的联盟链拜占庭容错共识方法,本发明能够实现网络弱同步场景下的快速达成最终确认性的拜占庭容错共识,具有委员选举公平、过程高效、安全性高、性能高等优点,对于数据资源建设、数字化基础建设具有重要科学意义。
为了解决上述技术问题,本发明采用的技术方案为:
一种支持快速达成最终确认性的拜占庭共识方法,实施步骤包括:
1)预先在网络中部署具有VRF函数服务接口的弱中心;
2)选民用VRF函数生成哈希hash和证明π并进一步生成包含身份及选举轮次信息的字符串X,选民用弱中心公钥加密字符串X得到PK 中心 (X)并发送给弱中心;
3)弱中心等待指定的时间t后,从发送PK 中心 (X)的所有选民中定量随机选择出N个委员构成的投票委员会成员,其中N的值为3f+1,f为拜占庭容错的最大值;并按照指定的规则指定一个委员为主官、其余N-1个委员为副官;
4)主官将收到的交易打成区块提议并广播给弱中心以及所有的副官,副官判断是否在指定时间内收到主官发送的区块提议,如果收到区块提议则进行验证并向弱中心给出是否认可该区块的投票,如果超时未收到主官发送的区块提议则在全网广播重选主官消息;
5)弱中心判断在预设的超时时间T proposal 内没有收到主官的区块提议且在两倍的预设的超时时间T proposal 内收到超过f+1个副官的发送的重选主官消息是否成立,如果成立则跳转执行步骤2);否则广播一次来自主官的区块提议,并跳转执行步骤6);
6)弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,如果赞成票数m小于2f+1,则跳转执行步骤7);如果赞成票数m为[2f+1,3f+1)之间,则跳转执行步骤8);如果赞成票数m等于3f+1,则跳转执行步骤9);
7)弱中心判断当前投票过程是否是重投票过程,如果是重投票过程,则跳转执行步骤10);否则判断收到的反对票数大于或等于f+1是否成立,如果成立则跳转执行步骤10),如果不成立,则启动投票委员会成员重投票过程,然后跳转执行步骤6);
8)弱中心将所有副官名单以及一致的结果一起打包,用弱中心私钥签名并广播给主官和所有副官,副官向弱中心确认投票结果,在超时前如果有不少于2f+1个副官确认了这个投票结果,则弱中心认可该区块,并将该区块信息发送给所有选民,跳转执行步骤9);否则,弱中心判定可能有副官叛变或者网络异步引起消息丢失,跳转执行步骤10);
9)主官发布正常区块,本轮投票委员会成员任期结束,退出;
10)弱中心发布空白区块,本轮投票委员会成员任期结束,退出。
优选地,步骤2)中选民用弱中心公钥加密字符串X得到PK 中心 (X)的函数表达式如式(1)所示;步骤4)中向弱中心给出是否认可该区块的投票的消息的函数表达式如式(2)所示;步骤8)中副官向弱中心确认投票结果的消息的函数表达式如式(3)所示;
(PK 选民半密钥 +hash+π+seed +r)Pk 中心(1)
式(1)中,PK 选民半密钥 为选民的公钥的第一半密钥,hash为选民用VRF函数生成的哈希hash,π为选民用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;
(Vote +hash+seed +r+PK’ 副官半密钥 )Pk 中心(2)
式(2)中,PK’ 副官半密钥 为副官的公钥的第二半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;
(PK” 副官半密钥 +Commit+hash+π+seed +r)Pk 中心(3)
式(3)中,PK” 副官半密钥 为副官的公钥的第三半密钥,Commit为副官的确认消息,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;所述第一半密钥、第二半密钥、第三半密钥三者中的任意两者可以生成副官的公钥。
优选地,步骤3)的详细步骤包括:
3.1)弱中心等待指定的时间t后,将收到的PK 中心 (X)分别解密得到每一个选民的哈希hash和选民用VRF函数生成的证明π,计算收到哈希hash和选民用VRF函数生成的证明π的结果数量N hash+π ,如果结果数量N hash+π 大于指定的数量N成立,则跳转执行步骤3.2);否则,跳转执行步骤3.1);
3.2)弱中心随机生成一个长度为N hash+π 的位串,且N个位为1,N hash+π -N位为零,其中N的值为3f+1,f为拜占庭容错的最大值;
3.3)弱中心逐个计算长度为N hash+π 的位串和N hash+π 个选民的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序;
3.4)根据长度为N hash+π 的位串信息,按照从低位到高位的顺序,递增排列所有选民的散列哈希值,对应位为1的选民被选中为委员,确定被选中的N个委员,且被选中的N个委员中哈希值最小的委员指定为主官、其余N-1个选民为副官;
3.5)弱中心将N个被选中委员列表信息分别生成校验值以及用私钥加密,所述N个被选中委员列表信息包括N个委员的哈希hash、选民用VRF函数生成的证明π、VRF函数种子seed以及选举轮次r,然后将加密结果以及校验值分别发送给所有选民;
3.6)选民在收到被选中委员列表信息后,首先用弱中心的公钥PK 中心解密字符串,然后用指定的校验算法对字符串中相同内容重生成校验值,如果两者校验值相同,则表示收到的信息未被篡改过,跳转执行步骤3.7);如果不同,则直接丢弃,跳转执行步骤3.1);
3.7)选民将自身包含的哈希hash遍历查询N个被选中委员列表信息包括的N个委员的哈希hash,如果找到匹配的结果则判定自身被选中为委员,否则判定自身未被选中为委员;
3.8)N个被选中委员列表信息复原长度为N hash+π 的位串,并逐个计算复原长度为N hash+π 的位串和各个委员的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序,从而确定自身是否为主官。
优选地,步骤7)中启动投票委员会成员重投票过程的详细步骤包括:
7.1)弱中心将主官发送的区块提议向主、副官重新发送一遍;
7.2)副官将重投票前主官发送的主官发送的区块提议、弱中心发送的区块提议两者进行比较,如果两份信息中的主官不一致,则判定主官已经叛变,并向弱中心报告主官叛变,跳转执行步骤7.3);否则,跳转执行步骤7.4);
7.3)弱中心判断报告主官叛变的副官数量,如果超过f+1个副官发出报告主官叛变,则跳转执行步骤10);
7.4)副官判断自身是否已经对弱中心重发的区块提议做出了响应,如果副官已经有了对该消息的响应,则副官直接将结果发给弱中心;如果副官尚无对该区块的投票表态,则副官直接广播执行结果给弱中心、主官和其他副官。
优选地,步骤7.4)中副官直接将结果发给弱中心或者直接广播执行结果给弱中心、主官和其他副官时,其发送的消息的函数表达式如式(4)所示;
(PK’” 副官半密钥 +Vote+hash+π+seed +r)Pk 中心(4)
式(4)中,PK’” 副官半密钥 为副官的公钥的第四半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;所述第一半密钥、第二半密钥、第四半密钥三者中的任意两者可以生成副官的公钥。
和现有技术相比,本发明具有下述优点:
1、本发明在选举委员会时,选民用VRF函数生成哈希hash和证明π并进一步生成包含身份及选举轮次信息的字符串X,选民用弱中心公钥加密字符串X得到PK 中心 (X)并发送给弱中心,弱中心等待指定的时间t后,从发送PK 中心 (X)的所有选民中定量随机选择出N个委员构成的投票委员会成员,其中N的值为3f+1,f为拜占庭容错的最大值;并按照指定的规则指定一个委员为主官、其余N-1个委员为副官,在客观公正的规则下,弱中心及所有选民均无法干预主官和副官的选举,确保了选举的公平性。
2、本发明弱中心选中投票委员会委员时,并不能知道委员的公钥地址,委员之间也相互不知情,确保了算法的安全性;
3、本发明步骤6)中弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,然后根据投票结果选择完成、重投票或者二次确认过程,从而可以大幅提升拜占庭容错能力前提下的共识达成效率。
4、本发明步骤2)~步骤3)为选举过程,步骤4)~步骤10)为投票过程,通过选取和投票分离的步骤,可以实现选举和投票过程并行进行,通过选举和投票过程并行进行的方式,能够提高达成拜占庭共识的效率。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例方法的二次确认过程模型。
图3为本发明实施例方法的重投票过程模型。
具体实施方式
如图1所示,本实施例支持快速达成最终确认性的拜占庭共识方法的实施步骤包括:
1)预先在网络中部署具有VRF函数服务接口的弱中心;
2)选民用VRF函数生成哈希hash和证明π并进一步生成包含身份及选举轮次信息的字符串X,选民用弱中心公钥加密字符串X得到PK 中心 (X)并发送给弱中心;
3)弱中心等待指定的时间t后,从发送PK 中心 (X)的所有选民中定量随机选择出N个委员构成的投票委员会成员,其中N的值为3f+1,f为拜占庭容错的最大值;并按照指定的规则指定一个委员为主官、其余N-1个委员为副官;
4)主官将收到的交易打成区块提议并广播给弱中心以及所有的副官,副官判断是否在指定时间内收到主官发送的区块提议,如果收到区块提议则进行验证并向弱中心给出是否认可该区块的投票,如果超时未收到主官发送的区块提议则在全网广播重选主官消息;
5)弱中心判断在预设的超时时间T proposal 内没有收到主官的区块提议且在两倍的预设的超时时间T proposal (2T proposal )内收到超过f+1个副官的发送的重选主官消息是否成立,如果成立则跳转执行步骤2);否则广播一次来自主官的区块提议,并跳转执行步骤6);
6)弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,如果赞成票数m小于2f+1,则跳转执行步骤7);如果赞成票数m为[2f+1,3f+1)之间,则跳转执行步骤8);如果赞成票数m等于3f+1,则跳转执行步骤9);
7)弱中心判断当前投票过程是否是重投票过程,如果是重投票过程,则跳转执行步骤10);否则判断收到的反对票数大于或等于f+1是否成立,如果成立则跳转执行步骤10),如果不成立,则启动投票委员会成员重投票过程,然后跳转执行步骤6);
8)弱中心将所有副官名单以及一致的结果一起打包,用弱中心私钥签名并广播给主官和所有副官,副官向弱中心确认投票结果,在超时前如果有不少于2f+1个副官确认了这个投票结果,则弱中心认可该区块,并将该区块信息发送给所有选民,跳转执行步骤9);否则,弱中心判定可能有副官叛变或者网络异步引起消息丢失,跳转执行步骤10);
9)主官发布正常区块(周期性视图变更),本轮投票委员会成员任期结束,退出;
10)弱中心发布空白区块(应激性视图变更),本轮投票委员会成员任期结束,退出。
本实施例中在网络中部署一个弱中心(也称算法安全屋),该弱中心不参与具体投票过程,仅以智能合约(达成共识的链上代码)的形式提供如下四类服务:(1)随机可确认函数(Verifiable Random Functions,VRF)接口服务,支持所有用户通过调用该函数生成足够随机的哈希值及验证该哈希值正确性的非交互证明,假设所有用户已经手握公私钥对;根据公钥以及seed,V(PK,seed, hash, π)函数可以检查给定的哈希值hash和哈希值的选民用VRF函数生成的证明π是否为同一组,该函数返回值为yes或no。(2)委员会委员选举和主官委员(以下简称主官)任命服务,提供从所有参与选举的用户中随机定量挑选N(N=3f+1)个委员的功能,同时支持根据SHA256(hash,π,随机位串)摘要信息定量随机任命1个主官和N-1个副官委员(以下简称副官),随机位串的长度就是选民的个数,其中值为1的位数的个数等于N,该信息哈希值最小的作为主官,这么做的好处是:选民如果想成为主官,也无法事先作弊,另外,弱中心也无法控制谁能成为主官,这样确保了主官的生成是选民和弱中心都不能控制的,弱中心的规则足够随机、足够公平。同时随机位串,所有选民的hash和π信息均可在弱中心处以Web形式公布,可供任何第三方监管验证。主官负责对当前收到的交易集合打包形成区块,并将区块广播出去,供其他副官验证并投票。(3)视图变更的发起,在副官委员叛变导致不能达成共识的情况下,弱中心主动发起视图变更,弱中心发现结果无法达成一致,判断副官叛变或者网络异步;在足够多(f+1)个副官认为主官叛变或弱中心检测到主官针对同一轮次发出两个不同区块等情况下,弱中心被动发起视图变更。主官的叛变,既可以通过副官发现,例如两次收到的区块确认请求不一致,副官怀疑主官叛变就提出“起义”请求,当足够多的副官提出“起义”请求,弱中心就启动重选举过程;也可以通过弱中心判断,即弱中心收到了针对同一轮次的两个不同主官签过名的区块;在所有委员迅速达成一致积极共识的情况下,弱中心主动发起视图变更。(4)统计投票结果,在选举委员会的主官、副官将对区块的投票结果都汇聚到弱中心后,统计票数,如果收到3f+1个一致的赞成票,则达成一致,进入周期性视图变更;如果收到一致的赞成票小于2f+1且Negative>=f+1的情况下直接进入应激性视图变更;在收到一致的赞成票小于2f+1且Negative<f+1(由于网络延迟造成),则发起一次重投票过程,如果重投票仍不能达成一致,则转入应激性视图变更,否则进入周期性视图变更;在收到一致的赞成票[2f+1,3f+1)时启动二次确认过程,如果二次确认过程不成功,则转入应激性视图变更,如果二次确认过程成功则转入周期性视图变更。所有的应激性视图变更都意味着生成了空白区块,所有的周期性视图变更都意味着生成了正常区块。
在弱中心进行投票委员会委员选举之前,首先假设所有用户均已经通过VRF函数生成了安全系数为k的公私钥对,安全系数k为VRF安全生成公私钥对时选择的安全系数,选民的公钥在通证平台中被用作用户的钱包地址。根据给定的安全系数k,可通过VRF函数中的公私钥对生成函数G生成唯一的一组公私钥对G(k)=(P K ,S K ),其中P K 表示VRF函数公钥,S K 表示VRF函数私钥。VRF函数为可验证的随机函数,根据给定的seed,通过SK可生成一个hash和其对应的用VRF函数生成的证明π,且对任一知道公钥PK的人都能检查hash确实对应于用VRF函数生成的证明π,即:(hash,π)=VRF SK (seed)。VRF函数具有校验函数V,用于根据公钥以及seed,检查给定的hash和π是否为同一组。该函数返回值为yes或no,可表示为:V(P K , seed, hash,π)。本实施例中,以SK表示私钥、PK表示公钥、下标来区分不同的节点,例如对于弱中心而言,其私钥、公钥分别表示为SK中心、PK中心。
为了安全考虑,本实施例中考虑一个区块一选举,即每一个区块都需要由不同的委员会投票达成共识;为了效率考虑,本实施例中考虑前一个区块的投票过程与后一个区块的选举过程并发进行。本实施例中,步骤2)中选民用弱中心公钥加密字符串X得到PK 中心 (X)的函数表达式如式(1)所示;步骤4)中向弱中心给出是否认可该区块的投票的消息的函数表达式如式(2)所示;步骤8)中副官向弱中心确认投票结果的消息的函数表达式如式(3)所示;
(PK 选民半密钥 +hash+π+seed +r)Pk 中心(1)
式(1)中,PK 选民半密钥 为选民的公钥的第一半密钥,hash为选民用VRF函数生成的哈希hash,π为选民用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;
(Vote +hash+seed +r+PK’ 副官半密钥 )Pk 中心(2)
式(2)中,PK’ 副官半密钥 为副官的公钥的第二半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;
(PK” 副官半密钥 +Commit+hash+π+seed +r)Pk 中心(3)
式(3)中,PK” 副官半密钥 为副官的公钥的第三半密钥,Commit为副官的确认消息,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;第一半密钥、第二半密钥、第三半密钥三者中的任意两者可以生成副官的公钥。
根据秘钥可以生成多个半密钥,根据其中任意2个半密钥可还原秘钥。因此,在步骤2)中选民用弱中心公钥加密字符串X得到PK 中心 (X)并发送给弱中心时,弱中心只收到选民的公钥的第一半密钥,无法还原选民的公钥,也就无法确定选民的身份;步骤4)中向弱中心给出是否认可该区块的投票的消息时,弱中心收到副官的公钥的第二半密钥,根据收到的第二半密钥及其在选民阶段发送的第一半密钥,就可以还原出副官的公钥,从而能够得知副官的公钥的身份;步骤8)中副官向弱中心确认投票结果的消息时,根据第三半密钥和第一半密钥/第二半密钥能否得出副官的公钥即可判定副官消息是否为假消息。所有选民用VRF函数生成hash和π后,用弱中心公钥加密字符串X,即PK 中心 (X),即:(PK 选民半密钥 +hash+π+seed+r)PK 中心 发给弱中心,弱中心弱收到上述信息时,使用私钥SK 中心 解密,并通过seed和r来验证当前投票轮次。选民发给弱中心的密钥为其公钥PK 选民 的半密钥PK 选民半密钥 ,这是为了确保选民被弱中心选中后,弱中心及接收到广播消息的其他选民都无法在当前阶段就知晓谁被选举为委员。弱中心此时也不知道谁是主官、谁是副官信息,主官和副官相互之间也不明身份。但弱中心掌握了所有委员会委员当前轮次的半密钥PK 选民半密钥 、hash和π值。在投票时,被选中的委员才会带上另一半密钥,这样才能让其他节点(主要是弱中心)验证,某一票是否来自于合法的被选举出的委员,即hash、π和公钥(两个半密钥)的校验函数V计算结果是否为YES。π为选民用VRF函数生成的证明,任何人可以利用公钥对选民用VRF函数生成的证明π进行验证,证明π的来源。
在弱中心进行投票委员会委员选举之前,首先假设所有用户均已经通过VRF函数生成了安全系数为k的公私钥对PK、SK,公钥PK在通证平台中被用作用户的钱包地址。为了安全考虑,算法考虑一个区块一选举,即每一个区块都需要由不同的委员会投票达成共识。为了效率考虑,算法考虑前一个区块的投票过程与后一个区块的选举过程并发进行。步骤3)用于实现弱中心盲选委员。弱中心等到一段时间t后,将从收集到的所有结果集合中,定量随机选择出N(例如N=30)个用户,该过程假设弱中心主官上不会与任何选民合谋作恶。该过程是弱中心主官可信前提下,一套经过所有参与者事先评估过的可信智能合约。因为其规则是公开、公正、公平的,所以理论上其结果不受弱中心和任何选民的影响。本实施例中,步骤3)的详细步骤包括:
3.1)弱中心等待指定的时间t后,将收到的PK 中心 (X)分别解密得到每一个选民的哈希hash和选民用VRF函数生成的证明π,计算收到哈希hash和选民用VRF函数生成的证明π的结果数量N hash+π ,如果结果数量N hash+π 大于指定的数量N成立,则跳转执行步骤3.2);否则,跳转执行步骤3.1);
3.2)弱中心随机生成一个长度为N hash+π 的位串,且N个位为1,N hash+π -N位为零,其中N的值为3f+1,f为拜占庭容错的最大值;
3.3)弱中心逐个计算长度为N hash+π 的位串和N hash+π 个选民的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序;本实施例中,计算长度为N hash+π 的位串和N hash+π 个选民的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值使用的SHA256函数,具体为计算计算SHA256(hash,π,N hash+π 位串)的值;毫无疑问,也可以根据需要选择其他散列哈希函数,例如SHA128等。
3.4)根据长度为N hash+π 的位串信息,按照从低位到高位的顺序,递增排列所有选民的散列哈希值,对应位为1的选民被选中为委员,确定被选中的N个委员,且被选中的N个委员中哈希值最小的委员指定为主官、其余N-1个选民为副官,该规则能够彻底杜绝选民主观上可能存在的任何侥幸心理,不会调控hash值的生成;
3.5)弱中心将N个被选中委员列表信息分别生成校验值以及用私钥加密,N个被选中委员列表信息包括N个委员的哈希hash、选民用VRF函数生成的证明π、VRF函数种子seed以及选举轮次r,然后将加密结果以及校验值分别发送给所有选民;
3.6)选民在收到被选中委员列表信息后,首先用弱中心的公钥PK 中心解密字符串,然后用指定的校验算法对字符串中相同内容重生成校验值,如果两者校验值相同,则表示收到的信息未被篡改过,跳转执行步骤3.7);如果不同,则直接丢弃,跳转执行步骤3.1);
3.7)选民将自身包含的哈希hash遍历查询N个被选中委员列表信息包括的N个委员的哈希hash,如果找到匹配的结果则判定自身被选中为委员,否则判定自身未被选中为委员;
3.8)N个被选中委员列表信息复原长度为N hash+π 的位串,并逐个计算复原长度为N hash+π 的位串和各个委员的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序,从而确定自身是否为主官。
本实施例中,步骤3.5)中弱中心将N个被选中委员列表信息分别生成校验值的方式为使用md5校验算法,弱中心用私钥加密包含N个委员信息的字符串,字符串中包括选民(被选中委员)的hash、π,种子seed,当前轮次r(不包括被选中委员的PK 选民半密钥 ),以及上述内容用私钥加密前的md5值,弱中心向选民广播(hash [1-N] +π [1-N] +seed +r)Sk 中心以确定委员竞选结果,当N=30时,即(hash [1-30] +π [1-30] +seed +r+md5)Sk 中心发送给所有选民,选民在收到被选中委员列表信息后,首先用SK 中心解密字符串,然后用PK 中心对字符串中相同内容重生成md5值,如果两者相同,则表示收到的信息未被篡改过;如果不同,则直接丢弃。
选民用PK 中心 解密,得到(hash [1-30] +π [1-30] +seed +r+md5)后,遍历查询hash [1-30] ,如果自己的hash在列表hash [1-30] 中,则表示自己被选中,否则未被选中,因为弱中心是可靠的,故经过弱中心私钥签名的内容是可信的。选民在收到(hash [1-30] +π [1-30] +seed +r+md5)Sk 中心信息的基础上,再做一次SHA256运算,即SHA256((hash,π,N hash+π 位串),得到的数字摘要最小值为主官。即使自己不是主官,也要保留信息,以便在投票过程中验证区块提议是否是由主官发出的区块提议。
本实施例中,步骤4)主官将收到的交易打成区块提议并广播给弱中心以及所有的副官时,广播的消息的形式为:(Block+hash+π+seed +r)SK 主官+PK 主官,即将消息(Block+hash +π+seed +r)使用主官的私钥SK 主官加密,把主官的公钥PK 主官拼接在加密的字符串后面,其中,Block即为待投票的区块。副官判断是否在指定时间内收到主官发送的区块提议,如果收到区块提议则进行验证并向弱中心给出是否认可该区块的投票,如果超时未收到主官发送的区块提议则在全网广播重选主官消息;步骤5)弱中心判断在预设的超时时间T proposal 内没有收到主官的区块提议且在两倍的预设的超时时间T proposal (2T proposal )内收到超过f+1个副官的发送的重选主官消息如果不成立,则广播一次来自主官的区块提议,本实施例中,步骤5)弱中心广播一次来自主官的区块提议时,消息格式为(Block+hash+π+seed +r)SK 主官+PK 主官,SK 主官表示主官的私钥,PK 主官表示主官的公钥。
本实施例中,步骤4)~步骤10)为委员会基于Speculation的投票机制的投票过程,其具体包括:(1)步骤4)~步骤4)中的初始投票过程;(2)步骤8)中的二次确认过程;(3)步骤7)中的重投票过程。
(1)初始投票过程:
提议者(主官)将收到的交易打成区块,并通过Gossip协议广播消息(Block+hash+ π+seed +r+PK 主官)SK 主官+PK 主官,要分析主官不作为或者作恶等行为的无危害性,即有可能定向传输错误区块给副官,但如果副官收到了针对相同轮次,来自同一主官的不同区块提议,则马上可以质疑主官叛变,因此对于主官来说很不划算,所以要么全发错,要么全发对。委员会委员(副官),对收到的区块进行验证,并给出是否认可该区块的投票,副官返回的投票信息包括(PK 副官半密钥+Vote+ hash +π+seed +r)PK 中心;弱中心收到该投票信息后,用私钥解密并验证投票是否来自于当下轮次被选中的委员(此时弱中心已经收到了两个半密钥,可以知道副官的身份,也可以验证副官的π信息,根据VRF函数的特性,拥有PK 副官半密钥,hash和π可以验证三者是否来自同一分组)。弱中心在完成对委员身份的验证后,开始统计来自合法委员的投票结果,如果收到3f+1个一致的赞成票(Positive),则弱中心通过Gossip协议广播当前区块的上链消息,该上链消息由弱中心的私钥SK 中心进行加密,所有选民收到该消息后,用弱中心的公钥PK 中心解密,并将该区块同步到自己所持有链的最末端。由于在区块投票的过程中,弱中心已经完成了针对下一轮区块投票委员会的选举,因此弱中心在广播最新区块时,会附带上新选举出的委员会成员信息;如果弱中心在超时前收到的一致赞成票在[2f+1,3f+1)之间,则进入二次确认过程;如果弱中心在超时前收到的一致反对票(Negative)不少于f+1,开启应激性视图变更;如果弱中心在超时前收到的一致反对票低于f+1,则进入重投票过程。
(2)二次确认过程:
如图2所示,其中步骤①:选民向弱中心发送(PK 选民半密钥 +hash+π+seed +r)Pk 中心以竞选委员。步骤②:弱中心向选民广播(hash [1-N] +π [1-N] +seed +r+md5)Sk 中心以确定委员竞选结果,选民根据竞选结果确定自身身份是否为主官或者副官。步骤③:主官向副官发送待投票的区块:(Block+hash+π+seed +r+PK 主官)SK 主官+PK 主官。步骤④:副官向弱中心发送投票结果(Vote+hash+seed +r+PK’ 副官半密钥 )Pk 中心。步骤6)弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,如果赞成票数m为[2f+1,3f+1)之间,则跳转执行步骤8)进而二次确认的步骤。参见图2,步骤8)进而二次确认的步骤包括:步骤⑤:弱中心向主管和副官广播消息:(Vote+hash [1-m] +π+seed +r) PK 中心,其中m为赞成票数,步骤⑥:副官向弱中心发送二次确认消息:(PK” 副官半密钥 +Commit+hash+π+seed +r)Pk 中心。
其中,步骤⑤弱中心将上述信息广播给主官和所有副官,此次消息依然采用广播过程,弱中心虽然已经知道了所有主官和副官的完整公钥(即地址)信息,但弱中心不会把委员信息在此次广播通信中进行泄漏,因此,普通选民依然不知道委员是谁,委员相互之间也不知道谁是谁。如果有不少于2f+1个副官确认了这个投票结果,副官此时是相信中心发来的投票列表没有作假,因此只要收到了列表及结果信息,就可以表态投票,则弱中心认可该区块,并将该区块信息及下一轮投票委员会成员信息一起发送给所有选民;如果在超时前,对该投票结果进行确认的副官数量少于2f+1,则可能有副官叛变或者网络异步引起消息丢失,此时弱中心将发起视图变更过程。
(3)重投票过程:
如图3所示,其中步骤①为选民向弱中心发送(PK 选民半密钥 +hash+π+seed +r)Pk 中心以竞选委员。步骤②为弱中心向选民广播(hash [1-N] +π [1-N] +seed +r+md5)Sk 中心以确定委员竞选结果,选民根据竞选结果确定自身身份是否为主官或者副官。步骤③为主官向副官发送待投票的区块:(Block+hash+π+seed +r+PK 主官)SK 主官+PK 主官。步骤④为副官向弱中心发送投票结果:(Vote+hash+seed +r+PK’ 副官半密钥 )Pk 中心。步骤6)中弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,如果赞成票数m小于2f+1,则跳转执行步骤7)进入重投票过程。参见图3,步骤7)进而重投票过程的步骤包括:步骤⑤:主官向副官发送待投票的区块:(Block+hash+π+seed +r)SK 主官+PK 主官。步骤⑥:弱中心向副官发送待投票的区块:(Block+hash+π+seed +r)SK 主官+PK 主官。步骤⑦:副官向弱中心发送重投票结果:(PK’” 副官半密钥 +Vote +hash+π+seed +r)Pk 中心。
如果在重确认副官叛变或网络异步引起消息丢失(不包括主官叛变),则弱中心会将请求(即原来主官打包过的区块)向主、副官重新发送一遍;如果副官(属于第一波次2f+1的成员)已经有了对该消息的响应,则副官直接将结果发给弱中心,证明主官未向该副官发送假请求,副官不会质疑主官;如果副官尚无对该区块的投票表态,则副官直接广播执行结果给弱中心、主官和其他副官(投票时定向广播,补投票时也是定向广播),重新投票时,弱中心及所有网民都只知道主官是谁,依然没有副官的名单,因此不容易被定点攻击。该过程的投票结果是累加的,即如果一个副官在初始投票过程中,已经投过赞成票,那么在重投票过程中,反馈赞成票结果或由于延时未反馈结果都可被认为之前的一票有效,除非重投过程中该副官又投反对票,如果副官前后两次针对同一区块的投票结果不一致,会被作为错误怀疑对象。在弱中心向主官、副官发送请求时,副官会比较同一视图下、针对同一区块的请求是否一致(弱中心发的与主官之前广播的不一致,主官重广播的和主官之前广播的不一致),如果存在不一致,则判定主官已经叛变,因为弱中心是值得信任的。如果副官判定主官叛变,则副官发起视图变更请求“主官已叛变”,如果超过f+1个副官报告主官叛变,则弱中心发起视图变更。如果副官收到来自其他超过f+1个副官发出的视图变更请求,则副官进入视图变更状态,如果仅收到来自于弱中心的视图变更消息,则进入视图变更状态。经历二次投票过程后,弱中心如果依然不能达成一致投票结果,则触发视图变更。弱中心发出的视图变更请求,所有节点都无条件遵循。弱中心触发视图变更,会生成一个空白区块,该区块随同下一轮投票委员会成员信息一起发送给所有选民。
本实施例中,步骤7)中启动投票委员会成员重投票过程的详细步骤包括:
7.1)弱中心将主官发送的区块提议向主、副官重新发送一遍;
7.2)副官将重投票前主官发送的主官发送的区块提议、弱中心发送的区块提议两者进行比较,如果两份信息中的主官不一致,则判定主官已经叛变,并向弱中心报告主官叛变,跳转执行步骤7.3);否则,跳转执行步骤7.4);
7.3)弱中心判断报告主官叛变的副官数量,如果超过f+1个副官发出报告主官叛变,则跳转执行步骤10);
7.4)副官判断自身是否已经对弱中心重发的区块提议做出了响应,如果副官已经有了对该消息的响应,则副官直接将结果发给弱中心;如果副官尚无对该区块的投票表态,则副官直接广播执行结果给弱中心、主官和其他副官。
本实施例中,步骤7.4)中副官直接将结果发给弱中心或者直接广播执行结果给弱中心、主官和其他副官时,其发送的消息的函数表达式如式(4)所示;
(PK’” 副官半密钥 +Vote+hash+π+seed +r)Pk 中心(4)
式(4)中,PK’” 副官半密钥 为副官的公钥的第四半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;第一半密钥、第二半密钥、第四半密钥三者中的任意两者可以生成副官的公钥。
本实施例中,视图变更机制分为应激性视图变更和周期性视图变更。周期性视图变更即为:主官发布正常区块,本轮投票委员会成员任期结束;应激性视图变更即为:弱中心发布空白区块,本轮投票委员会成员任期结束。应激性视图变更的触发条件为:(1)在弱中心完成委员会委员选举后,弱中心将所有被选中委员列表信息(包括主官、副官信息)全网广播,此时广播的信息中并不包括被选中委员的半密钥,如果被选中为主官的选民在预设的较小的超时时间前未收到自己作为主官的信息,就不会发起区块提议,所有的副官在预设的较大的超时时间前也不会收到区块,因此副官会全网广播 “怀疑主官叛变”信息,该信息是带着副官完整公钥的(“怀疑主官叛变”+hash +π+seed +r)SK 副官。如果副官收到的“怀疑主官叛变”信息超过f+1个,则副官进入视图变更状态,如果弱中心收到的“怀疑主官叛变”信息超过f+1个,则弱中心产生空白区块并与新一轮投票委员会委员列表信息一起广播;(2)弱中心在统计投票结果不能满足一致性要求时,产生空白区块并与新一轮投票委员会委员列表信息一起广播,广播的消息格式为(“视图变更”+d 空白区块+hash [1-30] +π [1-30] +seed +r)SK 中心+空白区块。判断投票结果不能满足一致性要求的标准有两种:一是在重投票过程中,在超时前,对该投票结果进行确认的副官数量少于2f+1;一是在二次投票过程中,弱中心如果依然不能达成一致投票结果,则弱中心主动发起视图变更。周期性视图变更的触发条件为:正常情况下,在区块达成共识后,启动视图变更,确保一块一选举,提高安全性。满足区块达成共识的标准有三个:在初始投票或者重投票过程中,1)弱中心收到了3f+1个一致的赞成票;2)在二次确认过程中,弱中心收到了不少于2f+1个结果确认消息。
本实施例支持快速达成最终确认性的拜占庭共识方法步骤2)~步骤3)为选举过程,步骤4)~步骤10)为投票过程,通过选取和投票分离的步骤,可以实现选举和投票过程并行进行。例如,为了将选举过程对区块上链速度的延时影响降到最低,系统在针对第r个区块进行委员会选举时,每个选民都以第r-2区块的SHA256哈希值作为seed,用VRF函数生成hash和π,即第r-1区块的投票过程与第r区块的选举过程并发进行。如果针对第r-1区块共识未达成,则r-1区块为近包含××信息的空区块,交易将打包至第r个区块中。
综上,本实施例支持快速达成最终确认性的拜占庭共识方法基于下述设计原则:(1)在弱同步网络环境中以计算资源的高开销换取网络通信的低负载;(2)存在一个弱中心,该中心只服务,不决策,该中心以智能合约形式运行;(3)委员的选举完全随机匿名盲选,且谁被选中只有被选中者自己知道,在投票中普通节点无法知道谁是委员;(4)投票时,验证方可以验证投票者是否是被选中的委员;(5)一轮投票一选举,下一轮选举与上一轮投票过程并行进行。且本实施例支持快速达成最终确认性的拜占庭共识方法达成了下述设计决策:(1)选举的身份标识和非交互式证明都在选民终端生成;(2)弱中心以智能合约形式存在,所有分布的节点利用分布一致性算法确保状态的实时同步,每一轮次只随机选一个弱中心提供服务;(3)使用随机可确认函数VRF,确保投票委员会选举的随机性,同时借助定量选举机制,实现委员随机定量的精准选举;(4)使用随机可确认函数VRF的验证函数,验证hash、seed、公钥和π来自于同一个分组;(5)使用密钥共享技术,确保弱中心在选择时不能掌握主官和副官的公钥地址,委员在投票给弱中心时,每次需要使用不同的半密钥,而任意两两组合均可用于验证委员身份真实性;(6)确保任何一轮通信时,委员们相互之间不能确定谁是主、副官;(7)无论何种情况触发了视图变更,投票委员会都已经完成选举,以确保系统效率。为了对本实施例支持快速达成最终确认性的拜占庭共识方法进行验证,分别从活性、安全性以及性能三个指标进行验证。(1)活性,应用本实施例拜占庭共识方法的系统拜占庭节点小于(n-1)/3时,系统行为及状态将符合预期;(2)安全性:本实施例拜占庭共识方法中任何已经确认的记录都不会被更改,并在记入区块后可被索引、追溯;(3)性能:当前主流的Hyperledger Fabric V0.6实现了拜占庭共识,但其投票委员会的成员规模在超过16之后,共识算法就无法收敛,系统的性能吞吐仅达到102量级;在参与拜占庭共识节点规模达到30的前提下,应用本实施例拜占庭共识方法的系统吞吐性能不低于1000TPS,能够达到秒级延时。因此,本实施例支持快速达成最终确认性的拜占庭共识方法能够实现网络弱同步场景下的快速达成最终确认性的拜占庭容错共识,具有委员选举公平、过程高效、安全性高、性能高等优点,对于数据资源建设、数字化基础建设具有重要科学意义。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种支持快速达成最终确认性的拜占庭共识方法,其特征在于实施步骤包括:
1)预先在网络中部署具有VRF函数服务接口的弱中心;
2)选民用VRF函数生成哈希hash和证明π并进一步生成包含身份及选举轮次信息的字符串X,选民用弱中心公钥加密字符串X得到PK 中心 (X)并发送给弱中心;
3)弱中心等待指定的时间t后,从发送PK 中心 (X)的所有选民中定量随机选择出N个委员构成的投票委员会成员,其中N的值为3f+1,f为拜占庭容错的最大值;并按照指定的规则指定一个委员为主官、其余N-1个委员为副官;
4)主官将收到的交易打成区块提议并广播给弱中心以及所有的副官,副官判断是否在指定时间内收到主官发送的区块提议,如果收到区块提议则进行验证并向弱中心给出是否认可该区块的投票,如果超时未收到主官发送的区块提议则在全网广播重选主官消息;
5)弱中心判断在预设的超时时间T proposal 内没有收到主官的区块提议且在两倍的预设的超时时间T proposal 内收到超过f+1个副官的发送的重选主官消息是否成立,如果成立则跳转执行步骤2);否则广播一次来自主官的区块提议,并跳转执行步骤6);
6)弱中心对所有的副官的委员身份进行验证,并统计收集来自合法委员身份的副官的投票结果,如果赞成票数m小于2f+1,则跳转执行步骤7);如果赞成票数m为[2f+1,3f+1)之间,则跳转执行步骤8);如果赞成票数m等于3f+1,则跳转执行步骤9);
7)弱中心判断当前投票过程是否是重投票过程,如果是重投票过程,则跳转执行步骤10);否则判断收到的反对票数大于或等于f+1是否成立,如果成立则跳转执行步骤10),如果不成立,则启动投票委员会成员重投票过程,然后跳转执行步骤6);
8)弱中心将所有副官名单以及一致的结果一起打包,用弱中心私钥签名并广播给主官和所有副官,副官向弱中心确认投票结果,在超时前如果有不少于2f+1个副官确认了这个投票结果,则弱中心认可该区块,并将该区块信息发送给所有选民,跳转执行步骤9);否则,弱中心判定可能有副官叛变或者网络异步引起消息丢失,跳转执行步骤10);
9)主官发布正常区块,本轮投票委员会成员任期结束,退出;
10)弱中心发布空白区块,本轮投票委员会成员任期结束,退出;
步骤7)中启动投票委员会成员重投票过程的详细步骤包括:
7.1)弱中心将主官发送的区块提议向主、副官重新发送一遍;
7.2)副官将重投票前主官发送的主官发送的区块提议、弱中心发送的区块提议两者进行比较,如果两份信息中的主官不一致,则判定主官已经叛变,并向弱中心报告主官叛变,跳转执行步骤7.3);否则,跳转执行步骤7.4);
7.3)弱中心判断报告主官叛变的副官数量,如果超过f+1个副官发出报告主官叛变,则跳转执行步骤10);
7.4)副官判断自身是否已经对弱中心重发的区块提议做出了响应,如果副官已经有了对该消息的响应,则副官直接将结果发给弱中心;如果副官尚无对该区块的投票表态,则副官直接广播执行结果给弱中心、主官和其他副官。
2.根据权利要求1所述的支持快速达成最终确认性的拜占庭共识方法,其特征在于,步骤2)中选民用弱中心公钥加密字符串X得到PK 中心 (X)的函数表达式如式(1)所示;步骤4)中向弱中心给出是否认可该区块的投票的消息的函数表达式如式(2)所示;步骤8)中副官向弱中心确认投票结果的消息的函数表达式如式(3)所示;
(PK 选民半密钥 +hash+π+seed +r)Pk 中心(1)
式(1)中,PK 选民半密钥 为选民的公钥的第一半密钥,hash为选民用VRF函数生成的哈希hash,π为选民用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;
(Vote+hash+seed +r+PK’ 副官半密钥 )Pk 中心(2)
式(2)中,PK’ 副官半密钥 为副官的公钥的第二半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;
(PK” 副官半密钥 +Commit+hash+π+seed +r)Pk 中心(3)
式(3)中,PK” 副官半密钥 为副官的公钥的第三半密钥,Commit为副官的确认消息,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心表示用弱中心的公钥加密;所述第一半密钥、第二半密钥、第三半密钥三者中的任意两者可以生成副官的公钥。
3.根据权利要求1所述的支持快速达成最终确认性的拜占庭共识方法,其特征在于,步骤3)的详细步骤包括:
3.1)弱中心等待指定的时间t后,将收到的PK 中心 (X)分别解密得到每一个选民的哈希hash和选民用VRF函数生成的证明π,计算收到哈希hash和选民用VRF函数生成的证明π的结果数量N hash+π ,如果结果数量N hash+π 大于指定的数量N成立,则跳转执行步骤3.2);否则,跳转执行步骤3.1);
3.2)弱中心随机生成一个长度为N hash+π 的位串,且N个位为1,N hash+π -N位为零,其中N的值为3f+1,f为拜占庭容错的最大值;
3.3)弱中心逐个计算长度为N hash+π 的位串和N hash+π 个选民的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序;
3.4)根据长度为N hash+π 的位串信息,按照从低位到高位的顺序,递增排列所有选民的散列哈希值,对应位为1的选民被选中为委员,确定被选中的N个委员,且被选中的N个委员中哈希值最小的委员指定为主官、其余N-1个选民为副官;
3.5)弱中心将N个被选中委员列表信息分别生成校验值以及用私钥加密,所述N个被选中委员列表信息包括N个委员的哈希hash、选民用VRF函数生成的证明π、VRF函数种子seed以及选举轮次r,然后将加密结果以及校验值分别发送给所有选民;
3.6)选民在收到被选中委员列表信息后,首先用弱中心的公钥PK 中心解密字符串,然后用指定的校验算法对字符串中相同内容重生成校验值,如果两者校验值相同,则表示收到的信息未被篡改过,跳转执行步骤3.7);如果不同,则直接丢弃,跳转执行步骤3.1);
3.7)选民将自身包含的哈希hash遍历查询N个被选中委员列表信息包括的N个委员的哈希hash,如果找到匹配的结果则判定自身被选中为委员,否则判定自身未被选中为委员;
3.8)N个被选中委员列表信息复原长度为N hash+π 的位串,并逐个计算复原长度为N hash+π 的位串和各个委员的哈希hash以及选民用VRF函数生成的证明π三者的散列哈希值,并将得到N hash+π 个散列哈希值按照大小依次排序,从而确定自身是否为主官。
4.根据权利要求2所述的支持快速达成最终确认性的拜占庭共识方法,其特征在于,步骤7.4)中副官直接将结果发给弱中心或者直接广播执行结果给弱中心、主官和其他副官时,其发送的消息的函数表达式如式(4)所示;
(PK’” 副官半密钥 +Vote+hash+π+seed +r)Pk 中心(4)
式(4)中,PK’” 副官半密钥 为副官的公钥的第四半密钥,Vote为副官的投票结果,hash为副官用VRF函数生成的哈希hash,π为副官用VRF函数生成的证明,seed为VRF函数种子,r为选举轮次,Pk 中心 表示用弱中心的公钥加密;所述第一半密钥、第二半密钥、第四半密钥三者中的任意两者可以生成副官的公钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811058157.4A CN109447795B (zh) | 2018-09-11 | 2018-09-11 | 一种支持快速达成最终确认性的拜占庭共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811058157.4A CN109447795B (zh) | 2018-09-11 | 2018-09-11 | 一种支持快速达成最终确认性的拜占庭共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109447795A CN109447795A (zh) | 2019-03-08 |
CN109447795B true CN109447795B (zh) | 2021-06-04 |
Family
ID=65530307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811058157.4A Active CN109447795B (zh) | 2018-09-11 | 2018-09-11 | 一种支持快速达成最终确认性的拜占庭共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109447795B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978528B (zh) * | 2019-03-15 | 2020-05-12 | 北京世纪诚链科技有限公司 | 一种可插拔共识协议框架模型、共识协议及其实现方法 |
CN110198233B (zh) * | 2019-05-09 | 2021-11-19 | 中国人民解放军国防科技大学 | 基于可信执行环境和有向无环图的区块链共识方法及系统 |
CN110572429B (zh) * | 2019-07-30 | 2022-01-07 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 基于区块链的共识方法、装置、设备及存储介质 |
CN110535629B (zh) * | 2019-09-20 | 2022-06-10 | 奥科塞尔控股公司 | 一种异步网络条件下的出块共识方法 |
CN110768798B (zh) * | 2019-10-24 | 2022-06-28 | 中国人民解放军国防科技大学 | 面向物联网的轻量级区块链共识方法、系统及介质 |
CN110928951B (zh) * | 2019-11-26 | 2023-03-14 | 天津理工大学 | 一种基于区块链的数据共享及仲裁方法 |
CN111159764A (zh) * | 2019-12-26 | 2020-05-15 | 杭州趣链科技有限公司 | 基于投票选举的链上与链下相结合实现联盟链自治的方法 |
CN112041834B (zh) * | 2020-01-02 | 2024-02-13 | 香港应用科技研究院有限公司 | 使用分布式账本进行数据交换的系统和方法 |
CN111429326B (zh) * | 2020-03-16 | 2023-10-13 | 中国建设银行股份有限公司 | 一种利用区块链网络进行互助的方法及装置 |
CN111416708B (zh) * | 2020-03-16 | 2023-01-31 | 麦希科技(北京)有限公司 | 一种区块链拜占庭容错共识方法及系统 |
CN111464631B (zh) * | 2020-03-31 | 2023-03-28 | 成都质数斯达克科技有限公司 | 联盟区块链中的业务共识方法及装置 |
CN111445247B (zh) * | 2020-04-09 | 2021-05-28 | 堡垒科技有限公司 | 用于防止区块链分叉的方法和设备 |
CN112232954A (zh) * | 2020-10-15 | 2021-01-15 | 杭州溪塔科技有限公司 | 一种提案超时阈值的动态调节方法、装置及电子设备 |
CN112422663B (zh) * | 2020-11-09 | 2023-04-07 | 浙江力太工业互联网有限公司 | 工业物联网的数据集中系统及数据汇聚、处理、存储方法 |
CN112907246B (zh) * | 2021-03-18 | 2023-04-07 | 上海交通大学 | 基于BFT协议和PoW机制的区块链共识协议实现方法和系统 |
CN113660125B (zh) * | 2021-08-18 | 2023-03-10 | 中国科学技术大学 | 一种基于随机可信委员会的共识方法及装置 |
CN114205092B (zh) * | 2021-12-01 | 2023-11-21 | 浙江大学 | 一种乐观的不需要回退的拜占庭容错共识方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN106447311A (zh) * | 2016-09-26 | 2017-02-22 | 北京天德科技有限公司 | 一种四次通信的拜占庭容错算法的区块链建块方法 |
CN107423961A (zh) * | 2017-07-11 | 2017-12-01 | 北京泛融科技有限公司 | 一种基于随机相关性分析的优化共识方法 |
CN108241926A (zh) * | 2017-08-25 | 2018-07-03 | 杭州复杂美科技有限公司 | 授权共识算法的区块链方案 |
CN108270780A (zh) * | 2018-01-08 | 2018-07-10 | 中国电子科技集团公司第三十研究所 | 一种异构网络环境多中心数字身份管理方法 |
CN108492103A (zh) * | 2018-02-07 | 2018-09-04 | 北京大学深圳研究生院 | 一种联盟区块链共识方法 |
-
2018
- 2018-09-11 CN CN201811058157.4A patent/CN109447795B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN106447311A (zh) * | 2016-09-26 | 2017-02-22 | 北京天德科技有限公司 | 一种四次通信的拜占庭容错算法的区块链建块方法 |
CN107423961A (zh) * | 2017-07-11 | 2017-12-01 | 北京泛融科技有限公司 | 一种基于随机相关性分析的优化共识方法 |
CN108241926A (zh) * | 2017-08-25 | 2018-07-03 | 杭州复杂美科技有限公司 | 授权共识算法的区块链方案 |
CN108270780A (zh) * | 2018-01-08 | 2018-07-10 | 中国电子科技集团公司第三十研究所 | 一种异构网络环境多中心数字身份管理方法 |
CN108492103A (zh) * | 2018-02-07 | 2018-09-04 | 北京大学深圳研究生院 | 一种联盟区块链共识方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109447795A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109447795B (zh) | 一种支持快速达成最终确认性的拜占庭共识方法 | |
Yue et al. | A survey of decentralizing applications via blockchain: The 5G and beyond perspective | |
CN109871669B (zh) | 一种基于区块链技术的数据共享解决方法 | |
Baza et al. | B-ride: Ride sharing with privacy-preservation, trust and fair payment atop public blockchain | |
CN109462587B (zh) | 区块链分层共识方法、区块链网络系统及区块链节点 | |
CN109151013B (zh) | 基于联盟区块链的物流业信息平台 | |
Cui et al. | A decentralized and trusted edge computing platform for Internet of Things | |
Nguyen et al. | Modeling and analysis of data trading on blockchain-based market in IoT networks | |
CN112541758A (zh) | 基于区块链的多轮投票式容错排序共识机制与方法 | |
CN113271204B (zh) | 一种基于量子密钥分发的拜占庭容错共识方法 | |
CN113570357B (zh) | 一种动态分层的高效pbft算法 | |
Mershad et al. | Proof of accumulated trust: A new consensus protocol for the security of the IoV | |
Zhang et al. | Cycledger: A scalable and secure parallel protocol for distributed ledger via sharding | |
CN112651830B (zh) | 应用于电力资源共享网络的区块链共识方法 | |
CN112540926A (zh) | 一种基于区块链的资源分配公平的联邦学习方法 | |
Sun et al. | Rtchain: A reputation system with transaction and consensus incentives for e-commerce blockchain | |
CN114205136A (zh) | 一种基于区块链技术的交通数据资源共享方法及系统 | |
CN115499129A (zh) | 一种多模信任跨链共识方法、系统、介质、设备及终端 | |
Wang et al. | A fast and secured vehicle-to-vehicle energy trading based on blockchain consensus in the internet of electric vehicles | |
CN113923217B (zh) | 一种基于dag的异步拜占庭共识方法及系统 | |
Islam et al. | A comparative analysis of proof-of-authority consensus algorithms: Aura vs Clique | |
CN115174570A (zh) | 一种基于动态委员会的跨链共识方法及系统 | |
Wang et al. | An efficient, secured, and infinitely scalable consensus mechanism for peer-to-peer energy trading blockchain | |
CN114826699B (zh) | 基于区块链的去中心化联邦学习中拜占庭攻击抵御方法 | |
Tang et al. | PSSBP: A privacy-preserving scope-query searchable encryption scheme based on blockchain for parking lots sharing in vehicular networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |