CN111241188B - 区块链网络中的共识方法、节点及存储介质 - Google Patents
区块链网络中的共识方法、节点及存储介质 Download PDFInfo
- Publication number
- CN111241188B CN111241188B CN201811440006.5A CN201811440006A CN111241188B CN 111241188 B CN111241188 B CN 111241188B CN 201811440006 A CN201811440006 A CN 201811440006A CN 111241188 B CN111241188 B CN 111241188B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- confirmed
- locking blocks
- confirmation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000002360 preparation method Methods 0.000 claims abstract description 90
- 238000012790 confirmation Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims description 28
- 238000012512 characterization method Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 238000012856 packing Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 6
- 239000000306 component Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000013515 script Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种区块链网络中的共识方法、节点及存储介质,其中,方法包括:响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识。
Description
技术领域
本发明涉及通信技术,尤其涉及一种区块链网络中的共识方法、节点及存储介质。
背景技术
相关技术的区块链网络中,当节点采用的共识算法为拜占庭容错(PBFT,Practical Byzantine Fault Tolerance)算法时,共识的达成需要超过(n-1)/3的节点确认,n为节点数量,每一次的共识需要多轮投票才能完成,在同构多链情况下,节点需要进行反复提交多种状态的共识信息,给网络带来巨大的压力。
发明内容
本发明实施例提供一种区块链网络中的共识方法、节点及存储介质,能够有效的减轻区块链网络的压力。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种区块链网络中的共识方法,包括:
响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;
基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识。
上述方案中,所述方法还包括:
接收针对待确认区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
当针对所述待确认区块表征同意的所述准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认。
上述方案中,当基于所述锁定区块的数量信息,确定所述缓存池未达到缓存上限时,所述方法还包括:
将通过确认的所述待确认区块进行锁定,得到锁定区块;
将得到的所述锁定区块加入所述缓存池。
上述方案中,所述确定所述缓存池已达缓存上限之后,所述方法还包括:
解锁所述缓存池中缓存的多个所述锁定区块;
获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。
上述方案中,所述方法还包括:
接收针对多个所述锁定区块的确认类型消息;所述确认类型消息表征对应的节点视为多个所述锁定区块通过确认;
当接收到的针对多个所述锁定区块的确认类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块在所述确认阶段完成共识。
上述方案中,所述方法还包括:
接收客户端发送的至少一个交易请求;
将所述至少一个交易请求打包形成待确认区块;
发送携带所述待确认区块的预准备消息至所述节点所处区块链中的其它节点。
第二方面,本发明实施例提供一种区块链网络中的节点,所述节点包括:
获取单元,用于响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;
处理单元,用于基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识。
上述方案中,所述获取单元,用于接收针对待确认区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对所述待确认区块表征同意的所述准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认。
上述方案中,所述处理单元,还用于将通过确认的所述待确认区块进行锁定,得到锁定区块,并将得到的所述锁定区块加入所述缓存池。
上述方案中,所述处理单元,还用于解锁所述缓存池中缓存的多个所述锁定区块;
所述获取单元,还用于获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。
上述方案中,所述获取单元,还用于接收针对多个所述锁定区块的确认类型消息;所述确认类型消息表征对应的节点视为多个所述锁定区块通过确认;
所述处理单元,还用于当接收到的针对多个所述锁定区块的确认类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块在所述确认阶段完成共识。
上述方案中,所述节点还包括发送单元;
所述获取单元,还用于接收客户端发送的至少一个交易请求;
所述处理单元,还用于将所述至少一个交易请求打包形成待确认区块;
所述发送单元,用于发送携带所述待确认区块的预准备消息至所述节点所处区块链中的其它节点。
第三方面,本发明实施例提供一种区块链网络中的节点,所述节点包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的所述区块链网络中的共识方法。
第四方面,本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的所述区块链网络中的共识方法。
应用本发明实施例具有以下有益效果:
响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识。也就是说,节点对区块确认通过时并未马上进入确认阶段,而是将区块锁定并在缓存池中缓存,当缓存池中的锁定区块达到缓存上限时,将缓存池中的多个锁定区块作为一个整体,对其执行一次确认阶段所对应的操作;如此,相较于针对每个确认通过的区块均要执行确认阶段的操作来说,极大的减少了区块链网络中各个节点进行数据通信及数据处理所带来的压力。
附图说明
图1是本发明实施例提供的区块链网络的功能架构示意图;
图2为本发明实施例提供的同构多链框架的一个可选的示意图;
图3为本发明实施例提供的同构多链架构中链间通信的示意图;
图4为本发明实施例提供的节点的结构示意图;
图5为本发明实施例提供的基于PBFT的共识方法的示意图;
图6为本发明实施例提供的区块链网络中的共识方法的流程示意图一;
图7为本发明实施例提供的区块链网络中的共识方法的流程示意图二;
图8为本发明实施例提供的区块链网络中的共识方法的流程示意图三;
图9为本发明实施例提供的节点的组成结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)交易(Transaction),等同于计算机术语“事物”,用于通过调用智能合约、并在智能合约中通过增、改的操作来提交一系列键值对的更新到账本数据,从而引起对账本数据中所记录的键值对的改变,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
2)区块,记录一段时间内交易所更新的账本数据的数据结构,被标记上时间戳和之前一个区块的独特标记(例如数字指纹),区块经过区块链网络中节点的共识验证后,会被追加到区块链的末尾成为新的区块。
3)区块链,区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的不可篡改和不可伪造。
4)区块链网络,通过共识的方式将新区块纳入区块链的一系列的、无中心的节点的集合。
5)区块高度,简称高度,标识区块在区块链中的位置,可以采用与区块链中第一个区块(即创始区块)之间区块的数量来表示。
6)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对交易达成一致,实现共识的机制包括工作量证明(PoW)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof ofElapsed Time)、PBFT等。
7)智能合约(Smart Contracts),也称为链码(Chaincode),部署在区块链网络中的根据条件而触发执行的8)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
下面说明实现本发明实施例的区块链网络的示例性的功能架构,参见图1,图1是本发明实施例提供的区块链网络的功能架构示意图,包括:应用层101、服务层102、基础层103;其中,位于最底层的基础层103是构成区块链的最核心组成部分,位于最上层的应用层101直接触达用户产品及服务,位于中间层的服务层102作为应用和链之间的桥梁,提供应用层需要的接口和服务。接下来分别对各层的功能及相应原理进行说明。
应用层101,封装了区块链网络能够实现的各种业务,包括交易结算、溯源和存证等。例如,用户通过账户客户端发送交易查询请求,该交易查询请求通过服务层的“数据请求服务”提供的接口完成查询服务。
服务层102,包括安全控制、合约部署、合约调用、数据请求服务等几部分。
其中,安全控制,类似于互联网架构的接入层,主要负责鉴权、合法性校验等安全相关的工作。
合约部署,对于同构多链框架来说,合约会有自己所属的链,合约创建会在这个链完成,而普通链上的用户发起合约调用时,用户所在链请求入块后,需要知道将该请求和区块路由到哪个链上,所以合约部署的时候还需要将合约的路由信息通知到所有链。
合约调用,检查合约调用接口中参数的合法性,比如合约地址是否存在等,对于不合法的请求直接返回失败,合法的会转发给基础层。
数据请求服务,涵盖了与交易相关的所有请求,包括查询、增加、修改等。
基础层103,包括跨链、路由、共识、账户管理、请求池、智能合约、数据存储、密码学、网络通信等用于实现区块链的核心组成模块。
其中,路由模块,用于当请求到达的时候,根据请求中发起方地址,将请求路由到该用户所属的链;以及,当请求入块,需要链间通信将请求和区块信息同步到目的链的时候,也需要路由模块的信息。
跨链模块,用于将已入链的区块中,需要跨链的请求、证明信息、区块信息同步到对应链。
共识模块,区块链等分布式存储服务共同的核心模块,用于在涉及的多个节点之间对交易结果达成一致,并校验达成一致的区块内部数据的合法性。
账户管理模块,主要是账户的密钥对生成,一方面给账户客户端提供可查询的库,另一方面用作账户的权限管理。
请求池,一方面收到请求后先放在这个队列里等待校验合法性,另一方面校验合法性通过后放入等待入块的队列。
数据存储模块,数据存储的结构可采用交易树、账户树、事件树。每种树都是一个默克尔(Merkle)树,在区块头部只存储树的根(root)的哈希(hash)。
密码学模块,保证了区块链的不可篡改、隐私保护等,涉及签名、摘要计算、公私钥对的生成等。
网络通信模块,可以采用点对点(P2P)网络协议,或者远程过程调用协议(RPC,Remote Procedure Call Protocol)实现节点间的通信。
基于上述对区块链网络架构的说明,接下来对同构多链框架进行介绍。图2为本发明实施例提供的同构多链框架的一个可选的示意图,所谓同构多链框架,指的是区块链网络中存在多条链,每条链上运行的程序是一样的。参见图2,不同用户的请求通过接入层会发到不同的链上进行处理。图3为本发明实施例提供的同构多链架构中链间通信的示意图,参见图3,当A、B、C、D同时发起请求,比如有A->B,A->C,A->D,同时有B->C,C->D,D->E。A、B、C、D根据路由规则落到不同的链上,区块链完成区块入链后,针对新区块中涉及跨链的请求,根据请求的目的链,将跟该目的链有关的请求原始数据、本链的区块头信息、本链的交易证明信息等转发给目的链,使得目的链实现账本状态同步。
接下来对区块链网络中的节点进行说明,节点可以是一个或多个服务器,根据节点的结构,可以预见节点的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用场景的特殊需求。图4为本发明实施例提供的节点的结构示意图,参见图4,本发明实施例提供的节点包括:至少一个处理器210、存储器240、至少一个网络接口220和用户接口230。消息处理装置中的各个组件通过总线系统250耦合在一起。可理解,总线系统250用于实现这些组件之间的连接通信。总线系统250除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统250。
用户接口230可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
存储器240可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、闪存(Flash Memory)等。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器240能够存储可执行指令2401以支持消息处理装置的操作,这些可执行指令的示例包括:用于在消息处理装置上操作的程序、插件和脚本等各种形式的软件模块,程序例如可以包括操作系统和应用程序,其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。
接下来对区块链网络所采用的共识机制进行说明。共识机制为在涉及的多个节点之间对交易达成一致,或者为在一个时间段内对事物的前后顺序达成共识的一种算法。本发明实施例以共识机制为PBFT为例进行说明。PBFT共识机制主要包括三部分:预准备(pre-prepare)阶段、准备(prepare)阶段、确认(commit)阶段。在实际应用中,全网选举出主节点,在预准备阶段,区块链网络中每个节点将客户端发来的交易请求向全网广播,主节点将从全网收集的交易请求打包生成待确认区块,然后将待确认区块向全网广播,使得备份节点接收;在准备阶段,备份节点模拟执行这些交易,并在交易执行完成后,进行投票,使得主节点接收,同时收集其它备份节点的投票,当节点收集到的对新区块的赞同票达到2f(f为可容忍的拜占庭节点数)个时,进入确认阶段,节点向其它节点广播确认阶段消息(commit消息),同时收集其它节点发送的commit消息,当收到2f+1个commit消息后,触发向客户端的回复。
图5为本发明实施例提供的基于PBFT的共识方法的示意图,参见图5,C为客户端,0、1、2、3为区块链中的节点,其中,0为全网选举出的具有打包权的主节点,客户端C发送交易请求至节点0,在预准备阶段,节点0对交易请求排序编号,并把请求序号发送到1,2,3节点;在准备阶段,节点同意交易请求后会向其它节点发送prepare消息,节点1及节点2相互通信,并和节点0之间发送消息;在确认阶段,节点向其它节点广播commit消息,节点0、节点1及节点2之间确认节点0分配的序号,并在确认通过后向客户端发送确认回复信息。
通过上述对区块链网络、同构多链架构及PBFT算法的说明可知,当区块链网络采用的共识算法为PBFT算法时,共识的达成需要超过(n-1)/3的节点确认,n为节点数量,每一次的共识需要多轮投票才能完成,在同构多链情况下,节点需要进行反复提交多种状态的共识信息,给网络带来巨大的压力。
下面说明实现本发明实施例的区块链网络中的共识方法。图6为本发明实施例提供的区块链网络中的共识方法的流程示意图,参见图6,本发明实施例提供的区块链网络中的共识方法包括:
步骤301:响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块。
在一实施例中,节点侧设置有相应的缓存池,用于缓存锁定区块;在实际应用中,缓存池的缓存上限即所能缓存的锁定区块的最大数量,可以基于实际需要进行设定,如设置缓存池的缓存上限为10个锁定区块。
在实际实施时,节点被选举为主节点后,收集网络中的交易请求,将交易请求打包为待确认区块,然后通过广播的方式将pre-prepare消息发送至区块链中的其它节点,其它节点接收到主节点发送的pre-prepare消息后进入准备阶段。其它节点在准备阶段选择接受或不接受主节点发送的pre-prepare消息,若接受主节点发送的pre-prepare消息,向其它节点广播表征同意的准备类型消息(prepare消息),即投赞同票,同时各个节点收集其它节点发送的表征同意的准备类型消息(即收集表征赞同的投票),当节点所收集的表征同意的准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认;在一实施例中,当节点收集的表征同意的准备类型消息的数量达到节点总数量的2/3时,视为待确认区块通过确认。
在一实施例中,当基于所获取的锁定区块的数量信息,确定缓存池未达到缓存上限时,将通过确认的待确认区块进行锁定,得到锁定区块;并将得到的锁定区块加入缓存池。例如,节点处于准备阶段时,获取到当前的缓存池中锁定区块的数量为0,收集对待确认区块表征赞同的投票,当投票数量超过节点数量的2/3时,将该待确认区块锁定,形成锁定区块,并加入缓存池。
这里,在实际应用中,可通过比较当前缓存池中的锁定区块的区块高度与缓存池可锁定区块的最大区块高度进行比较,确定当前锁定区块的高度未达到缓存池可锁定区块的最大高度时,视为缓存池未达到缓存上限。
步骤302:基于锁定区块的数量信息,确定缓存池已达缓存上限时,以缓存池中缓存的多个锁定区块为区块确认单位,触发节点进入确认阶段,使得多个锁定区块在确认阶段完成共识。
这里,在一实施例中,节点处于准备阶段时,确定缓存池已达缓存上限,即缓存池已满时,进入确认阶段,将缓存池中缓存的所有的锁定区块作为一个整体进行提交,即将缓存池中缓存的所有的锁定区块作为一个确认区块(区块确认单位)进行提交,即广播commit消息,使得缓存池中缓存的多个区块在确认阶段一次性的完成确认,提高了对区块的共识效率,在同构多链网络中,相较于逐个的将区块进行提交,极大的减少了节点的投票次数,以及节点间的通信次数,大大的降低了网络压力。
在实际应用中,节点对应的缓存池中锁定区块达到上限的时间可能很长,例如,节点本次作为主节点实现对自身视为通过确认的区块进行锁定后,下次作为主节点进行区块锁定至缓存池满的时间可能很长,在这期间智能合约可能已经改变,如此,已锁定区块需要重新进行投票,相应的,在一实施例中,节点确定所述缓存池已达缓存上限之后,所述方法还包括:
解锁所述缓存池中缓存的多个所述锁定区块;获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。也就是说,将缓存池中所缓存的锁定区块进行解锁,将解锁后得到的多个区块作为一个整体,即作为一个大的单位区块,重新进行prepare投票,当节点收集到的对该多个区块表征赞同的投票的数量超过预设的数量阈值,如节点数量的2/3时,触发节点进入确认阶段,使得多个锁定区块在确认阶段完成共识。
应用本发明上述实施例,当节点在准备阶段对待确认区块通过确认时,并不马上进入确认阶段,而是对通过确认的区块进行锁定并缓存,待缓存池满时才进入确认阶段,将多个锁定区块作为一个整体提交进行commit投票,提高了对区块的共识效率,在同构多链网络中,相较于逐个的将区块进行提交,极大的减少了节点的投票次数,以及节点间的通信次数,大大的降低了网络压力。
图7为本发明实施例提供的区块链网络中的共识方法的流程示意图,应用于同构多链网络,参见图7,本发明实施例提供的区块链网络中的共识方法包括:
步骤401:节点收集客户端发送的交易请求,并将收到的交易请求打包形成待确认区块。
这里,当节点被选举为主节点后,拥有对交易请求的打包权,将客户端发送的交易请求打包形成待确认区块,进而可提出对应待确认区块的提案。
步骤402:响应于节点处于预准备阶段,采用广播的方式将待确认区块发送给其它节点。
这里,当节点处于预准备阶段时,通过广播pre-prepare消息,将待确认区块广播给其它节点,其它节点收到pre-prepare消息后进入准备阶段。
步骤403:响应于节点处于准备阶段,判断缓存池中锁定区块的数量是否已达缓存上限,如果未达到缓存上限,执行步骤404;如果达到缓存上限,执行步骤407。
这里,当节点进入准备阶段后,收集对待确认区块表征赞同或同意的prep are投票。
缓存池中缓存的锁定区块为所述节点视为通过确认的区块,在一实施例中,所述节点视为通过确认的区块可以为所述节点收集到的表征赞同或同意的prep are投票的数量达到预设的数量阈值,如达到节点数量的2/3。
在实际应用中,节点可通过比较区块高度判断缓存池中锁定区块的数量是否已达缓存上限,例如,设置缓存池中可缓存的锁定区块高度为10,若当前待确认区块的高度为11,视为缓存池已达缓存上限,若当前待确认区块的高度为9,视为缓存池未满,可继续缓存锁定区块,则节点收集对待确认区块表征赞同的prepare投票,当表征赞同的prepare投票的数量达到节点数量的2/3时,视为该待确认区块通过确认,对该待确认区块进行锁定,形成锁定区块,加入缓存池。
步骤404:收集针对待确认区块表征同意的准备类型消息。
步骤405:判断针对待确认区块表征同意的准备类型消息的数量是否达到节点数量的2/3,如果达到,执行步骤406;如果未达到执行步骤404。
步骤406:将待确认区块进行锁定得到锁定区块,并将锁定区块加入缓存池。
步骤407:采用广播的方式发送针对缓存池中所有锁定区块的确认信息至其它节点。
这里,在实际应用中,当缓存池中缓存的锁定区块达到缓存上限,即缓存池满时,触发节点进入确认阶段,节点将缓存池中缓存的所有锁定区块作为一个整体进行提交,发送commit消息,以收集其它节点针对缓存池中所有锁定区块的commit投票,并在收集到的commit投票的数量达到节点数量的2/3时,视为对缓存池中缓存的所有锁定区块的共识完成,触发对客户端的回复。
图8为本发明实施例提供的区块链网络中的共识方法的流程示意图,应用于同构多链网络,参见图8,本发明实施例提供的区块链网络中的共识方法包括:
步骤501:节点收集客户端发送的交易请求,并将收到的交易请求打包形成待确认区块。
这里,当节点被选举为主节点后,拥有对交易请求的打包权,将客户端发送的交易请求打包形成待确认区块,进而可提出对应待确认区块的提案。
步骤502:响应于节点处于预准备阶段,采用广播的方式将待确认区块发送给其它节点。
这里,当节点处于预准备阶段时,通过广播pre-prepare消息,将待确认区块广播给其它节点,其它节点收到pre-prepare消息后进入准备阶段。
步骤503:响应于节点处于准备阶段,判断缓存池中锁定区块的数量是否已达缓存上限,如果未达到缓存上限,执行步骤504;如果达到缓存上限,执行步骤507。
这里,当节点进入准备阶段后,收集对待确认区块表征赞同或同意的prep are投票。
缓存池中缓存的锁定区块为所述节点视为通过确认的区块,在一实施例中,所述节点视为通过确认的区块可以为所述节点收集到的表征赞同或同意的prep are投票的数量达到预设的数量阈值,如达到节点数量的2/3。
在实际应用中,节点可通过比较区块高度判断缓存池中锁定区块的数量是否已达缓存上限,例如,设置缓存池中可缓存的锁定区块高度为10,若当前待确认区块的高度为11,视为缓存池已达缓存上限,若当前待确认区块的高度为9,视为缓存池未满,可继续缓存锁定区块,则节点收集对待确认区块表征赞同的prepare投票,当表征赞同的prepare投票的数量达到节点数量的2/3时,视为该待确认区块通过确认,对该待确认区块进行锁定,形成锁定区块,加入缓存池。
步骤504:收集针对待确认区块表征赞同的prepare投票。
步骤505:判断针对待确认区块表征赞同的prepare投票的数量是否达到节点数量的2/3,如果达到,执行步骤506;如果未达到执行步骤504。
步骤506:将待确认区块进行锁定得到锁定区块,并将锁定区块加入缓存池。
步骤507:解锁缓存池中缓存的所有锁定区块。
步骤508:收集针对所有解锁区块表征赞同的prepare投票。
这里,在实际应用中,可能存在如下情况:节点本次作为主节点实现对自身视为通过确认的区块进行锁定后,下次作为主节点进行区块锁定至缓存池满的时间可能很长,在这期间智能合约可能已经改变,如此,需要对缓存池中的锁定区块重新进行投票,将缓存池中缓存的所有锁定区块进行解锁,并将解锁后的所有区块作为一个整体,收集对这个区块整体表征赞同的prepare投票,以判断解锁后得到的大区块(区块整体)是否通过确认。
步骤509:判断收集到的表征赞同的prepare投票数量是否达到节点数量的2/3,如果达到,执行步骤510;如果未达到执行步骤508。
步骤510:采用广播的方式发送针对所有解锁区块的确认信息至其它节点。
这里,在实际应用中,当收集到的针对所有解锁区块表征赞同的prepare投票数量达到节点数量的2/3时,表明所有解锁区块通过确认,触发节点进入确认阶段,节点将所有解锁区块作为一个整体进行提交,发送commit消息,以收集其它节点针对所有解锁区块的commit投票,并在收集到的commit投票的数量达到节点数量的2/3时,视为对所有解锁区块的共识完成,触发对客户端的回复。
图9为本发明实施例提供的节点的组成结构示意图,参见图9,本发明实施例提供的节点包括:
获取单元91,用于响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;
处理单元92,用于基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识。
在一实施例中,所述获取单元,还用于接收针对待确认区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对所述待确认区块表征同意的所述准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认。
在一实施例中,所述处理单元,还用于将通过确认的所述待确认区块进行锁定,得到锁定区块,并将得到的所述锁定区块加入所述缓存池。
在一实施例中,所述处理单元,还用于解锁所述缓存池中缓存的多个所述锁定区块;
所述获取单元,还用于获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。
在一实施例中,所述获取单元,还用于接收针对多个所述锁定区块的确认类型消息;所述确认类型消息表征对应的节点视为多个所述锁定区块通过确认;
所述处理单元,还用于当接收到的针对多个所述锁定区块的确认类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块在所述确认阶段完成共识。
在一实施例中,所述节点还包括发送单元;
所述获取单元,还用于接收客户端发送的至少一个交易请求;
所述处理单元,还用于将所述至少一个交易请求打包形成待确认区块;
所述发送单元,用于发送携带所述待确认区块的预准备消息至所述节点所处区块链中的其它节点。
这里需要指出的是:以上涉及节点的描述,与上述区块链网络中的共识方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明所述节点实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本发明实施例还提供了一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供所述的区块链网络中的共识方法。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种区块链网络中的共识方法,其特征在于,所述方法包括:
响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;所述通过确认的区块是通过对交易请求打包得到的;
基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识;
所述方法还包括:
接收针对待确认区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
当针对所述待确认区块表征同意的所述准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认;
当基于所述锁定区块的数量信息,确定所述缓存池未达到缓存上限时,所述方法还包括:
将通过确认的所述待确认区块进行锁定,得到锁定区块;
将得到的所述锁定区块加入所述缓存池。
2.如权利要求1所述的共识方法,其特征在于,所述确定所述缓存池已达缓存上限之后,所述方法还包括:
解锁所述缓存池中缓存的多个所述锁定区块;
获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。
3.如权利要求1所述的共识方法,其特征在于,所述方法还包括:
接收针对多个所述锁定区块的确认类型消息;所述确认类型消息表征对应的节点视为多个所述锁定区块通过确认;
当接收到的针对多个所述锁定区块的确认类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块在所述确认阶段完成共识。
4.如权利要求1至3任一项所述的共识方法,其特征在于,所述方法还包括:
接收客户端发送的至少一个交易请求;
将所述至少一个交易请求打包形成待确认区块;
发送携带所述待确认区块的预准备消息至所述节点所处区块链中的其它节点。
5.一种节点,其特征在于,所述节点包括:
获取单元,用于响应于节点处于准备阶段,获取对应所述节点的缓存池中锁定区块的数量信息;所述锁定区块为所述节点视为通过确认的区块;所述通过确认的区块是通过对交易请求打包得到的;
处理单元,用于基于所述锁定区块的数量信息,确定所述缓存池已达缓存上限时,以所述缓存池中缓存的多个所述锁定区块为区块确认单位,触发所述节点进入确认阶段,使得多个所述锁定区块在所述确认阶段完成共识;
所述获取单元,用于接收针对待确认区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对所述待确认区块表征同意的所述准备类型消息的数量达到预设的数量阈值时,视为所述待确认区块通过确认;
所述处理单元,还用于将通过确认的所述待确认区块进行锁定,得到锁定区块,并将得到的所述锁定区块加入所述缓存池。
6.如权利要求5所述的节点,其特征在于,
所述处理单元,还用于解锁所述缓存池中缓存的多个所述锁定区块;
所述获取单元,还用于获取针对多个所述锁定区块表征同意的准备类型消息;所述准备类型消息由所述节点所处区块链中其它节点发送;
所述处理单元,还用于当针对多个所述锁定区块表征同意的准备类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块通过确认。
7.如权利要求5所述的节点,其特征在于,
所述获取单元,还用于接收针对多个所述锁定区块的确认类型消息;所述确认类型消息表征对应的节点视为多个所述锁定区块通过确认;
所述处理单元,还用于当接收到的针对多个所述锁定区块的确认类型消息的数量达到预设的数量阈值时,视为多个所述锁定区块在所述确认阶段完成共识。
8.如权利要求5至7任一项所述的节点,其特征在于,所述节点还包括发送单元;
所述获取单元,还用于接收客户端发送的至少一个交易请求;
所述处理单元,还用于将所述至少一个交易请求打包形成待确认区块;
所述发送单元,用于发送携带所述待确认区块的预准备消息至所述节点所处区块链中的其它节点。
9.一种节点,其特征在于,所述节点包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至4任一项所述的区块链网络中的共识方法。
10.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至4任一项所述的区块链网络中的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811440006.5A CN111241188B (zh) | 2018-11-29 | 2018-11-29 | 区块链网络中的共识方法、节点及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811440006.5A CN111241188B (zh) | 2018-11-29 | 2018-11-29 | 区块链网络中的共识方法、节点及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111241188A CN111241188A (zh) | 2020-06-05 |
CN111241188B true CN111241188B (zh) | 2024-05-17 |
Family
ID=70863727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811440006.5A Active CN111241188B (zh) | 2018-11-29 | 2018-11-29 | 区块链网络中的共识方法、节点及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241188B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202933B (zh) * | 2020-12-08 | 2021-03-05 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置及节点设备 |
CN112783982B (zh) * | 2021-02-07 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、系统、计算机设备和存储介质 |
CN115545804B (zh) * | 2022-11-28 | 2023-04-07 | 江苏荣泽信息科技股份有限公司 | 基于区块链的现场服务管理平台 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395665A (zh) * | 2017-05-22 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种区块链业务受理及业务共识方法及装置 |
CN107450979A (zh) * | 2017-03-28 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及装置 |
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040585B (zh) * | 2017-02-22 | 2020-06-19 | 创新先进技术有限公司 | 一种业务校验的方法及装置 |
-
2018
- 2018-11-29 CN CN201811440006.5A patent/CN111241188B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450979A (zh) * | 2017-03-28 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及装置 |
CN107395665A (zh) * | 2017-05-22 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种区块链业务受理及业务共识方法及装置 |
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111241188A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7076682B2 (ja) | ブロックチェーンネットワークに基づくデータ処理方法、装置、電子機器およびコンピュータプログラム | |
CN112214780B (zh) | 一种数据处理方法、装置、智能设备及存储介质 | |
CN110268678B (zh) | 基于pki的认证代理用户的登录方法及利用其的服务器 | |
CN110599213B (zh) | 一种基于区块链网络的物品管理方法、装置及电子设备 | |
AU2020414467B2 (en) | Partially-ordered blockchain | |
CN111683101B (zh) | 一种基于区块链的自主跨域访问控制方法 | |
CN110598434B (zh) | 基于区块链网络的房屋信息处理方法、装置、电子设备及存储介质 | |
WO2018224635A1 (en) | Cryptographically verifiable data structure having multi-hop forward and backwards links and associated systems and methods | |
CN111241188B (zh) | 区块链网络中的共识方法、节点及存储介质 | |
CN111163034B (zh) | 区块链网络及其电子锁控制方法、终端设备及存储介质 | |
CN111079136A (zh) | 一种基于区块链技术的雾计算入侵检测特征共享系统 | |
CN111934870B (zh) | 区块链网络中的根证书更新方法、装置、设备以及介质 | |
CN111385096B (zh) | 一种区块链网络系统、签名处理方法、终端及存储介质 | |
CN112651001A (zh) | 访问请求的鉴权方法、装置、设备及可读存储介质 | |
Erwig et al. | Commitee: An efficient and secure commit-chain protocol using tees | |
CN111915308A (zh) | 一种区块链网络的交易处理方法及区块链网络 | |
Liu et al. | Fail-safe watchtowers and short-lived assertions for payment channels | |
Zhu et al. | A study on the challenges and solutions of blockchain interoperability | |
CN112037062B (zh) | 交易共识方法、装置、电子设备及可读存储介质 | |
Lin et al. | User-managed access delegation for blockchain-driven IoT services | |
KR102356725B1 (ko) | 계층 블록체인을 이용한 인증 및 정책 관리 방법 | |
WO2023098327A1 (zh) | 基于区块链的区块处理方法、装置、设备、存储介质及程序产品 | |
CN111383110A (zh) | 跨区块链的通证转移方法、装置及硬件设备 | |
CN115001707B (zh) | 基于区块链的设备认证方法和相关设备 | |
CN112926981A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |