CN115766742A - 区块链共识方法、系统、设备及计算机可读存储介质 - Google Patents
区块链共识方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115766742A CN115766742A CN202211373681.7A CN202211373681A CN115766742A CN 115766742 A CN115766742 A CN 115766742A CN 202211373681 A CN202211373681 A CN 202211373681A CN 115766742 A CN115766742 A CN 115766742A
- Authority
- CN
- China
- Prior art keywords
- node
- node group
- consensus
- nodes
- group
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
区块链共识方法、系统、设备及计算机可读存储介质。本发明实施例涉及区块链技术领域,公开了一种区块链共识方法,方法包括:在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将下一级别节点组的主节点加入当前级别节点组;当当前级别节点组内的节点数量超过预设阈值时,将下一级别节点组作为当前级别节点组,并将新启动的节点组成的节点组作为下一级别节点组;继续执行上述步骤,直至所有节点均加入,得到区块链的共识系统;其中,一级节点组为共识节点组,共识节点组中的共识节点为预先选取的常任共识节点以及二级节点组中的主节点。本发明实施例能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统。
Description
技术领域
本发明实施例涉及区块链技术领域,具体涉及一种区块链共识方法、区块链共识系统、计算机设备及计算机可读存储介质。
背景技术
区块链技术是一种分布式互联网数据库技术,也称为分布式账本技术,具备去中心化、公开透明、不可篡改、可信任、集体维护、可溯源等特点。
然而发明人在实施本发明实施例的过程中发现,现有的区块链共识系统,公链常用的算法,如pow、pos、dpos等,其特点是参与共识的节点数多,但是交易的时延大,tps较小,能耗高。私链常用的算法,如raft、paxos等,安全性较差,属于中心化算法,不适用于存在作恶节点的场景。
发明内容
鉴于上述问题,本发明实施例提供了一种区块链共识方法、区块链共识系统、计算机设备及计算机可读存储介质,用于解决现有技术中存在的区块链共识系统不适用于大规模互联网交易系统的技术问题。
根据本发明实施例的一个方面,提供了一种区块链共识方法,所述方法包括:
在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
继续执行上述步骤,直至所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述主节点加入所述当前级别节点组之前,所述方法还包括:下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;接收下一级别节点组中的主节点发送的节点加入请求。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,包括:在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在所述当前级别节点组的组内发起节点加入投票;当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
在一种可选的方式中,所述将新启动的节点组成的节点组作为所述下一级别节点组,包括:将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
在一种可选的方式中,所述方法还包括:所述当前级别节点组中每个节点记录两组节点信息,所述两组节点信息包括同级节点信息及上级节点信息。
在一种可选的方式中,所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。
在一种可选的方式中,所述方法还包括:交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
根据本发明实施例的另一方面,提供了一种区块链共识系统,所述系统包括依次级联的多个节点组,所述依次级联的多个节点组包括一级节点组和二级节点组;
所述一级节点组为共识节点组,所述共识节点组中的节点为共识节点,所述共识节点包括预先选取的常任共识节点以及二级节点组中的主节点;
所述二级节点组包括所述主节点及多个非共识节点;
各个节点组内的各节点均为交易节点。
根据本发明实施例的另一方面,提供了一种区块链共识装置,所述装置包括:
第一加入模块,用于在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
第二加入模块,用于当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
确定模块,用于当所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
根据本发明实施例的另一方面,提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行所述的区块链共识方法的操作。
根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行所述的区块链共识方法的操作。
本发明实施例通过在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,并当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统,能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统,将区块链技术应用到大规模互联网交易场景,既能达到大规模互联网交易系统需要的扩展性,能够支持百万级节点,又能达到每秒千万级的共识要求,同时不需要像比特币这样的能源消耗,以及避免采用POS权益证明机制的安全性和公平性问题。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的区块链共识方法的流程示意图;
图2示出了本发明实施例提供的区块链共识系统的结构示意图;
图3示出了本发明实施例提供的区块链共识装置的结构示意图;
图4示出了本发明实施例提供的计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
图1示出了本发明实施例提供的区块链共识方法的流程图,该方法由区块链执行。如图1所示,该方法包括以下步骤:
步骤110:在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组。
其中,本发明实施例中,当前级别节点组可以是任一个当前正在构建与各个下一级别节点组的连接关系的节点组。其中,多个新启动的节点按照就近原则分别组成了多个下一级节点组;具体地,对于下一级节点组,可以将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。通过多个下一级节点组中的主节点分别加入当前级别节点组,从而使得当前级别节点组与下一级别节点组之间形成通信连接,最终形成多个多级连接的节点组联盟链。
本发明实施例中,在步骤110之前,下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;接收下一级别节点组中的主节点发送的节点加入请求。
其中,在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在组内发起节点加入投票;当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
以当前级别节点组为一级节点组,下一级别节点组为第二级别节点为例进行说明:对于一级节点组,首先部署若干个T0级节点,组成初步的共识节点组(也即一级节点组),一级节点组为共识节点组,其它级别节点组均为非共识节点组。该T0级节点为预先选取的常任共识节点,可长期参与共识投票,拥有一票否决权,由区块链所属的联盟组织设定,为初代共识节点,通常部署在联盟组织成员中安全级别最高的内网环境中,处于防火墙内。之后,构建下一级别节点,在第一预设时间窗口内启动的节点,按照就近原则自动组成多个二级节点组,该二级节点组内的节点为非共识节点。该二级节点组内的节点通过投票选举,得到二级节点组的主节点。各个二级节点组的主节点分别向一级节点组发送节点加入请求。
一级节点组接收该节点加入请求,并判断一级节点组内的节点数量未超过预设阈值。其中,由于常任共识节点数量是固定的,因此可以通过一级节点组中已入的轮值共识节点是否超过预设数量,在未超过时,所述一级节点组根据二级节点组的主节点发送的节点加入请求,在一级节点组组内发起节点加入投票;当投票通过时,将所述二级节点组的主节点加入所述一级节点组中,作为所述一级节点组中新加入的节点,其中,二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。也即,一级节点组中的常任共识节点与轮值共识节点一起参与共识,轮值共识节点作为二级节点组的主节点,将一级节点组和二级节点组的各个节点组进行通信,从而建立起了一级节点组与二级节点组的通信。
步骤120:当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组。
其中,当所述当前级别节点组内的节点数量超过预设阈值时,将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
继续以当前级别节点组为一级节点组,下一级别节点组为第二级别节点为例进行说明:当区块链中的节点数越来越多,加入一级节点组的轮值共识节点也就越多,当轮值共识节点的数量超过预设数量后,新启动的节点将默认组织更低一级的节点组,也即三级节点组,三级节点组也通过协议选出主节点,并根据就近原则向附近的一个二级节点组发起节点加入请求。此时,二级节点组作为当前级别节点组,三级节点组作为下一级别节点组,继续执行上述的节点加入请求处理的步骤。
步骤130:继续执行上述步骤,直至所有节点均加入各节点组后,得到所述区块链的共识系统。
其中,一级节点组为共识节点组,一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
具体地,继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统。
本发明实施例中,确定若干个常任共识节点,组成共识节点组;所述常任共识节点为长期参与共识投票的节点;将在第一时间窗口内加入的普通节点,组成多个二级节点组;各个所述二级节点组内的主节点向所述共识节点组发送加入共识节点加入请求;所述共识节点组根据所述共识节点加入请求在组内发起投票,当投票通过时,将所述主节点加入所述共识节点组,作为轮值共识节点;当所述轮值共识节点的数量达到预设阈值时,在第二时间窗口内新加入的普通节点组成多个三级节点组,并由各个三级节点组的主节点向所述二级节点组发起节点加入请求,二级节点组根据所述节点加入请求在组内发起投票,当投票通过时,将所述三级节点组的主节点加入所述二级节点组,作为二级节点组中的轮值节点...,以此类推,所有节点均加入相应的节点组,不同级别节点组之间通过低级别的主节点建立连接。具体地,当轮值共识节点的数量超过预设数量后,新启动的节点将默认组织更低一级的节点组(也即三级节点组),三级节点组也通过协议选出主节点,并根据就近原则向附近的一个二级节点组发起节点加入请求。此时,二级节点组作为当前级别节点组,三级节点组作为下一级别节点组,继续执行上述的节点加入请求处理的步骤。以此类推,通过不断地迭代处理,使得各个启动的节点均加入对应的级别节点组,各个级别节点组之间通过下一级别节点组的主节点与上一级别节点组建立连接,从而构建成了该区块链的共识系统。其中,一级节点组为共识节点组,所述共识节点组中包括预先选取的常任共识节点以及二级节点组中的主节点;所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。除一级节点组中的共识节点外,其它级别的节点组均不具有共识能力。
本发明实施例中,所述当前级别节点组及下一级别节点组中每个节点均记录两组节点信息,所述两组节点信息包括同级节点信息及上级节点信息。区块链组网成功后,每个节点内部记录2组节点信息,即list1[同级节点],list2[上级节点],对于T0节点(常任共识节点)list2为空。同组主节点会同时存在于2个list中。
其中,本发明实施例在构建完成区块链的共识系统后,通过该共识系统进行共识处理,具体包括:
交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;
共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;
所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;
所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
如图2所示,下面以3级结构为例具体介绍,在本发明一实施例中,该区块链共识方法:
首先,阐述本发明实施例中节点的组成和职能。各节点被赋予了身份分等级,T0,T1,T2,T3......以此类推,可随着节点规模的扩展逐级递增。各等级的节点的职能如下:T0级为常任共识节点,可长期参与共识投票,拥有一票否决权,由区块链所属的联盟组织设定,为初代共识节点,通常部署在联盟组织成员中安全级别最高的内网环境中,处于防火墙内。T1为轮值共识节点,由下级共识节点选举,并由同级共识节点投票通过产生,T1级与T0级共识节点通过P2P网络协议组成共识节点组(也即图2中的共识联盟),T1级共识节点有任期限制,任期结束后降为T2节点,重新参与选举。T2节点不可参与共识投票,仅负责参与选举T1共识节点。2n+1个T2共识节点间通过p2p网络组成一个二级节点组,如图2所示,组成了4个二级节点组G1,G2,G3及G4,组内的T2级节点可向组内T1级节点提议发起共识投票,由该T1共识节点在T1共识节点组内发起投票,并将投票结果广播给组内T2节点。以此类推,2n+1个T3节点可组成一个三级节点组如图2所示的G5和G6,并选举产生T2级节点,随着系统规模的扩大,节点的层级可不断扩展,从而形成了如图2所示的共识联盟系统。本发明实施例中,分组分级逐级提交好处在于:当系统节点规模巨大增长时,避免了节点间通过P2P通讯产生的消息延迟和消息重复。
1.首先部署若干个T0级节点,组成初步的共识节点组(一级节点组)。节点间通过加密技术进行信息通讯。通过数字签名技术进行身份认证。
2.逐个部署若干个非T0级节点,在一个时间窗口内启动的节点,按照就近原则自动组成一个或多个由2n+1(n>=0)个普通节点组成的二级节点组,组内通过p2p协议进行通讯,通过Raft协议选出组内主节点。
3.新组建的二级节点组的主节点会主动向T0节点组中任意一个节点进行汇报,并请求加入共识节点组。
4.接收到汇报和共识加入请求的该T0节点通过在共识节点组内进行广播,并发起一次投票,当收到大于2/3节点赞成票时,响应投票通过的结果给发起方。此时该节点升级为T1级节点,也即轮值共识节点。
5.T1节点将投票结果广播给与其同组其他节点。其他节点则为T1+1=T2节点。
6.以此类推,当区块链中节点数越来越多,T1节点数将达到一个阈值,则新加入的节点将默认组织更低一级的节点组三级节点组,包括多个T3级节点,T3级节点也通过Raft协议选出主节点,该主节点根据就近原则向附近的一个T2节点组申请加入,该T2由于新成员加入,会重新发起选举,选出一个新的主节点,再由该节点向共识节点组发起请求加入,步骤同第3-5步。
7.区块链组网成功后,每个节点内部记录2组节点信息,即list1[同级节点],list2[上级节点],对于T0节点list2为空。同组主节点会同时存在于2个list中。
在区块链组网成功后,执行交易,并进行出块流程,具体地:
1)T0、T1、T2~Tn节点均作为交易节点,接收客户端交易请求。并对客户端进行身份验证。验证通过执行交易请求,并将交易提交到交易池。
2)T0、T1级节点参与共识,共识主节点定时从交易池批量获取交易数据。
3)共识主节点获取到交易数据后,首先在本地预执行智能合约,生成候选区块。
4)该共识主节点将生成的候选区块通过点对点网络发送给其他共识节点,发起共识投票。
5)共识节点验证候选区块达成共识。
6)完成本轮共识后,各节点将区块记入账本库。
7)共识节点将该区块同步给其下级非共识节点,依次逐级同步,直至所有节点都完成记账。
本发明实施例通过在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,并当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统,能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统,将区块链技术应用到大规模互联网交易场景,既能达到大规模互联网交易系统需要的扩展性,能够支持百万级节点,又能达到每秒千万级的共识要求,同时不需要像比特币这样的能源消耗,以及避免采用POS权益证明机制的安全性和公平性问题。
本发明实施例还提供一种区块链共识系统,所述系统包括依次级联的多个节点组,所述依次级联的多个节点组包括一级节点组和二级节点组;
所述一级节点组为共识节点组,所述共识节点组中的节点为共识节点,所述共识节点包括预先选取的常任共识节点以及二级节点组中的主节点;
所述二级节点组包括所述主节点及多个非共识节点;
各个节点组内的各节点均为交易节点。
其中,该区块链共识系统是根据上述实施例的区块链共识方法构建得到的,此处不再赘述。该区块链共识系统执行共识的过程为:
交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;
共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;
所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;
所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
图3示出了本发明实施例提供的区块链共识装置的结构示意图。如图3所示,该装置300包括:
第一加入模块310,用于在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
第二加入模块320,用于当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
确定模块330,用于当所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述主节点加入所述当前级别节点组之前,所述方法还包括:下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;接收下一级别节点组中的主节点发送的节点加入请求。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,包括:在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在组内发起节点加入投票;当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
在一种可选的方式中,所述当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组,包括:将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
在一种可选的方式中,所述方法还包括:所述当前级别节点组中每个节点记录两组节点信息,所述两组节点信息包括同级节点信息及上级节点信息。
在一种可选的方式中,所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。
在一种可选的方式中,所述方法还包括:交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
本发明实施例的区块链共识装置的具体工作过程与上述方法实施例大体一致,此处不再赘述。
本发明实施例通过在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,并当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统,能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统,将区块链技术应用到大规模互联网交易场景,既能达到大规模互联网交易系统需要的扩展性,能够支持百万级节点,又能达到每秒千万级的共识要求,同时不需要像比特币这样的能源消耗,以及避免采用POS权益证明机制的安全性和公平性问题。
图4示出了本发明实施例提供的计算机设备的结构示意图,本发明具体实施例并不对计算机设备的具体实现做限定。
如图4所示,该计算机设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述用于区块链共识方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机可执行指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以被处理器402调用使计算机设备执行以下操作:
在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
继续执行上述步骤,直至所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述主节点加入所述当前级别节点组之前,所述方法还包括:下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;接收下一级别节点组中的主节点发送的节点加入请求。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,包括:在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在组内发起节点加入投票;当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
在一种可选的方式中,所述当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组,包括:将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
在一种可选的方式中,所述方法还包括:所述当前级别节点组中每个节点记录两组节点信息,所述两组节点信息包括同级节点信息及上级节点信息。
在一种可选的方式中,所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。
在一种可选的方式中,所述方法还包括:交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
本发明实施例通过在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,并当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统,能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统,将区块链技术应用到大规模互联网交易场景,既能达到大规模互联网交易系统需要的扩展性,能够支持百万级节点,又能达到每秒千万级的共识要求,同时不需要像比特币这样的能源消耗,以及避免采用POS权益证明机制的安全性和公平性问题。
本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在计算机设备上运行时,使得所述计算机设备执行上述任意方法实施例中的区块链共识方法。
可执行指令具体可以用于使得计算机设备执行以下操作:
在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
继续执行上述步骤,直至所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述主节点加入所述当前级别节点组之前,所述方法还包括:下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;接收下一级别节点组中的主节点发送的节点加入请求。
在一种可选的方式中,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,包括:在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在组内发起节点加入投票;当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
在一种可选的方式中,所述当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组,包括:将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
在一种可选的方式中,所述方法还包括:所述当前级别节点组中每个节点记录两组节点信息,所述两组节点信息包括同级节点信息及上级节点信息。
在一种可选的方式中,所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。
在一种可选的方式中,所述方法还包括:交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
本发明实施例通过在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,并当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;继续执行在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,以及当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组的步骤,直至所有节点均加入,得到所述区块链的共识系统,能够构建一个适用于大规模互联网交易系统的基于信用的区块链共识系统,将区块链技术应用到大规模互联网交易场景,既能达到大规模互联网交易系统需要的扩展性,能够支持百万级节点,又能达到每秒千万级的共识要求,同时不需要像比特币这样的能源消耗,以及避免采用POS权益证明机制的安全性和公平性问题。
本发明实施例提供一种区块链共识装置,用于执行上述区块链共识方法。
本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使计算机设备执行上述任意方法实施例中的区块链共识方法。
本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的区块链共识方法。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种区块链共识方法,其特征在于,所述方法包括:
在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
继续执行上述步骤,直至所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
2.根据权利要求1所述的方法,其特征在于,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述主节点加入所述当前级别节点组之前,所述方法还包括:
下一级别节点组中各节点相互通信,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点;
接收下一级别节点组中的主节点发送的节点加入请求。
3.根据权利要求1所述的方法,其特征在于,所述在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组,包括:
在当前级别节点组内的节点数量未超过预设阈值时,所述当前级别节点组根据下一级别节点组的主节点发送的节点加入请求,在所述当前级别节点组的组内发起节点加入投票;
当投票通过时,将所述下一级别节点组的主节点加入所述当前级别节点组中,作为所述当前级别节点组中新加入的节点。
4.根据权利要求1所述的方法,其特征在于,所述将新启动的节点组成的节点组作为所述下一级别节点组,包括:
将同时在第一时间窗口内新启动的节点,按照就近原则组成至少一个节点组;
分别将新启动的节点组成的节点组作为所述下一级别节点组,从所述下一级别节点组的各节点中选出所述下一组级别节点的主节点。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述常任共识节点为长期参与共识投票的节点,所述二级节点组中的主节点在所述共识节点组中为具有任期时间限制的轮值共识节点。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
交易节点接收客户端的交易请求,并在对客户端验证通过后,执行所述交易请求,并将交易数据提交至交易池;所述交易节点为所述共识系统中所有节点中的任一个;
共识主节点从所述交易池中获取所述交易数据,并在本地执行智能合约,生成候选区块;所述共识主节点为所述共识节点及各所述轮值共识节点中的任一个;
所述共识主节点将所述候选区块发送给所述共识节点组中其它共识节点;
所述共识节点组中各共识节点验证候选区块达成共识后,各节点将所述候选区块记入账本库,并同步给其它各节点。
7.一种区块链共识装置,其特征在于,所述装置包括:
第一加入模块,用于在当前级别节点组内的节点数量未超过预设阈值时,根据下一级别节点组的主节点发送的节点加入请求,将所述下一级别节点组的主节点加入所述当前级别节点组;
第二加入模块,用于当所述当前级别节点组内的节点数量超过预设阈值时,将所述下一级别节点组作为所述当前级别节点组,并将新启动的节点组成的节点组作为所述下一级别节点组;
确定模块,用于当所有节点均加入各节点组后,得到所述区块链的共识系统;
其中,一级节点组为共识节点组,所述一级节点组包括预先选取的常任共识节点以及二级节点组中的主节点。
8.一种区块链共识系统,其特征在于,所述系统包括依次级联的多个节点组,所述依次级联的多个节点组包括一级节点组和二级节点组;
所述一级节点组为共识节点组,所述共识节点组中的节点为共识节点,所述共识节点包括预先选取的常任共识节点以及二级节点组中的主节点;
所述二级节点组包括所述主节点及多个非共识节点;
各个节点组内的各节点均为交易节点。
9.一种计算机设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6任意一项所述的区块链共识方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行如权利要求1-6任意一项所述的区块链共识方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373681.7A CN115766742A (zh) | 2022-11-03 | 2022-11-03 | 区块链共识方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373681.7A CN115766742A (zh) | 2022-11-03 | 2022-11-03 | 区块链共识方法、系统、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115766742A true CN115766742A (zh) | 2023-03-07 |
Family
ID=85357874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211373681.7A Pending CN115766742A (zh) | 2022-11-03 | 2022-11-03 | 区块链共识方法、系统、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115766742A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117391415A (zh) * | 2023-09-28 | 2024-01-12 | 连连宝(杭州)信息技术有限公司 | 一种业务处理方法、装置和计算机存储介质 |
-
2022
- 2022-11-03 CN CN202211373681.7A patent/CN115766742A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117391415A (zh) * | 2023-09-28 | 2024-01-12 | 连连宝(杭州)信息技术有限公司 | 一种业务处理方法、装置和计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108985732B (zh) | 基于无区块的dag技术的共识和账本数据组织方法及系统 | |
JP7138726B2 (ja) | ブロックチェーンコンセンサス方法、アカウンティングノードおよびノード | |
CN108616596A (zh) | 基于动态授权和网络环境感知的区块链自适应共识方法 | |
CN111311414A (zh) | 一种基于一致性哈希算法的区块链多方共识方法 | |
CN109040279A (zh) | 区块链网络组网方法、装置、设备及可读存储介质 | |
CN109035011B (zh) | 一种区块链dag宽度的控制方法与系统 | |
CN112217683B (zh) | 跨异构链数据可达性处理方法、系统、介质、设备、终端 | |
CN112636905A (zh) | 基于多角色的可扩展共识机制的系统及方法 | |
CN115766742A (zh) | 区块链共识方法、系统、设备及计算机可读存储介质 | |
CN112468255B (zh) | 基于网络共识结合vrf算法的区块链节点时间同步方法 | |
CN111682942A (zh) | 一种应用于许可链的二元加权拜占庭容错共识方法 | |
CN116614516A (zh) | 基于声誉改进的pbft共识方法 | |
CN115499129A (zh) | 一种多模信任跨链共识方法、系统、介质、设备及终端 | |
CN116389149A (zh) | 一种基于声誉值的可扩展拜占庭容错共识方法 | |
CN111798234A (zh) | 一种轻量级区块链系统及构造方法 | |
CN114449476A (zh) | 一种用于车联网中安全通信的区块链节点共识方法 | |
WO2024066665A1 (zh) | 基于Snowman共识的联盟链多链系统及其交互与部署方法 | |
CN114297680B (zh) | 一种用于物联网环境的区块链跨链共识方法和系统 | |
CN110502578A (zh) | 一种快速数据上链的共识机制 | |
CN115529217A (zh) | 控制器选举方法和控制器、存储介质 | |
Qushtom et al. | Multiple leader PBFT based blockchain architecture for IoT domains | |
CN113746635A (zh) | 提高pbft共识可扩展性的方法、装置、计算设备及存储介质 | |
CN114218776A (zh) | 一种基于区块链的分布式仿真实现方法 | |
CN114580661A (zh) | 基于联邦学习的数据处理方法、装置和计算机设备 | |
CN114499874A (zh) | 一种应用于工业互联网的拜占庭容错共识优化方法 |
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 |