CN113422805A - 一种基于可验证随机函数的分片共识方法 - Google Patents
一种基于可验证随机函数的分片共识方法 Download PDFInfo
- Publication number
- CN113422805A CN113422805A CN202110573395.4A CN202110573395A CN113422805A CN 113422805 A CN113422805 A CN 113422805A CN 202110573395 A CN202110573395 A CN 202110573395A CN 113422805 A CN113422805 A CN 113422805A
- Authority
- CN
- China
- Prior art keywords
- node
- committee
- uid
- value
- leader
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1051—Group master selection mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Mathematical Physics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于区块链技术领域,具体涉及一种基于可验证随机函数的分片共识方法。该方法首先在节点进网注册构建网络阶段由服务群组分配权值WEIGHT;然后所有节点选举目录委员会成员,依据WEIGHT判断节点等级并相互通信得到节点身份关系映射表,完成网络分片;不同分片同时进行普通委员会成员选举,并进行普通委员会内部共识;最后如果共识未结束,进入下一时期,进行委员会重配置。通过多委员会分片设计来并行执行交易,提高交易速度及交易吞吐量。委员会选举和重配置过程中,通过可验证随机函数VRF保证节点竞选委员会成员的公平性;由WEIGHT作为VRF的动态输入,采用基于VRF的PoS共识算法解决敌手对重配置过程的偏置问题,降低敌手操纵节点形成恶意攻击的可能性。
Description
技术领域
本发明涉及区块链技术领域,具体涉及一种基于可验证随机函数的分片共识方法。
背景技术
区块链技术是国家重点的前沿研究技术,在不可信环境下,通过对等网络P2P(Peer-to- peer network)和链式数据结构的分布式存储来实现节点对等和数据备份,借助分布式共识机制来确定区块链结构,使用密码学方法来保证数据完整性、不可否认性、保密性及可验证性,利用由自动化脚本代码组成的智能合约来编程和操作数据,它是一种全新的分布式基础架构与计算范式。
共识机制作为区块链技术的基础和核心,是区块链的安全性、可扩展性和去中心化程度等许多重要特性的决定性因素。随着共识机制的发展,将现有的共识机制分为经典分布式共识和区块链共识。经典分布式共识主要包括拜占庭容错算法BFT(ByzantineFault Tolerance)及其扩展算法,区块链共识算法更多涉及基于工作量证明的共识算法PoW (Proof of Work)和基于权益证明的共识算法PoS(Proof of Stake)。其中,实用拜占庭协议 PBFT(Practical Byzantine Fault Tolerance)最大优势在于对拜占庭节点的可容错性,但它是一个多项式复杂度的算法,节点过多时性能急骤下降;基于工作量证明的共识机制PoW保证了各节点的公平性竞争,但需要耗费大量的算力;基于权益证明的共识机制PoS解决了能源消耗问题,但更容易被敌手腐化,造成权利的集中化,违背了区块链去中心化的原则。所以在此基础上,将经典分布式共识与区块链共识相结合的混合共识机制应运而生。中国专利 CN111445241A提出了一种结合PoW和PoS的混合共识方法,该共识方法中包括两条区块链,第一条链采用PoW共识出块,第二条链以第一条链的历史数据作为依据,采用PoS共识出块并运行业务逻辑。中国专利CN110855432A公开了一种基于可验证随机函数分配验证者奖励的BFT&POS共识机制,引入“验证者”的角色来参与区块的验证工作,同时设计基于可验证随机函数的奖励分发机制来获得验证奖励。
一系列算法的出现,保证了区块链的安全性、活性、公平性,但随着链长度的增加,交易规模的大幅增大,如何在保证公平性、容错率的基础上,提高交易速度及交易吞吐量是区块链持续发展必须要解决的问题。而混合共识中多委员会的混合共识又称为分片共识,其基本原理为采用PoW或PoS的方式选举特定的委员会,在委员会内部运行经典分布式共识机制来生成区块。它的出现提出了通信分片、计算分片、存储分片的概念,为解决区块链共识算法中的高吞吐率问题提供了一个新思路。但委员会的出现,势必涉及到委员会重配置过程中如何保证其抗偏置性问题。而如何解决该问题也成为分片共识算法的重点研究内容。
发明内容
针对上述存在的问题,本发明在每个节点进网时分配不同的权值WEIGHT,在委员会选举和重配置过程,引入可验证随机函数VRF和WEIGHT,采用基于VRF的PoS共识算法进行设置解决敌手对重配置过程的偏置问题。然后通过对委员会成员选举过程分片设计来并行执行交易,以此提高交易速度及交易吞吐量。
为了实现上述目的,本发明采用的技术方案如下:一种基于可验证随机数的分片共识方法,包括以下步骤:
1)初始化服务群组,构建并初始化节点信息注册表;所述节点信息注册表,用于记录申请入网的节点信息;
2)初始化节点参数,所述节点参数包括权益信息STAKE_INFO、权值WEIGHT、状态位STATUS_BIT、积分值INTEGRAL、错误计数ERROR_COUNT、节点类别NODE_CATE 和节点等级NODE_LEVEL;
3)节点向服务群组申请进网注册,构建区块链网络;
4)选举目录委员会成员;
5)节点进行网络分片;
6)同时选举每个分片的普通委员会成员;
7)选举领导者;
8)普通委员会内部共识;
9)判断共识是否结束,如果共识未结束,进入下一时期,进行委员会重配置,转步骤 4),开始新一时期的委员会共识流程,否则整个共识流程结束。
进一步的,上述步骤1)中所述的节点信息注册表由多个表项组成,每一个节点对应一个表项,每个表项包含如下参数:数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT、节点进网申请注册成功标识IS_SUCCESS、未通过次数FAIL_COUNT、节点黑名单标识IS_BLACKLIST;其中,所述数字身份UID用于标识网络内节点身份;所述数字证书 STAKE_INFO_CERT为节点的数字化证书;所述进网申请注册成功标识IS_SUCCESS为节点申请进网是否成功标识;所述未通过次数FAIL_COUNT为节点申请进网失败的次数;所述节点黑名单标识IS_BLACKLIST为节点被服务群组拉入黑名单的标识位;初始化阶段,节点信息注册表的每一个表项的数字身份UID、节点IP地址、数字证书STAKE_INFO_ CERT参数值为空,进网申请注册成功标识IS_SUCCESS为假;未通过次数FAIL_COUNT 为0;节点黑名单标识IS_BLACKLIST为假。
进一步的,上述步骤2)中,所述权益信息STAKE_INFO为由节点的实体资产权益信息生成的具有证明凭证性质的数字化权益信息;所述权值WEIGHT为服务群组对节点提供的权益信息STAKE_INFO进行的等级评估值,初始值为0;所述状态位STATUS_BIT包括正常、离线、错误3种状态,初始值为离线;所述积分值INTEGRAL为共识流程中奖惩机制具体实施的参数值,初始值为0;所述错误计数ERROR_COUNT为共识流程中节点出错次数,初始值为0;所述节点类别NODE_CATE包括目录委员会成员、普通委员会成员、普通节点3类,初始值为普通节点;节点等级NODE_LEVEL为普通委员会选举时网络分片形成的节点等级,初始值为null。
进一步的,上述步骤3)中节点向服务群组申请进网注册,构建区块链网络,包括如下步骤:
3.1)节点将权益信息STAKE_INFO和IP地址打包成进网注册信息包RI并发送给服务群组;记服务群组收到的最早到达的RI对应的节点为当前节点;
3.2)服务群组根据当前节点的权益信息STAKE_INFO是否符合行业要求对当前节点进行资格审查;如果审查通过,转步骤3.3),否则转步骤3.4);
3.3)服务群组根据节点IP地址生成32位编码的数字身份UID;将数字身份UID、WEIGHT值和数字证书STAKE_INFO_CERT加入节点信息注册表中该节点对应的表项;同时向节点发送“允许进网”的通知,其中,所述“允许进网”通知包括数字身份UID、 WEIGHT值、数字证书STAKE_INFO_CERT;转步骤3.6);
3.4)服务群组向节点发送“拒绝进网”通知,并要求该节点重新提供权益信息STAKE_INFO;同时服务群组将节点信息注册表中该节点对应的表项的未通过次数 FAIL_COUNT加1,转下一步;
3.5)判断FAIL_COUNT是否小于α:如果FAIL_COUNT<α,转步骤3.1);否则服务群组将节点信息注册表中该节点对应的表项的节点黑名单标识IS_BLACKLIST置真,取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2);其中,具体实施中,取α为10;
3.6)节点收到进网通知后,将通知中UID、STAKE_INFO_CERT和WEIGHT值在本地储存,用RSA算法生成密钥对(pk,sk),并将STATUS_BIT设置为正常状态;
3.7)当有N个节点通过服务群组审查,将此N个节点作为参与共识的节点,构建区块链网络,转步骤4);否则取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2)。
进一步的,上述步骤4)中选举目录委员会成员,包括如下步骤:
4.1)每个节点分别计算目录票据值cata_value,计算公式如下:
其中,uid表示节点数字身份UID;v表示视图;e表示时期,协议以时期为单位运行;VRF(·)表示可验证随机函数;catalog代表选举的为目录委员会成员;ξe-1代表上一时期产生的随机数,最初的随机数ξ0由协议给定;weight为节点向服务群组申请进网注册中获取的 WEIGHT值;sk为节点自身的私钥,表示节点uid使用自身私钥sk对VRF(·)进行签名;
4.2)每个节点根据目录票据值cata_value进行哈希计算生成目录随机数 rand_cata_valueuid;v;e;计算公式如下:
rand_cata_valueuid;v;e=H(cata_valueuid;v;e),
其中,H(·)为哈希函数;
4.3)选择目录委员会成员备选,即最快满足rand_cata_valueuid;v;e≤pl的节点为目录委员会成员备选,其中pl为难度系数;并将该节点设为当前节点;
4.4)当前节点在本地缓存中建立并保存目录委员会列表DC_LIST,将节点信息添加入表DC_LIST中,并将DC_LIST、节点数字身份UID和节点IP地址打包成消息向全网广播;
4.5)其他节点收到目录委员会成员备选节点广播的消息后,将消息中数字身份UID向服务群组进行验证,所述验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等,若两者相等,表示验证通过,节点将在本地保存目录委员会列表DC_LIST,并向目录委员会成员备选返回“验证通过”的消息,若两者不相等,表示验证未通过,将不返回任何消息;
4.6)判断目录委员会成员备选是否为目录委员会成员,所述判断方法为:若时间δ内,目录委员会成员备选收到N-f条“验证通过”的消息(f为拜占庭节点数量),将该节点的节点类别NODE_CATE设置为目录委员会成员,增加该节点的权值WEIGHT和积分值INTEGRAL,在本地建立并保存节点身份关系映射表NIRM_TABLE,并将目录委员会列表 DC_LIST中本节点信息添加入该表中;转步骤5);否则减少该节点积分值INTEGRAL;依据时间顺序选择下一个计算出满足公式rand_cata_valueuid;v;e≤pi的节点,把该节点选中为目录委员会成员备选,并设为当前节点,转步骤4.4),直至选举出目录委员会成员。
进一步的,上述步骤5)中节点进行网络分片,包括如下步骤:
5.1)每个非目录委员会成员设定节点等级NODE_LEVEL,并打包成消息Level_info发送给目录委员会成员;所述节点等级NODE_LEVEL的设定方法是:权值WEIGHT满足 weight<α0的节点等级NODE_LEVEL为level0;WEIGHT值满足αi-1≤weight<αi的节点等级NODE_LEVEL为level(i),其中0<i≤n-2;WEIGHT值满足αn-2≤weight的节点等级 NODE_LEVEL为level(n-1);所述消息Level_info包括节点IP地址、数字身份UID和节点等级NODE_LEVEL;
5.2)目录委员会成员收集非目录委员会成员节点返回的消息Level_info,把消息内容添加到节点身份关系映射表NIRM_TABLE中;
5.3)判断时间δ内,目录委员会成员收集到的消息个数是否满足n(w+1)≤λ≤N-1且每一等级NODE_LEVEL的节点个数是否大于等于β,如果满足得到n个网络分片的节点身份关系映射表NIRM_TABLE,然后将该列表进行全网广播,转步骤5.4);否则将目录委员会成员收集非目录委员会成员节点返回消息的时间间隔δ设定为δ+δ',转步骤5.2);其中,n为分片数量,λ为消息个数,w为普通委员会成员个数;具体实施中,取β为4;
5.4)每个节点在接收到节点身份关系映射表NIRM_TABLE后,在本地保存该表;并按表中节点IP地址进行相互通信来进行组网,完成网络分片。
进一步的,上述步骤6)中选举分片的普通委员会成员,包括如下步骤:
6.1)计算分片内每个节点的普通票据值nor_value,计算公式如下:
其中,normal代表选举的为普通委员会成员;
6.2)利用哈希计算生成每个节点的普通随机数rand_nor_valueuid;v;e,计算公式如下:
rand_nor_valueuid;v;e=H(nor_valueuid;v;e);
6.4)当前节点将数字身份UID和节点IP地址打包成普通委员会成员选举消息向全网广播;
6.5)其他节点收到普通委员会成员备选广播的消息后,分别将消息中数字身份UID向服务群组进行验证,所述验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等,若两者相等,表示验证通过,节点将向普通委员会成员备选返回“验证通过”的消息,否则,验证未通过,将不返回任何消息;
6.6)判断普通委员会成员备选是否为普通委员会成员,如果是普通委员会成员转步骤 6.7),否则转步骤6.9);其中,判断方法为:时间δ内,如果当前节点收到N-f条“验证通过”的消息,则当前节点是普通委员会成员;否则,当前节点不是普通委员会成员;f为恶意节点数量;
6.7)将当前节点的节点类别NODE_CATE设置为普通委员会成员,增加该节点的权值WEIGHT和节点积分值INTEGRAL,同时,将该节点的IP地址、数字身份UID和节点类别NODE_CATE发送给目录委员会成员;
6.10)每个委员会成员向目录委员会成员发送数字身份UID、节点等级NODE_LEVEL和节点类别NODE_CATE;
6.11)目录委员会成员收到来自普通委员会的信息,更新节点身份关系映射表NIRM_TABLE。
进一步的,上述步骤7)中选举领导者包括如下步骤:
7.1)从时期e=0为开始,计算每个普通委员会成员的票据值ticketuid;e;v,计算公式为:
7.2)选出ticketuid;e;v值最高的节点作为领导者备选;
7.3)领导者备选启动可验证随机函数VRF的生成算法,生成本轮随机数ξr,并向普通委员会内所有成员进行广播;
7.4)普通委员会成员收到消息后通过可验证随机函数VRF中的验证算法验证随机数ξr是否生成正确,若生成正确,返回证明凭证,转下一步;否则,不返回任何消息,转下一步;
7.5)领导者备选判断其是否可以成为领导者,所述判断方法为:在时间δ内,若领导者备选收集到N-f个证明凭证,则当选为领导者,增加该节点积分值INTEGRAL,在时期e的genesis block区块中保存本时期的随机数为ξr,跳转步骤8);否则视本轮领导者选举失败,减少积分值INTEGRAL,并将错误计数ERROR_COUNT加1,同时,令视图编号 v=v+1,转7.1),开始新一轮领导者选举,直到领导者选举成功。
进一步的,上述步骤8)中普通委员会内部共识,包括如下步骤:
8.1)委员会内成员收集交易,构建待打包出块的交易列表TL,每个节点收集交易数据,放到自身的交易缓冲区中,每一轮共识运行前,节点取出缓冲区中的前S个交易,组成待打包出块的交易列表TL;
8.2)leader节点向分片内replica节点发送出块者提案并取得共识;所述Leader为领导者节点和replica为副本节点,普通委员会内除leader节点外的所有节点都可以作为副本节点。
进一步的,上述步骤8.2)中共识过程包括如下步骤:
8.2.1)从视图编号v=0开始,分别计算每个replica节点的value值,生成仲裁凭证AC (Arbitration Certificate)和准备凭证PC(Prepare Certificate);并将value、AC和PC打包成新视图消息发送给leader节点;其中,所述value值计算公式如下:
AC关联视图信息,表明该视图是否获得了足够多副本的认可;
8.2.2)leader节点在接收到N-f个新视图消息后,从编号最大的视图v所对应的节点中,随机选择一个节点设为当前节点;
8.2.3)比较当前节点的视图编号与leader节点所在的视图编号是否相差1并且当前节点新视图消息中的value值是否满足valueuid;e;v≤pτ条件,其中pτ为难度系数,如果同时满足以上两个条件,当前节点是候选出块者节点,转步骤8.2.4);否则,当前节点不是候选出块者节点,转步骤8.2.4);
8.2.4)判断视图v所对应的所有节点是否比较结束,如果结束转步骤8.2.5),否则,从视图v所对应的节点中,重新随机选择一个不同节点设为当前节点,转步骤8.2.3);
8.2.5)leader节点根据候选出块者节点生成提案listProposal,即候选出块者节点列表;
8.2.6)leader节点将视图编号最大的仲裁凭证AC记为highAC,然后将listProposal、 highAC封装为prepare类型的消息MSG(PREPARE,listProposal,highAC)发送给replica节点;
8.2.7)replica节点对收到的prepare类型消息进行安全性检测校验,并进行listProposal 提案投票并向leader节点返回投票信息voteMSG(PREPARE,m.node,curView),其中m.node 为listProposal提案投票结果;同时将本地的prepareAC赋值为highAC,即最近的视图信息;
8.2.8)leader节点收集replica节点的回复消息,当leader收到N-f个当前提案的投票时,将它们合并为prepareAC(v),并封装commit消息MSG(COMMIT,prepareAC(v))向全网广播,转步骤8.2.9),否则,转步骤8.2.6);
8.2.9)replica节点收到commit消息并向leader节点发送对commit的投票消息voteMSG(COMMIT,m.node,curView);
8.2.10)当leader节点收到N-f个commit的选票时,将收到的选票合并成一个commitAC(v);然后leader节点整合commitAC(v)中的投票信息,选出出块节点,并向该节点发送可以出块的消息,转步骤8.2.11);否则,转步骤8.2.9);
8.2.11)出块节点将交易列表TL打包出块,并成功上链,在本地中记录区块BN并发送给leader节点;
8.2.12)leader节点封装decide消息MSG(DECIDE,commitAC(v))将其发送给replica节点;
8.2.13)replica节点在收到decide消息时,将commitAC中包含的提案视图视为已提交的决策,并在本地增加新节点信息,然后增加viewNumber(即令v=v+1)并启动下一个视图,重复步骤8),直到下一时期。
本发明有益效果:在委员会成员选举中通过VRF生成一个真正随机而且无法被预测的值,保证了节点竞选委员会成员的公平性,降低敌手操纵节点形成恶意攻击的可能性。通过多委员会分片设计来并行执行交易,并采用VRF与PoS相结合的片内共识算法,使得算法功耗较低,但验证较为容易,以此提高交易速度及交易吞吐量。委员会重置过程在实现公平性基础上,引入WEIGHT作为VRF的动态输入,使新节点尽量替换掉原本委员会中不活跃的节点,提高共识效能。
附图说明
图1基于可验证随机函数的分片共识方法流程图。
具体实施方式
下面结合附图以及具体实施例对本发明作进一步的说明,需要指出的是,下面仅以一种最优化的技术方案对本发明的技术方案以及设计原理进行详细阐述,但本发明的保护范围并不限于此。
所述实施例为本发明的优选的实施方式,但本发明并不限于上述实施方式,在不背离本发明的实质内容的情况下,本领域技术人员能够做出的任何显而易见的改进、替换或变型均属于本发明的保护范围。
一种基于可验证随机函数的分片共识方法流程如图1所示,包括如下步骤:
1)初始化服务群组,构建并初始化节点信息注册表。
服务群组构建节点信息注册表,用于记录申请入网的节点信息。每一个节点对应一个表项,每个表项包含如下参数:数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT、节点进网申请注册成功标识IS_SUCCESS、未通过次数FAIL_COUNT、节点黑名单标识IS_BLACKLIST。其中,数字身份UID用于标识网络内节点身份;数字证书 STAKE_INFO_CERT为节点的数字化证书;进网申请注册成功标识IS_SUCCESS为节点申请进网是否成功标识,在本发明具体实施例中,IS_SUCCESS为1表示节点进网注册成功、为-1时表示节点进网注册失败,初始值为-1;未通过次数FAIL_COUNT为节点申请进网失败的次数,默认为0;节点黑名单标识IS_BLACKLIST为节点被服务群组拉入黑名单的标识位,在本发明具体实施例中,IS_BLACKLIST为1表示节点被服务群组拉入黑名单、为-1 时表示节点未被服务群组拉入黑名单。开始时,节点信息注册表的每一个表项的数字身份 UID、节点IP地址、数字证书STAKE_INFO_CERT参数值为空,进网申请注册成功标识 IS_SUCCESS为假;未通过次数FAIL_COUNT为0;节点黑名单标识IS_BLACKLIST为假。
2)初始化节点参数。
初始化节点参数。其中,节点参数包括权益信息STAKE_INFO、权值WEIGHT、状态位STATUS_BIT、积分值INTEGRAL、错误计数ERROR_COUNT、节点类别NODE_CATE 和节点等级NODE_LEVEL。权益信息STAKE_INFO为由节点的实体资产权益信息生成的具有证明凭证性质的数字化权益信息;权值WEIGHT为服务群组对节点提供的权益信息 STAKE_INFO进行的等级评估值,范围为0-100,初始值为0;状态位STATUS_BIT包括正常、离线、错误3种状态,初始值为离线,在本发明具体实施例中,状态位STATUS_BIT 为1表示正常状态、为-1时表示离线状态、为2时表示错误状态;积分值INTEGRAL为共识流程中奖惩机制具体实施的参数值,初始默认为0;错误计数ERROR_COUNT为共识流程中节点出错次数,初始默认为0;节点类别NODE_CATE包括目录委员会成员、普通委员会成员、普通节点3类,在本发明具体实施例中,NODE_CATE为2时表示目录委员会成员、为1时表示普通委员会成员、为0时表示普通节点,初始值为0;节点等级 NODE_LEVEL为普通委员会选举时网络分片形成的节点等级,初始值为null。
3)节点向服务群组申请进网注册,构建区块链网络。作为本发明的优选实施例,包括如下步骤:
3.1)节点将权益信息STAKE_INFO和IP地址打包成进网注册信息包RI并发送给服务群组;记服务群组收到的最早到达的RI对应的节点为当前节点;
3.2)服务群组根据当前节点的权益信息STAKE_INFO是否符合行业要求对当前节点进行资格审查;如果审查通过,转步骤3.3),否则转步骤3.4);
3.3)服务群组根据节点IP地址生成32位编码的数字身份UID;将数字身份UID、WEIGHT值和数字证书STAKE_INFO_CERT加入节点信息注册表中该节点对应的表项;同时向节点发送“允许进网”的通知,其中“允许进网”通知中包括数字身份UID、WEIGHT 值、数字证书STAKE_INFO_CERT;转步骤3.6);
3.4)服务群组向节点发送“拒绝进网”通知,并要求该节点重新提供权益信息STAKE_INFO;同时服务群组将节点信息注册表中该节点对应的表项的未通过次数 FAIL_COUNT加1,转下一步;
3.5)判断FAIL_COUNT是否小于α:如果FAIL_COUNT<α,转步骤3.1);否则服务群组将节点信息注册表中该节点对应表项的节点黑名单标识IS_BLACKLIST置真,表示该节点在之后的进网申请中,其IP地址将被服务群组屏蔽,即节点黑名单标识 IS_BLACKLIST设置为节点被服务群组拉入黑名单,具体实施中,用1表示。取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2);其中,具体实施中,取α为 10;
3.6)节点收到进网通知后,将通知中UID、STAKE_INFO_CERT和WEIGHT值在本地储存,用RSA算法生成密钥对(pk,sk),并将STATUS_BIT设置为正常状态,具体实施中,用1表示;
3.7)当有N个节点通过服务群组审查,将此N个节点作为参与共识的节点,构建区块链网络,转步骤4);否则取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2)。
4)选举目录委员会成员,作为本发明的优选实施例,包括如下步骤:
4.1)每个节点分别计算目录票据值cata_value,具体计算公式如下所示:其中,uid表示节点数字身份UID;v表示视图;e表示时期,协议以时期为单位运行;VRF(·)表示可验证随机函数;catalog代表选举的为目录委员会成员;ξe-1代表上一时期产生的随机数,最初的随机数ξ0由协议给定;weight为节点向服务群组申请进网注册中获取的WEIGHT值;sk为节点自身的私钥,表示节点uid使用自身私钥sk对VRF(·)进行签名;
4.2)每个节点根据目录票据值cata_value进行哈希计算生成目录随机数 rand_cata_valueuid;v;e。计算公式为:rand_cata_valueuid;v;e=H(cata_valueuid;v;e),其中, H(·)为哈希函数;
4.3)选择目录委员会成员备选,即最快满足rand_cata_valueuid;v;e≤pl的节点为目录委员会成员备选,其中pι为难度系数;并将该节点设为当前节点;
4.4)当前节点在本地缓存中建立并保存目录委员会列表DC_LIST,将节点信息添加入表DC_LIST中,并将DC_LIST、节点数字身份UID和节点IP地址打包成消息向全网广播;
4.5)其他节点收到目录委员会成员备选节点广播的消息后,将消息中数字身份UID向服务群组进行验证,验证方式为:节点向服务群组获取消息中节点IP地址对应的数字身份 UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等。若两者相等,表示验证通过,节点将在本地保存目录委员会列表DC_LIST,并向目录委员会成员备选返回“验证通过”的消息。若两者不相等,表示验证未通过,将不返回任何消息;
4.6)判断目录委员会成员备选是否为目录委员会成员,判断方法为:若时间δ内,目录委员会成员备选收到N-f条“验证通过”的消息(f为拜占庭节点数量),则表明该节点当选为目录委员会成员,将该节点的节点类别NODE_CATE设置为目录委员会成员,在本发明的具体实施例中,用2表示;增加该节点的权值WEIGHT和积分值INTEGRAL,具体实施中,WEIGHT加2,INTEGRAL加15;在本地建立并保存节点身份关系映射表 NIRM_TABLE,并将目录委员会列表DC_LIST中本节点信息添加入该表中;转步骤5)。若时间δ内未收到N-f条“验证通过”的消息,表明节点选举目录委员会成员失败,减少该节点积分值INTEGRAL,具体实施中,INTEGRAL减15;依据时间顺序选择下一个计算出满足公式rand_cata_valueuid;v;e≤pl的节点,把该节点选中为目录委员会成员备选,并设为当前节点,转步骤4.4),直至选举出目录委员会成员。
5)节点进行网络分片,作为本发明的优选实施例,包括如下步骤:
5.1)每个非目录委员会成员设定节点等级NODE_LEVEL,并打包成消息Level_info发送给目录委员会成员。其中,节点等级NODE_LEVEL的设定方法是:权值WEIGHT满足weight<α0的节点等级NODE_LEVEL为level0;WEIGHT值满足αi-1≤weight<αi的节点等级NODE_LEVEL为level(i),其中0<i≤n-2;WEIGHT值满足αn-2≤weight的节点等级 NODE_LEVEL为level(n-1);具体实施中,分别用0,1,...,n-1表示level0,level1,..., level(n-1);消息Level_info包括节点IP地址、数字身份UID和节点等级NODE_LEVEL;
5.2)目录委员会成员收集非目录委员会成员节点返回的消息Level_info,把消息内容添加到节点身份关系映射表NIRM_TABLE中;
5.3)判断时间δ内,目录委员会成员收集到的消息个数是否满足n(w+1)≤λ≤N-1且每一等级NODE_LEVEL的节点个数是否大于等于β,如果满足得到n个网络分片的节点身份关系映射表NIRM_TABLE,然后将该列表进行全网广播,转步骤5.4);否则将目录委员会成员收集非目录委员会成员节点返回消息的时间间隔δ设定为δ+δ',转步骤5.2);其中,n为分片数量,λ为消息个数,w为普通委员会成员个数;作为本发明的优选实施例,取β为4;
5.4)每个节点在接收到节点身份关系映射表NIRM_TABLE后,在本地保存该表;并按表中节点IP地址进行相互通信来进行组网,完成网络分片。
6)同时选举每个分片的普通委员会成员。
每一分片内节点分别进行普通委员会成员的选举,n个分片在一个时期内并行运行。整个协议以时期为单位运行,同一时期分为不同的轮次。每一分片内普通委员会成员的选举过程类似,在此,以level0等级的普通委员会成员选举为例,作为本发明的优选实施例,选举分片的普通委员会成员包括如下步骤:
6.2)利用哈希计算生成每个节点的普通随机数rand_nor_valueuid;v;e,计算公式为: rand_nor_valueuid;v;e=H(nor_valueuid;v;e);
6.4)当前节点将数字身份UID和节点IP地址打包成普通委员会成员选举消息向全网广播;
6.5)其他节点收到普通委员会成员备选广播的消息后,分别将消息中数字身份UID向服务群组进行验证,验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份 UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等。若两者相等,表示验证通过,节点将向普通委员会成员备选返回“验证通过”的消息。若两者不相等,表示验证未通过,将不返回任何消息;
6.6)判断普通委员会成员备选是否为普通委员会成员,如果是普通委员会成员转步骤 6.7),否则转步骤6.9);其中,判断方法为:时间δ内,如果当前节点收到N-f条“验证通过”的消息,则当前节点是普通委员会成员;否则,当前节点不是普通委员会成员;f为恶意节点数量;
6.7)将当前节点的节点类别NODE_CATE设置为普通委员会成员,在本发明的具体实施例中,用1表示;增加该节点的权值WEIGHT和积分值INTEGRAL,具体实施中, WEIGHT加1,INTEGRAL加10;同时,将该节点的IP地址、数字身份UID和节点类别 NODE_CATE发送给目录委员会成员;
6.10)每个委员会成员向目录委员会成员发送数字身份UID、节点等级NODE_LEVEL和节点类别NODE_CATE;
6.11)目录委员会成员收到来自普通委员会的信息,更新节点身份关系映射表NIRM_TABLE。
7)选举领导者,作为本发明的优选实施例,包括如下步骤:
7.1)从时期e=0为开始,计算每个普通委员会成员的票据值ticketuid;e;v,计算公式为 代表可验证随机函数,leader 为VRF的附加输入,表示本次计算的目的是选择领导者,{U1,...,Uw}e代表时期e内的w个普通委员会成员,v代表视图编号,uid表示节点数字身份UID;
7.2)选出ticketuid;e;v值最高的节点作为领导者备选;
7.3)领导者备选启动可验证随机函数VRF的生成算法,生成本轮随机数ξr,并向普通委员会内所有成员进行广播;
7.4)普通委员会成员收到消息后通过可验证随机函数VRF中的验证算法验证随机数ξr是否生成正确。若生成正确,返回证明凭证,转下一步;否则,不返回任何消息,转下一步;
7.5)领导者备选判断其是否可以成为领导者,判断方法为:在时间δ内,若领导者备选收集到N-f个证明凭证,则当选为领导者,增加该节点积分值INTEGRAL,具体实施中,INTEGRAL加5;在时期e的genesis block区块中保存本时期的随机数为ξr;跳转步骤 8);否则视本轮领导者选举失败,减少积分值INTEGRAL,并将错误计数ERROR_COUNT 加1,具体实施中,INTEGRAL减5;同时,令视图编号v=v+1,转7.1),开始新一轮领导者选举,直到领导者选举成功。
8)普通委员会内部共识,作为本发明的优选实施例,包括如下步骤:
本案例假设每一轮共识就交易量为S的数据运行普通委员会内部共识。普通委员会成员包括一个领导者节点leader和副本节点replica,普通委员会内除leader节点外的所有节点都可以作为副本节点。
8.1)委员会内成员收集交易,构建待打包出块的交易列表TL(TransactionList)。每个节点收集交易数据,放到自身的交易缓冲区中,每一轮共识运行前,节点取出缓冲区中的前 S个交易,组成待打包出块的交易列表TL。
8.2)leader节点向分片内replica节点发送出块者提案并取得共识。Leader为领导者节点和replica为副本节点,普通委员会内除leader节点外的所有节点都可以作为副本节点;该过程可以看作一个视图,类比于状态机的一次转移过程,其中包含了这次转移中需要执行的命令及关键信息(交易列表TL、出块者序号i及生成的区块编号BN(Block_Number))。整个分布式系统就是通过一次又一次的视图转换,逐轮推进运作。作为本发明的优选实施例,时期e、视图v内的共识过程包括如下步骤:
8.2.1)从视图编号v=0开始,分别计算每个replica节点的value值,生成仲裁凭证AC (Arbitration Certificate)和准备凭证PC(Prepare Certificate);并将value、AC和PC打包成新视图消息发送给leader节点;其中,value值计算公式如下AC关联视图信息,表明该视图是否获得了足够多副本的认可;
8.2.2)leader节点在接收到N-f个新视图消息后,从编号最大的视图v所对应的节点中,随机选择一个节点设为当前节点;
8.2.3)比较当前节点的视图编号与leader节点所在的视图编号是否相差1并且当前节点新视图消息中的value值是否满足valueuid;e;v≤pτ条件,其中pτ为难度系数,如果同时满足以上两个条件,当前节点是候选出块者节点,转步骤8.2.4);否则,当前节点不是候选出块者节点,转步骤8.2.4);
8.2.4)判断视图v所对应的所有节点是否比较结束,如果结束转步骤8.2.5),否则,从视图v所对应的节点中,重新随机选择一个不同节点设为当前节点,转步骤8.2.3);
8.2.5)leader节点根据候选出块者节点生成提案listProposal,即候选出块者节点列表;
8.2.6)leader节点将视图编号最大的仲裁凭证AC记为highAC,然后将listProposal、 highAC封装为prepare类型的消息MSG(PREPARE,listProposal,highAC)发送给replica节点;
8.2.7)replica节点对收到的prepare类型消息进行安全性检测校验,并进行listProposal 提案投票并向leader节点返回投票信息voteMSG(PREPARE,m.node,curView),其中m.node 为listProposal提案投票结果。同时将本地的prepareAC赋值为highAC,即最近的视图信息;
8.2.8)leader节点收集replica节点的回复消息。当leader收到N-f个当前提案的投票时,将它们合并为prepareAC(v),并封装commit消息MSG(COMMIT,prepareAC(v))向全网广播,转步骤8.2.9),否则,转步骤8.2.6);
8.2.9)replica节点收到commit消息并向leader节点发送对commit的投票消息voteMSG(COMMIT,m.node,curView);
8.2.10)当leader节点收到N-f个commit的选票时,将收到的选票合并成一个commitAC(v)。然后leader节点整合commitAC(v)中的投票信息,选出出块节点,并向该节点发送可以出块的消息,转步骤8.2.11);否则,转步骤8.2.9);
8.2.11)出块节点将交易列表TL打包出块,并成功上链,在本地中记录区块BN并发送给leader节点;
8.2.12)leader节点封装decide消息MSG(DECIDE,commitAC(v))将其发送给replica节点;
8.2.13)replica节点在收到decide消息时,将commitAC中包含的提案视图视为已提交的决策,并在本地增加新节点信息。然后增加viewNumber(即令v=v+1)并启动下一个视图。重复步骤8),直到下一时期。
9)时期e结束时,判断共识是否结束,如果共识未结束,令e=e+1,进行委员会重配置,转步骤4),开始新一时期的委员会共识流程。否则整个共识流程结束。
Claims (10)
1.一种基于可验证随机函数的分片共识方法,其特征在于,包括如下步骤:
1)初始化服务群组,构建并初始化节点信息注册表;所述节点信息注册表,用于记录申请入网的节点信息;
2)初始化节点参数,所述节点参数包括权益信息STAKE_INFO、权值WEIGHT、状态位STATUS_BIT、积分值INTEGRAL、错误计数ERROR_COUNT、节点类别NODE_CATE和节点等级NODE_LEVEL;
3)节点向服务群组申请进网注册,构建区块链网络;
4)选举目录委员会成员;
5)节点进行网络分片;
6)同时选举每个分片的普通委员会成员;
7)选举领导者;
8)普通委员会内部共识;
9)判断共识是否结束,如果共识未结束,进入下一时期,进行委员会重配置,转步骤4),开始新一时期的委员会共识流程,否则整个共识流程结束。
2.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤1)中所述的节点信息注册表由多个表项组成,每一个节点对应一个表项,每个表项包含如下参数:数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT、节点进网申请注册成功标识IS_SUCCESS、未通过次数FAIL_COUNT、节点黑名单标识IS_BLACKLIST;其中,所述数字身份UID用于标识网络内节点身份;所述数字证书STAKE_INFO_CERT为节点的数字化证书;所述进网申请注册成功标识IS_SUCCESS为节点申请进网是否成功标识;所述未通过次数FAIL_COUNT为节点申请进网失败的次数;所述节点黑名单标识IS_BLACKLIST为节点被服务群组拉入黑名单的标识位;初始化阶段,节点信息注册表的每一个表项的数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT参数值为空,进网申请注册成功标识IS_SUCCESS为假;未通过次数FAIL_COUNT为0;节点黑名单标识IS_BLACKLIST为假。
3.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤2)中,所述权益信息STAKE_INFO为由节点的实体资产权益信息生成的具有证明凭证性质的数字化权益信息;所述权值WEIGHT为服务群组对节点提供的权益信息STAKE_INFO进行的等级评估值,初始值为0;所述状态位STATUS_BIT包括正常、离线、错误3种状态,初始值为离线;所述积分值INTEGRAL为共识流程中奖惩机制具体实施的参数值,初始值为0;所述错误计数ERROR_COUNT为共识流程中节点出错次数,初始值为0;所述节点类别NODE_CATE包括目录委员会成员、普通委员会成员、普通节点3类,初始值为普通节点;节点等级NODE_LEVEL为普通委员会选举时网络分片形成的节点等级,初始值为null。
4.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤3)中节点向服务群组申请进网注册,构建区块链网络,包括如下步骤:
3.1)节点将权益信息STAKE_INFO和IP地址打包成进网注册信息包RI并发送给服务群组;记服务群组收到的最早到达的RI对应的节点为当前节点;
3.2)服务群组根据当前节点的权益信息STAKE_INFO是否符合行业要求对当前节点进行资格审查;如果审查通过,转步骤3.3),否则转步骤3.4);
3.3)服务群组根据节点IP地址生成32位编码的数字身份UID;将数字身份UID、WEIGHT值和数字证书STAKE_INFO_CERT加入节点信息注册表中该节点对应的表项;同时向节点发送“允许进网”的通知,其中,所述“允许进网”通知包括数字身份UID、WEIGHT值、数字证书STAKE_INFO_CERT;转步骤3.6);
3.4)服务群组向节点发送“拒绝进网”通知,并要求该节点重新提供权益信息STAKE_INFO;同时服务群组将节点信息注册表中该节点对应的表项的未通过次数FAIL_COUNT加1,转下一步;
3.5)判断FAIL_COUNT是否小于α:如果FAIL_COUNT<α,转步骤3.1);否则服务群组将节点信息注册表中该节点对应的表项的节点黑名单标识IS_BLACKLIST置真,取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2);其中,具体实施中,取α为10;
3.6)节点收到进网通知后,将通知中UID、STAKE_INFO_CERT和WEIGHT值在本地储存,用RSA算法生成密钥对(pk,sk),并将STATUS_BIT设置为正常状态;
3.7)当有N个节点通过服务群组审查,将此N个节点作为参与共识的节点,构建区块链网络,转步骤4);否则取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2)。
5.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤4)中选举目录委员会成员,包括如下步骤:
4.1)每个节点分别计算目录票据值cata_value,计算公式如下:
其中,uid表示节点数字身份UID;v表示视图;e表示时期,协议以时期为单位运行;VRF(·)表示可验证随机函数;catalog代表选举的为目录委员会成员;ξe-1代表上一时期产生的随机数,最初的随机数ξ0由协议给定;weight为节点向服务群组申请进网注册中获取的WEIGHT值;sk为节点自身的私钥,表示节点uid使用自身私钥sk对VRF(·)进行签名;
4.2)每个节点根据目录票据值cata_value进行哈希计算生成目录随机数rand_cata_valueuid;v;e;计算公式如下:
rand_cata_valueuid;v;e=H(cata_valueuid;v;e),
其中,H(·)为哈希函数;
4.3)选择目录委员会成员备选,即最快满足rand_cata_valueuid;v;e≤pι的节点为目录委员会成员备选,其中pι为难度系数;并将该节点设为当前节点;
4.4)当前节点在本地缓存中建立并保存目录委员会列表DC_LIST,将节点信息添加入表DC_LIST中,并将DC_LIST、节点数字身份UID和节点IP地址打包成消息向全网广播;
4.5)其他节点收到目录委员会成员备选节点广播的消息后,将消息中数字身份UID向服务群组进行验证,所述验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等,若两者相等,表示验证通过,节点将在本地保存目录委员会列表DC_LIST,并向目录委员会成员备选返回“验证通过”的消息,若两者不相等,表示验证未通过,将不返回任何消息;
4.6)判断目录委员会成员备选是否为目录委员会成员,所述判断方法为:若时间δ内,目录委员会成员备选收到N-f条“验证通过”的消息(f为拜占庭节点数量),将该节点的节点类别NODE_CATE设置为目录委员会成员,增加该节点的权值WEIGHT和积分值INTEGRAL,在本地建立并保存节点身份关系映射表NIRM_TABLE,并将目录委员会列表DC_LIST中本节点信息添加入该表中;转步骤5);否则减少该节点积分值INTEGRAL;依据时间顺序选择下一个计算出满足公式rand_cata_valueuid;v;e≤pι的节点,把该节点选中为目录委员会成员备选,并设为当前节点,转步骤4.4),直至选举出目录委员会成员。
6.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤5)中节点进行网络分片,包括如下步骤:
5.1)每个非目录委员会成员设定节点等级NODE_LEVEL,并打包成消息Level_info发送给目录委员会成员;所述节点等级NODE_LEVEL的设定方法是:权值WEIGHT满足weight<α0的节点等级NODE_LEVEL为level0;WEIGHT值满足αi-1≤weight<αi的节点等级NODE_LEVEL为level(i),其中0<i≤n-2;WEIGHT值满足αn-2≤weight的节点等级NODE_LEVEL为level(n-1);所述消息Level_info包括节点IP地址、数字身份UID和节点等级NODE_LEVEL;
5.2)目录委员会成员收集非目录委员会成员节点返回的消息Level_info,把消息内容添加到节点身份关系映射表NIRM_TABLE中;
5.3)判断时间δ内,目录委员会成员收集到的消息个数是否满足n(w+1)≤λ≤N-1且每一等级NODE_LEVEL的节点个数是否大于等于β,如果满足得到n个网络分片的节点身份关系映射表NIRM_TABLE,然后将该列表进行全网广播,转步骤5.4);否则将目录委员会成员收集非目录委员会成员节点返回消息的时间间隔δ设定为δ+δ',转步骤5.2);其中,n为分片数量,λ为消息个数,w为普通委员会成员个数;具体实施中,取β为4;
5.4)每个节点在接收到节点身份关系映射表NIRM_TABLE后,在本地保存该表;并按表中节点IP地址进行相互通信来进行组网,完成网络分片。
7.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤6)中选举分片的普通委员会成员,包括如下步骤:
6.1)计算分片内每个节点的普通票据值nor_value,计算公式如下:
其中,normal代表选举的为普通委员会成员;
6.2)利用哈希计算生成每个节点的普通随机数rand_nor_valueuid;v;e,计算公式如下:
rand_nor_valueuid;v;e=H(nor_valueuid;v;e);
6.4)当前节点将数字身份UID和节点IP地址打包成普通委员会成员选举消息向全网广播;
6.5)其他节点收到普通委员会成员备选广播的消息后,分别将消息中数字身份UID向服务群组进行验证,所述验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等,若两者相等,表示验证通过,节点将向普通委员会成员备选返回“验证通过”的消息,否则,验证未通过,将不返回任何消息;
6.6)判断普通委员会成员备选是否为普通委员会成员,如果是普通委员会成员转步骤6.7),否则转步骤6.9);其中,判断方法为:时间δ内,如果当前节点收到N-f条“验证通过”的消息,则当前节点是普通委员会成员;否则,当前节点不是普通委员会成员;f为恶意节点数量;
6.7)将当前节点的节点类别NODE_CATE设置为普通委员会成员,增加该节点的权值WEIGHT和节点积分值INTEGRAL,同时,将该节点的IP地址、数字身份UID和节点类别NODE_CATE发送给目录委员会成员;
6.10)每个委员会成员向目录委员会成员发送数字身份UID、节点等级NODE_LEVEL和节点类别NODE_CATE;
6.11)目录委员会成员收到来自普通委员会的信息,更新节点身份关系映射表NIRM_TABLE。
8.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤7)中选举领导者包括如下步骤:
7.1)从时期e=0为开始,计算每个普通委员会成员的票据值ticketuid;e;v,计算公式为:
7.2)选出ticketuid;e;v值最高的节点作为领导者备选;
7.3)领导者备选启动可验证随机函数VRF的生成算法,生成本轮随机数ξr,并向普通委员会内所有成员进行广播;
7.4)普通委员会成员收到消息后通过可验证随机函数VRF中的验证算法验证随机数ξr是否生成正确,若生成正确,返回证明凭证,转下一步;否则,不返回任何消息,转下一步;
7.5)领导者备选判断其是否可以成为领导者,所述判断方法为:在时间δ内,若领导者备选收集到N-f个证明凭证,则当选为领导者,增加该节点积分值INTEGRAL,在时期e的genesis block区块中保存本时期的随机数为ξr,跳转步骤8);否则视本轮领导者选举失败,减少积分值INTEGRAL,并将错误计数ERROR_COUNT加1,同时,令视图编号v=v+1,转7.1),开始新一轮领导者选举,直到领导者选举成功。
9.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤8)中普通委员会内部共识,包括如下步骤:
8.1)委员会内成员收集交易,构建待打包出块的交易列表TL,每个节点收集交易数据,放到自身的交易缓冲区中,每一轮共识运行前,节点取出缓冲区中的前S个交易,组成待打包出块的交易列表TL;
8.2)leader节点向分片内replica节点发送出块者提案并取得共识;所述Leader为领导者节点和replica为副本节点,普通委员会内除leader节点外的所有节点都可以作为副本节点。
10.如权利要求9所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤8.2)中共识过程包括如下步骤:
8.2.1)从视图编号v=0开始,分别计算每个replica节点的value值,生成仲裁凭证AC(Arbitration Certificate)和准备凭证PC(Prepare Certificate);并将value、AC和PC打包成新视图消息发送给leader节点;其中,所述value值计算公式如下:
AC关联视图信息,表明该视图是否获得了足够多副本的认可;
8.2.2)leader节点在接收到N-f个新视图消息后,从编号最大的视图v所对应的节点中,随机选择一个节点设为当前节点;
8.2.3)比较当前节点的视图编号与leader节点所在的视图编号是否相差1并且当前节点新视图消息中的value值是否满足valueuid;e;v≤pτ条件,其中pτ为难度系数,如果同时满足以上两个条件,当前节点是候选出块者节点,转步骤8.2.4);否则,当前节点不是候选出块者节点,转步骤8.2.4);
8.2.4)判断视图v所对应的所有节点是否比较结束,如果结束转步骤8.2.5),否则,从视图v所对应的节点中,重新随机选择一个不同节点设为当前节点,转步骤8.2.3);
8.2.5)leader节点根据候选出块者节点生成提案listProposal,即候选出块者节点列表;
8.2.6)leader节点将视图编号最大的仲裁凭证AC记为highAC,然后将listProposal、highAC封装为prepare类型的消息MSG(PREPARE,listProposal,highAC)发送给replica节点;
8.2.7)replica节点对收到的prepare类型消息进行安全性检测校验,并进行listProposal提案投票并向leader节点返回投票信息voteMSG(PREPARE,m.node,curView),其中m.node为listProposal提案投票结果;同时将本地的prepareAC赋值为highAC,即最近的视图信息;
8.2.8)leader节点收集replica节点的回复消息,当leader收到N-f个当前提案的投票时,将它们合并为prepareAC(v),并封装commit消息MSG(COMMIT,prepareAC(v))向全网广播,转步骤8.2.9),否则,转步骤8.2.6);
8.2.9)replica节点收到commit消息并向leader节点发送对commit的投票消息voteMS(GCOMMIT,m.node,curVi;
8.2.10)当leader节点收到N-f个commit的选票时,将收到的选票合并成一个commitAC(v);然后leader节点整合commitAC(v)中的投票信息,选出出块节点,并向该节点发送可以出块的消息,转步骤8.2.11);否则,转步骤8.2.9);
8.2.11)出块节点将交易列表TL打包出块,并成功上链,在本地中记录区块BN并发送给leader节点;
8.2.12)leader节点封装decide消息MSG(DECIDE,commitAC(v))将其发送给replica节点;
8.2.13)replica节点在收到decide消息时,将commitAC中包含的提案视图视为已提交的决策,并在本地增加新节点信息,然后增加viewNumber(即令v=v+1)并启动下一个视图,重复步骤8),直到下一时期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110573395.4A CN113422805B (zh) | 2021-05-25 | 2021-05-25 | 一种基于可验证随机函数的分片共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110573395.4A CN113422805B (zh) | 2021-05-25 | 2021-05-25 | 一种基于可验证随机函数的分片共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113422805A true CN113422805A (zh) | 2021-09-21 |
CN113422805B CN113422805B (zh) | 2023-04-07 |
Family
ID=77712849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110573395.4A Active CN113422805B (zh) | 2021-05-25 | 2021-05-25 | 一种基于可验证随机函数的分片共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113422805B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643043A (zh) * | 2022-09-09 | 2023-01-24 | 北京航空航天大学 | 一种基于验证延迟函数的跨链共识选举方法及系统 |
CN116567631A (zh) * | 2023-07-06 | 2023-08-08 | 北京航空航天大学 | 一种基于分片区块链的移动终端安全认证方法 |
CN116938951A (zh) * | 2023-09-18 | 2023-10-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 区块链共识方法和系统、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109360100A (zh) * | 2018-11-13 | 2019-02-19 | 北京航空航天大学 | 基于区块链技术的交易快速确认方法及装置 |
CN110400218A (zh) * | 2019-06-05 | 2019-11-01 | 西安电子科技大学 | 基于陪审团制度的分层共识方法、区块链数据处理系统 |
CN111010278A (zh) * | 2019-11-14 | 2020-04-14 | 江苏大学 | 一种基于DPoS高容错分层共识方法 |
CN112511590A (zh) * | 2020-10-26 | 2021-03-16 | 南京辰阔网络科技有限公司 | 一种区块链分片的高效存储重配置方法 |
-
2021
- 2021-05-25 CN CN202110573395.4A patent/CN113422805B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109360100A (zh) * | 2018-11-13 | 2019-02-19 | 北京航空航天大学 | 基于区块链技术的交易快速确认方法及装置 |
CN110400218A (zh) * | 2019-06-05 | 2019-11-01 | 西安电子科技大学 | 基于陪审团制度的分层共识方法、区块链数据处理系统 |
CN111010278A (zh) * | 2019-11-14 | 2020-04-14 | 江苏大学 | 一种基于DPoS高容错分层共识方法 |
CN112511590A (zh) * | 2020-10-26 | 2021-03-16 | 南京辰阔网络科技有限公司 | 一种区块链分片的高效存储重配置方法 |
Non-Patent Citations (1)
Title |
---|
薛惠丹: "基于区块链的数字病历共享方法研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643043A (zh) * | 2022-09-09 | 2023-01-24 | 北京航空航天大学 | 一种基于验证延迟函数的跨链共识选举方法及系统 |
CN115643043B (zh) * | 2022-09-09 | 2024-04-19 | 北京航空航天大学 | 一种基于验证延迟函数的跨链共识选举方法及系统 |
CN116567631A (zh) * | 2023-07-06 | 2023-08-08 | 北京航空航天大学 | 一种基于分片区块链的移动终端安全认证方法 |
CN116567631B (zh) * | 2023-07-06 | 2023-09-15 | 北京航空航天大学 | 一种基于分片区块链的移动终端安全认证方法 |
CN116938951A (zh) * | 2023-09-18 | 2023-10-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 区块链共识方法和系统、电子设备及存储介质 |
CN116938951B (zh) * | 2023-09-18 | 2024-02-13 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 区块链共识方法和系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113422805B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Repchain: A reputation-based secure, fast, and high incentive blockchain system via sharding | |
CN112039964B (zh) | 一种基于区块链的节点信誉共识方法 | |
CN113422805B (zh) | 一种基于可验证随机函数的分片共识方法 | |
CN109842606B (zh) | 基于一致性哈希算法的区块链共识算法和系统 | |
CN109547527B (zh) | 区块链中基于信誉机制的分区快速共识方法 | |
CN111131209B (zh) | 一种改进的高效共识方法、系统、计算机设备及存储介质 | |
Kogias et al. | Enhancing bitcoin security and performance with strong consistency via collective signing | |
CN110351067B (zh) | 针对主从多链的区块链共识方法 | |
CN108881169A (zh) | 基于区块链的时间分发和同步方法及系统、数据处理系统 | |
CN113395363B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN109255713A (zh) | 一种区块链网络中某一时间段内记账权的获取方法 | |
CN112163856A (zh) | 用于区块链与物联网融合场景的共识方法及系统 | |
CN112651830B (zh) | 应用于电力资源共享网络的区块链共识方法 | |
CN113407632A (zh) | 一种基于pbft的委托权益证明区块链共识算法 | |
CN113660125B (zh) | 一种基于随机可信委员会的共识方法及装置 | |
CN113726913B (zh) | 骨干节点接入方法和区块链系统 | |
CN114003584A (zh) | 一种基于演化博弈的拜占庭容错共识方法 | |
Xue et al. | STBC: A novel blockchain-based spectrum trading solution | |
CN115499129A (zh) | 一种多模信任跨链共识方法、系统、介质、设备及终端 | |
Wang et al. | A fast and secured vehicle-to-vehicle energy trading based on blockchain consensus in the internet of electric vehicles | |
CN116996521B (zh) | 基于信任评估模型的中继委员会跨链交互系统及方法 | |
Tang et al. | Hedera: a permissionless and scalable hybrid blockchain consensus algorithm in multi-access edge computing for iot | |
Wang et al. | An efficient, secured, and infinitely scalable consensus mechanism for peer-to-peer energy trading blockchain | |
Drakatos et al. | Adrestus: Secure, scalable blockchain technology in a decentralized ledger via zones | |
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 |