共识系统和方法技术方案

技术编号:25532571 阅读:33 留言:0更新日期:2020-09-04 17:19
提供了共识方法、系统和装置,包括编码在计算机存储介质上的计算机程序。其中一个方法在由多个(N个)节点维护的区块链上实施。其中节点之一充当主节点,而其他(N‑1个)节点充当备节点。该方法包括:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议;以及响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。

【技术实现步骤摘要】
【国外来华专利技术】共识系统和方法
本申请总体上涉及用于共识系统和方法的方法和设备,尤其涉及用于改变主节点的共识系统和方法。
技术介绍
实用拜占庭容错(PBFT)是一种可以在分布式系统如区块链系统中实现的共识机制。PBFT共识机制使得分布式系统能够在安全性和活跃性方面达成足够的共识,尽管系统的某些节点可能发生故障(例如,由于网络连接不良或以其他方式变得有故障)或向其他对等方传播不正确的信息(例如,恶意行动)。这种机制的目的是通过减轻无功能节点对系统的正确功能的影响以及对由系统中功能节点(例如,无故障节点和诚实节点)达成的共识的影响来抵御灾难性的系统故障。PBFT共识机制侧重于通过假设存在独立节点故障和由特定并独立的节点传播的操纵消息来提供容忍拜占庭故障(例如,无功能节点)的实用拜占庭状态机复制。例如,在这种PBFT共识机制中,区块链系统中的所有节点按顺序排序,其中一个节点是主节点(也称为领导节点或主控节点),其他节点称为备节点(也称为追随者节点)。系统内的所有节点彼此通信,并且目标是让所有诚实节点对系统状态达成一致/共识。例如,为了使PBFT共识机制起作用,假设在给定的漏洞窗口中,区块链系统中的无功能节点的数量不能同时等于或超过系统中总节点数的三分之一。只要至多F个节点同时是无功能节点,该方法就有效地提供活跃性和安全性。换句话说,在一些实现中,PBFT共识机制可以容忍的无功能节点的数量F等于(N-1)/3向下取最接近整数,其中N表示系统中的节点总数。在一些实现中,实现PBFT共识机制的区块链系统可以处理多达F个拜占庭故障,其中总共存在至少3F+1个节点。PBFT共识机制通常可以包括正常操作协议(也称为三阶段协议)和视图更改协议,其中提供正常操作协议以确保机制的安全性,提供视图更改协议以确保机制的活跃性。正常操作协议按顺序主要包括三个阶段,即预准备阶段、准备阶段和提交(commit)阶段。所有阶段都是消息驱动的,即通过在当前阶段获得足够数量的消息来触发协议中的下一阶段。在正常操作协议期间,如果当前主节点变为无功能节点,则可以触发视图更改协议以便基于共识选举新的主节点。通过替换当前主节点,可以恢复正常操作协议以执行系统的功能。但是,对于要触发的视图更改协议,当前主节点必须显示出“无功能”行为,例如放弃交易(当PBFT共识机制用于验证区块链交易时)、操纵交易、伪造交易等。当系统尝试将这些行为编译成触发规则组群时,这些行为可能很复杂且容易被忽视。此外,视图更改协议也具有高通信成本。为了通过视图更改实现当前主节点的替换,需要O(N2)大小的通信容量的量,其中N个区块链节点中的每个节点需要发送N个消息(例如,视图更改消息、新视图消息等)至对等区块链节点。此外,可能需要执行多轮视图更改协议以改变当前主节点,这导致系统正常功能的不稳定性和中断。因此,期望提供一种替代解决方案来实现当前主节点改变而无需复杂的配置和通信负担。
技术实现思路
本文的各种实施例包括但不限于共识系统、方法和非暂态计算机可读介质。在一些实施例中,计算机实施的共识方法将在由多个(N个)节点维护的区块链上实施,其中节点之一充当主节点而其他(N-1个)节点充当备节点,并且该方法由N个节点之一执行。该方法包括:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行实用拜占庭容错(PBFT)正常操作协议;并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。在一些实施例中,该方法还包括:重复计算机实施的共识方法的上述步骤,以执行一轮或多轮PBFT正常操作协议;并且对于一轮或多轮中的每一轮,基于参数P和节点数N来改变主节点。在一些实施例中,当前长度H基于区块链中区块的数量;并且参数P对于N个节点中分别识别相同的区块链当前长度H的多个节点是相同的。在一些实施例中,每个节点与标识相关联;基于参数P和节点数N确定主节点包括:确定具有(PmodN)标识的节点之一作为主节点。在一些实施例中,执行PBFT正常操作协议包括:执行PBFT正常操作协议以将新区块添加到区块链。在一些实施例中,检测区块链的当前长度H的改变包括:检测到区块链中区块的数量增加了1。在一些实施例中,响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议包括:向至少一些备节点组播预准备消息;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中每个准备消息表示相应备节点接受预准备消息,Q(法定数量,quorum)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;向至少一些备节点组播提交消息,该提交消息表示主节点同意(Q-1)个或更多个准备消息;以及获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。在一些实施例中,在向至少一些所述备节点组播所述预准备消息之前,该方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端,或者一个或多个备节点;以及在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。在一些实施例中,Q个或更多个提交消息包括组播的提交消息。在一些实施例中,响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议包括:从主节点获得预准备消息;向主节点加其他(N-2个)备节点中的至少一些节点组播准备消息,该准备消息表示接受预准备消息;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,并且F是(N-1)/3向下取最接近的整数;向主节点加其他备节点中的至少一些节点组播提交消息,该提交消息表示该一个备节点同意(Q-1)个或更多个准备消息;以及获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。在一些实施例中,在从主节点获得预准备消息之前,该方法还包括从以下至少之一获得一个或多个交易请求:一个或多个客户端,主节点,或一个或多个其他备节点;以及在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。在一些实施例中,(Q-1)个或更多个准备消息包括组播的准备消息;Q个或更多个提交消息包括组播的提交消息。在一些实施例中,共识系统(例如,充当用于维护区块链的N个节点之一)包括一个或多个处理器和一个或多个计算机可读存储器,该一个或多个计算机可读存储器耦接到一个或多个处理器并且其上存储有指令,该指令能够由一个或多个处理器执行以执行任何前述实施例的方法。在一些实施例中,共识装置(例如,充当用于维护区块链的N个节点之一)包括用于执行任何前述实施例的方法的多个模块。...

【技术保护点】
1.一种计算机实施的共识方法,所述方法将在由多个、即N个节点维护的区块链上实施,其中所述节点之一充当主节点而其他N-1个节点充当备节点,并且所述方法由所述N个节点中的一个节点执行,所述方法包括:/n检测所述区块链的当前长度H的改变;/n基于参数P和节点数N确定所述主节点,其中所述参数P与所述区块链的所述当前长度H成比例;/n响应于确定所述N个节点中的该节点是所述主节点,作为所述主节点执行实用拜占庭容错PBFT正常操作协议;以及/n响应于确定所述N个节点中的该节点不是所述主节点,作为所述备节点之一执行PBFT正常操作协议。/n

【技术特征摘要】
【国外来华专利技术】1.一种计算机实施的共识方法,所述方法将在由多个、即N个节点维护的区块链上实施,其中所述节点之一充当主节点而其他N-1个节点充当备节点,并且所述方法由所述N个节点中的一个节点执行,所述方法包括:
检测所述区块链的当前长度H的改变;
基于参数P和节点数N确定所述主节点,其中所述参数P与所述区块链的所述当前长度H成比例;
响应于确定所述N个节点中的该节点是所述主节点,作为所述主节点执行实用拜占庭容错PBFT正常操作协议;以及
响应于确定所述N个节点中的该节点不是所述主节点,作为所述备节点之一执行PBFT正常操作协议。


2.根据权利要求1所述的方法,其中:
所述当前长度H基于所述区块链中区块的数量;并且
对于所述N个节点中分别识别相同的所述区块链的当前长度H的多个节点,所述参数P是相同的。


3.根据前述任一项权利要求所述的方法,其中:
每个所述节点关联有标识;并且
基于所述参数P和所述节点数N确定所述主节点包括:确定所述节点中具有(PmodN)标识的一个节点作为所述主节点。


4.根据前述任一项权利要求所述的方法,其中,执行所述PBFT正常操作协议包括:
执行所述PBFT正常操作协议以将新区块添加到所述区块链中。


5.根据前述任一项权利要求所述的方法,还包括:
重复权利要求1的所述步骤,以执行一轮或多轮所述PBFT正常操作协议;以及
对于所述一轮或多轮中的每一轮,基于所述参数P和所述节点数N来改变所述主节点。


6.根据前述任一项权利要求所述的方法,其中,检测所述区块链的所述当前长度H的改变包括:
检测到所述区块链中区块的数量增加了1。


7.根据前述任一项权利要求所述的方法,其中,响应于确定所述N个节点中的该节点是所述主节点,作为所述主节点执行PBFT正常操作协议包括:
向至少一些所述备节点组播预准备消息;
获得分别来自Q-1个或更多个节点的Q-1个或更多个准备消息,其中所述Q-1个或更多个准备消息各自表示相应备节点接受所述预准备消息,法定数量Q是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;
向至少一些所述备节点组播提交消息,所述提交消息表示所述主节点同意所述Q-1个或更多个准备消息;以及
获得分别来自所述主节点加所述备节点中的Q个或更多个节点的Q个或更多个提交消息,所述Q个或更多个提交消息各自表示相应节点同意由所述相应节点接收的Q-1个或更多个准备消息。


8.根据权利要...

【专利技术属性】
技术研发人员:杨达一
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1