CN114726866A - 联盟链的共识节点维护方法、电子设备、存储介质 - Google Patents
联盟链的共识节点维护方法、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114726866A CN114726866A CN202210365198.8A CN202210365198A CN114726866A CN 114726866 A CN114726866 A CN 114726866A CN 202210365198 A CN202210365198 A CN 202210365198A CN 114726866 A CN114726866 A CN 114726866A
- Authority
- CN
- China
- Prior art keywords
- node
- consensus
- transaction
- account
- consensus node
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- 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/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- 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/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Environmental & Geological Engineering (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请提供一种联盟链的共识节点维护方法、电子设备、计算机可读存储介质,方法包括:第一共识节点通过本地P2P模块确定与第二共识节点的通信状态发生变更时,向联盟链中故障节点管理合约发起状态变更交易;其中,故障节点管理合约部署于每一共识节点;任一共识节点的故障节点管理合约接收所述状态变更交易后,基于所述状态变更交易指示的第二共识节点的节点账户,更新故障节点列表;任一共识节点的共识模块依据第二共识节点的节点账户对于所述故障节点列表的变更情况,更新本地的共识节点列表。本申请方案,联盟链可以自主伸缩,共识节点列表始终记录当前正常运行的共识节点,共识机制不会受到故障节点的影响,保证了联盟链的稳定运行。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种联盟链的共识节点维护方法、电子设备、计算机可读存储介质。
背景技术
联盟链系统通过PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)共识机制来维护系统中的共识节点,控制共识节点加入或退出联盟链。然而,若联盟链中超过三分之一共识节点所在设备发生故障时,其余共识节点无法达成共识,联盟链也无法产生新的区块。这种情况下,联盟链网络实际上已经陷入瘫痪状态。除了修复发生故障的共识节点所在设备,没有其它方式使联盟链恢复运行,这对于联盟链的稳定运行是个隐患。
发明内容
本申请实施例的目的在于提供一种联盟链的共识节点维护方法、电子设备、计算机可读存储介质,用于使联盟链自主缩放共识节点,避免共识机制受故障节点影响而陷于瘫痪状态,保证了联盟链的稳定运行和健壮性。
一方面,本申请方案提供了一种联盟链的共识节点维护方法,应用于联盟链,所述联盟链包括多个共识节点,包括:
第一共识节点通过本地P2P模块确定与第二共识节点的通信状态发生变更时,向所述联盟链中故障节点管理合约发起状态变更交易;其中,所述故障节点管理合约部署于每一共识节点;
任一共识节点的故障节点管理合约接收所述状态变更交易后,基于所述状态变更交易指示的第二共识节点的节点账户,更新故障节点列表;
任一共识节点的共识模块依据第二共识节点的节点账户对于所述故障节点列表的变更情况,更新本地的共识节点列表。
在一实施例中,在所述向所述联盟链中故障节点管理合约发起状态变更交易之前,所述方法还包括:
所述第一共识节点通过本地P2P模块,确定与所述第二共识节点无法通信时,所述通信状态由可通信状态变为不可通信状态;或,
所述第一共识节点通过本地P2P模块,确定与所述第二共识节点恢复通信时,所述通信状态由不可通信状态变为可通信状态。
在一实施例中,在所述更新故障节点列表之前,所述方法还包括:
所述故障节点管理合约针对状态变更交易的发起方账户进行去重处理,获得若干去重后的发起方账户;其中,每一发起方账户对应于一个共识节点;
所述故障节点管理合约判断去重后发起方账户的数量,与所述共识节点列表中共识节点账户总量之间的比值,是否达到指定比值;
若达到,执行所述更新故障节点列表的步骤。
在一实施例中,所述方法还包括:
所述故障节点管理合约接收所述状态变更交易之后,判断发起所述状态变更交易的共识节点的节点账户,是否位于所述共识节点列表;
如果是,执行所述更新故障节点列表的步骤,或者,执行所述针对状态变更交易的发起方账户进行去重处理的步骤;
如果否,忽略所述状态变更交易。
在一实施例中,在所述更新本地的共识节点列表之前,所述方法还包括:
任一共识节点的合约监控模块获得新区块后,判断所述新区块中是否存在状态变更交易;
若存在所述状态变更交易,所述合约监控模块触发所述共识模块执行更新共识节点列表的步骤。
在一实施例中,所述方法还包括:
第三共识节点响应于提案指令,向所述联盟链中共识节点管理合约发起对应于所述提案指令中指定节点账户的节点提案交易;其中,所述节点提案交易申请将所述指定节点账户加入或退出所述联盟链;
第四共识节点响应于投票指令,向所述共识节点管理合约发起对应于所述节点提案交易的提案投票交易;
任一共识节点的共识节点管理合约接收所述节点提案交易和所述提案投票交易后,基于所述指定节点账户更新临时节点列表;
任一共识节点的共识模块依据所述临时节点列表中的指定节点账户,更新本地的共识节点列表。
在一实施例中,在所述基于所述指定节点账户更新临时节点列表之前,所述方法还包括:
所述共识节点管理合约针对所述节点提案交易的发起方账户,以及同意所述节点提案交易的提案投票交易的发起方账户进行去重处理,获得若干去重后的发起方账户;其中,每一发起方账户对应于一个联盟链管理员;
所述共识节点管理合约判断去重后发起方账户的数量,与预设管理员账户列表中管理员账户总量之间的比值,是否达到指定比值;
若达到,执行所述基于所述指定节点账户更新临时节点列表的步骤。
在一实施例中,所述方法还包括:
所述共识节点管理合约接收所述节点提案交易或所述提案投票交易之后,判断所述节点提案交易或所述提案投票交易的发起方账户,是否位于所述管理员账户列表;
如果是,执行所述基于所述指定节点账户更新临时节点列表的步骤,或者,执行所述去重处理的步骤;
如果否,忽略所述节点提案交易或所述提案投票交易。
在一实施例中,在所述任一共识节点的共识模块依据所述临时节点列表中的指定节点账户,更新本地的共识节点列表之前,所述方法还包括:
任一共识节点的合约监控模块获得新区块后,判断所述新区块中是否存在节点提案交易或提案投票交易;
若存在所述节点提案交易或所述提案投票交易,所述合约监控模块触发所述共识模块执行依据指定节点账户更新共识节点列表的步骤。
另一方面,本申请提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述联盟链的共识节点维护方法。
此外,本申请提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述联盟链的共识节点维护方法。
本申请方案,联盟链中任一节点发生故障或恢复正常时,其它节点可以通过P2P模块检测其通信状态的变化,并由此发起状态变更交易,使得联盟链的共识节点可以自行更新故障节点列表和共识节点列表,这种情况下,共识节点列表始终记录当前正常运行的共识节点,共识机制不会受到故障节点的影响,保证了联盟链的稳定运行。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的联盟链的共识节点维护方法的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请一实施例提供的联盟链的共识节点维护方法的流程示意图;
图4为本申请一实施例提供的联盟链宕机场景示意图;
图5为本申请另一实施例提供的联盟链宕机场景示意图;
图6为本申请一实施例提供的联盟链恶意攻击的场景示意图;
图7为本申请另一实施例提供的联盟链的共识节点维护方法的流程示意图;
图8为本申请一实施例提供的联盟链架构的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的联盟链的共识节点维护方法的应用场景示意图。如图1所示,该应用场景包括构成联盟链的多个共识节点20,共识节点20可以是主机、服务器、服务器集群或云计算中心,每一共识节点20均可用于执行共识节点维护方法。
图2为本申请一实施例提供的电子设备的结构示意图。该电子设备200可以用于执行本申请实施例提供的联盟链的共识节点维护方法。如图2所示,该电子设备200包括:一个或多个处理器202、一个或多个存储处理器可执行指令的存储器204。其中,所述处理器202被配置为执行本申请下述实施例提供的联盟链的共识节点维护方法。
所述处理器202可以是包含中央处理单元(CPU)、图像处理单元(GPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对所述电子设备200中的其它组件的数据进行处理,还可以控制所述电子设备200中的其它组件以执行期望的功能。
所述存储器204可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器202可以运行所述程序指令,以实现下文所述的联盟链的共识节点维护方法。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
在一实施例中,图2所示电子设备200还可以包括输入装置206、输出装置208以及数据采集装置210,这些组件通过总线系统212和/或其它形式的连接机构(未示出)互连。应当注意,图2所示的电子设备200的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备200也可以具有其他组件和结构。
所述输入装置206可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。所述输出装置208可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。所述数据采集装置210可以采集对象的图像,并且将所采集的图像存储在所述存储器204中以供其它组件使用。示例性地,该数据采集装置210可以为摄像头。
在一实施例中,用于实现本申请实施例的联盟链的共识节点维护方法的示例电子设备200中的各器件可以集成设置,也可以分散设置,诸如将处理器202、存储器204、输入装置206和输出装置208集成设置于一体,而将数据采集装置210分离设置。
在一实施例中,用于实现本申请实施例的联盟链的共识节点维护方法的示例电子设备200可以被实现为诸如笔记本电脑、台式电脑、服务器等智能设备。
参见图3,为本申请一实施例提供的联盟链的共识节点维护方法的流程示意图,如图3所示,该方法可以包括以下步骤310-步骤330。
步骤310:第一共识节点通过本地P2P模块确定与第二共识节点的通信状态发生变更时,向联盟链中故障节点管理合约发起状态变更交易;其中,故障节点管理合约部署于每一共识节点。
第一共识节点可以为联盟链中任一共识节点;第二共识节点可以为联盟链中除第一共识节点以外的任一共识节点。在一实施例中,联盟链可以为多个企业、互联网法院和公证机构用于司法存证的区块链。
故障节点管理合约为部署于联盟链的智能合约,用于确认联盟链中发生故障的共识节点。
联盟链中每一共识节点,可以通过本地的P2P(Peer to Peer,对等网络)模块与其它共识节点互相周期性发送心跳报文,并在接收到任一共识节点发送的心跳报文后返回回应报文。对于任意两个共识节点而言,若两者能够正常发送心跳报文和回应报文,说明两者处于可通信状态;若其中一个共识节点无法接收另一共识节点发送的心跳报文或回应报文,说明两者处于不可通信状态。
联盟链运行过程中,可能存在一些共识节点因网络故障或设备故障导致宕机,此时,宕机的共识节点与其它共识节点无法通信。而当宕机的共识节点所在设备或网络经过维修恢复正常后,可以恢复与其它共识节点之间的通信。
当第一共识节点确定与第二共识节点之间的通信状态发生变更时,可以向故障节点管理合约发起状态变更交易。这里,状态变更交易的发起方账户为第一共识节点的节点账户,接收方账户为故障节点管理合约的合约地址。
步骤320:任一共识节点的故障节点管理合约接收状态变更交易后,基于状态变更交易指示的第二共识节点的节点账户,更新故障节点列表。
其中,故障节点列表用于记录联盟链中存在故障而无法与其它共识节点通信的共识节点的节点账户,节点账户与共识节点一一对应,用于指示共识节点在联盟链中的身份。
任一共识节点上的故障节点管理合约均可以接收到状态变更交易。参见图4,为本申请一实施例提供的联盟链宕机场景示意图,如图4所示,共识节点3发生故障,与共识节点1、共识节点2和共识节点4均无法通信。这种情况下,共识节点1可以向共识节点2和共识节点4的故障节点管理合约发送状态变更交易;共识节点2可以向共识节点1和共识节点4的故障节点管理合约发送状态变更交易;共识节点4可以向共识节点1和共识节点2的故障节点管理合约发送状态变更交易。上述状态变更交易均指示共识节点3发生故障。
故障节点管理合约可以根据状态变更交易指示的第二共识节点的节点账户,对本地的故障节点列表进行更新。
故障节点管理合约可以检查状态表更交易指示的通信状态变更情况。
一种情况下,如果状态变更交易指示通信状态由可通信状态变为不可通信状态,说明第二共识节点发生故障,故障节点管理合约可以将第二共识节点的节点账户加入故障节点列表。
另一种情况下,如果状态变更交易指示通信状态由不可通信状态变为可通信状态,说明第二共识节点恢复正常,故障节点管理合约可以从故障节点列表删除第二共识节点的节点账户。
步骤330:任一共识节点的共识模块依据第二共识节点的节点账户对于故障节点列表的变更情况,更新本地的共识节点列表。
其中,共识节点列表用于记录联盟链中正常运行的共识节点的节点账户。每一共识节点可以分别维护一个共识节点列表。
任一共识节点的故障节点列表更新之后,该共识节点的共识模块可以根据第二共识节点对于故障节点列表的变更情况,确定第二共识节点出现故障无法通信、或恢复正常能够通信,从而更新本地的共识节点列表。
一种情况下,如果第二共识节点的节点账户被添加到故障节点列表,可以确定第二共识节点发生故障,此时应将其从联盟链剔除,共识模块可以从共识节点列表删除第二共识节点的节点账户。
另一种情况下,如果第二共识节点的节点账户从故障节点列表中被删除,可以确定第二共识节点恢复正常,此时应将其重新加入联盟链,共识模块可以将第二共识节点的节点账户加入共识节点列表。
参见图5,为本申请另一实施例提供的联盟链宕机场景示意图,图4中的共识节点3发生故障,其它共识节点发起状态变更交易,使得共识节点1、共识节点2和共识节点4的共识节点列表均剔除共识节点3,联盟链从4个共识节点收缩为3个共识节点。
通过上述措施,联盟链可以自主维护共识节点,在任一共识节点发生故障或恢复正常时,更新故障节点列表和共识节点列表,使得共识节点列表中可以实时记录当前正常运行的共识节点,共识机制可基于共识节点列表中记录的共识节点来实现,不会受到故障节点的影响,保证了联盟链的稳定运行。
在一实施例中,第一共识节点通过本地P2P模块,确定与第二共识节点无法通信时,可以确定通信状态由可通信状态变为不可通信状态。这种情况下,第一共识节点可以发起状态变更交易,该状态变更交易指示第二共识节点发生故障。
对于已经发生故障的第二共识节点,第一共识节点通过本地P2P模块,确定与第二共识节点恢复通信时,可以确定通信状态由不可通信状态变为可通信状态。这种情况下,第一共识节点可以发起状态变更交易,该状态变更交易指示第二共识节点恢复正常。
通过该措施,联盟链中共识节点在于任一其它共识节点的通信状态发生变化时,发起状态变更交易,使得后续联盟链可以自主伸缩。
在一实施例中,任一共识节点的故障节点管理合约在更新故障节点列表之前,需要确认第二共识节点是否发生故障。
故障节点管理合约在获得若干对应于第二共识节点的状态变更交易后,可以针对状态变更交易的发起方账户进行去重处理,从而获得若干去重后的发起方账户。这里,由于状态变更交易由共识节点通过自身节点账户发起,每一发起方账户对应于一个共识节点。
示例性的,故障节点管理合约接收到10个指示第二共识节点发生故障的状态变更交易,且其中有4个状态变更交易由同一共识节点发起。故障节点管理合约解析出10个状态变更交易的发起者地址后,进行去重处理,从而得到7个不重复的发起者地址,说明状态变更交易由7个共识节点发起。
故障节点管理合约可以判断去重后发起方账户的数量,与共识节点列表中共识节点账户总量之间的比值,是否达到指定比值。这里,指定比值可以是经验值,该指定比值大于等于0.5。
一方面,若未达到该指定比值,说明第二共识节点的状态变更情况无法核实,此时,故障节点管理合约可以不作处理。示例性的,第一共识节点与第二共识节点在通信过程中因网络原因产生丢包,此时,第一共识节点确定第二共识节点的通信状态发生变更,并发起状态变更交易。然而,第二共识节点能够与联盟链中其它共识节点正常通信,此时,故障节点管理合约从接收到的状态变更交易中仅解析出第一共识节点的节点账户,发起者账户与共识节点账户总量之间的比值未达到指定比值,无需处理。
另一方面,若达到该指定比值,说明第二共识节点的状态变更情况经过核实,此时故障节点管理合约可以基于第二共识节点的状态变更情况,更新本地的故障节点列表。
通过上述措施,故障节点管理合约可以根据状态变更交易的发起者数量与共识节点账户总量之间的占比,核实状态变更交易指示的通信状态变更情况的真实性,避免误判共识节点的通信状态。
在一实施例中,故障节点管理合约在接收到状态变更交易之后,可以判断发起状态变更交易的共识节点的节点账户,是否位于本地的共识节点列表。从状态变更交易中解析出发起者账户后,可以在共识节点列表中查找该发起者账户。
一种情况下,若位于共识节点列表,说明状态变更交易为合法账户地址发起,故障节点管理合约可以继续更新故障节点列表的步骤。或者,故障节点管理合约可以继续执行对状态变更交易的发起方账户进行去重处理的步骤。
另一种情况下,若不位于共识节点列表,说明状态变更交易未非法账户地址发起,此时状态变更交易无效,故障节点管理合约可以忽略该状态变更交易。被忽略的状态变更交易后续不再被用于打包新区块。
通过上述措施,可以保证状态变更交易均有联盟链中合法账户发起,从而防范了共识节点通过非法账户发起状态变更交易的恶意攻击行为。
参见图6,为本申请一实施例提供的联盟链恶意攻击的场景示意图,如图6所示,联盟链中包括共识节点1、共识节点2、共识节点3、共识节点4,各共识节点对应的账户分别为账户A、账户B、账户C和账户D。每两个共识节点之间通过P2P连接。当共识节点3恶意攻击联盟链时,向联盟链中故障节点管理合约发起状态变更交易,该状态变更交易指示共识节点1产生故障。这里,共识节点3可以通过两种方式进行攻击。方式一:共识节点3通过账户C多次发起状态变更交易。方式二:共识节点3通过多个非法账户发起状态变更交易。
对于方式一的攻击行为,故障节点管理合约通过前述发起方账户去重处理的操作,可以确定仅账户C发起状态变更交易。此时,通过发起方账户的数量与共识节点账户总量的比值,可以确定无需处理。
对于方式二的攻击行为,故障节点管理合约通过前述检查发起方账户是否位于共识节点列表的操作,可以筛选出非法账户发起的状态表更交易,并忽略此类交易。
因此,通过执行本申请方案,可以解决方式一和方式二的恶意攻击行为,确保本申请维护的共识节点列表记录当前正常运行的所有共识节点。
在一实施例中,任一共识节点的共识模块在更新本地的共识节点列表之前,可以通过共识节点上的合约监控模块触发共识模块。
联盟链各共识节点在接收交易后,可以基于交易打包出新区块,并将新区块传递至其它共识节点。若在产生新区块之前,联盟链中存在共识节点的通信状态发生变更,则新区块内包括状态变更交易。
任一共识节点的合约监控模块从其它共识节点或本地获得新区块后,可以判断新区块中是否存在状态变更交易。合约监控模块可以判断各交易的接收方账户是否为故障节点管理合约的合约地址,从而确定交易是否为状态变更交易。
一方面,若不存在状态变更交易,则无需更新共识节点列表,合约监控模块可不作处理。另一方面,若存在状态变更交易,则可能需要更新共识节点列表,合约监控模块可以触发共识模块,使得共识模块可以执行更新共识节点列表的步骤。
通过该措施,可由合约监控模块对新区块进行监控,在新区块中存在状态变更交易的情况下,触发共识模块更新共识节点列表。
在一实施例中,联盟链有新的共识节点要加入或有共识节点退出时,可由联盟链管理员通过共识节点发起节点提案交易,参见图7,为本申请另一实施例提供的联盟链的共识节点维护方法的流程示意图,该方法可以包括如下步骤710-步骤740。
步骤710:第三共识节点响应于提案指令,向联盟链中共识节点管理合约发起对应于提案指令中指定节点账户的节点提案交易;其中,节点提案交易申请将指定节点账户加入或退出联盟链。
其中,提案指令用于控制共识节点发起节点提案交易,提案指令可由联盟链管理员下发。这里,联盟链管理员可以是联盟链各个共识节点对应机构负责维护联盟链的人员。第三共识节点可以为联盟链中任一共识节点。
共识节点管理合约可以部署于联盟链的每一共识节点,用于管理加入或退出联盟链的共识节点。
当第三共识节点获取到提案指令,从提案指令解析出要加入或退出联盟链的指定节点账户后,可以向共识节点管理合约发起节点提案交易。这里,节点提案交易的发起方账户为联盟链管理员的管理员账户,而非第三共识节点自身的节点账户;接收方账户为共识节点管理合约的合约地址。
步骤720:第四共识节点响应于投票指令,向共识节点管理合约发起对应于节点提案交易的提案投票交易。
其中,投票指令用于控制共识节点发起提案投票交易,投票指令可由联盟链管理员下发。第四共识节点可以为联盟链中除了第三共识节点以外的共识节点。
在发起针对指定节点账户的节点提案交易之后,联盟链除第三共识节点的管理员以外的管理员可以下发投票指令,以对指定节点账户是否加入或退出联盟链进行投票。第四共识节点获取到投票指令后,可以依据投票指令所指示的投票选项(同意或拒绝),向共识节点管理合约发起提案投票交易。这里,提案投票交易的发起方账户为联盟链管理员的管理员账户,而非第四共识节点自身的节点账户;接收方账户为共识节点管理合约的合约地址。
步骤730:任一共识节点的共识节点管理合约接收节点提案交易和提案投票交易后,基于指定节点账户更新临时节点列表。
共识节点管理合约接收到节点提案交易,以及节点提案交易的若干提案投票交易后,可以基于提案投票交易的投票选项确定节点提案交易对应的加入申请或退出申请是否通过。当通过时,共识节点管理合约可以以指定节点账户更新临时节点列表。这里,临时节点列表用于记录共识节点管理合约确定需加入或退出联盟链的节点账户,临时节点列表中可以记录节点账户对应的申请动作(加入或退出)。
步骤740:任一共识节点的共识模块依据临时节点列表中的指定节点账户,更新本地的共识节点列表。
任一共识节点的临时节点列表更新之后,该共识节点的共识模块可以根据临时节点列表中所记录的指定节点账户,以及指定节点账户对应的申请动作,更新本地的共识节点列表。一方面,若指定节点账户对应的申请动作为加入联盟链,共识模块可以将指定节点账户加入共识节点列表,使得搭载该指定节点账户的共识节点可以加入到联盟链中。另一方面,若指定节点账户对应的申请动作为退出联盟链,共识模块可以从共识节点列表中删除指定节点账户,从而从联盟链中将搭载指定节点账户的共识节点剔除。
通过上述措施,在联盟链维持运行的情况下,可以对联盟链中共识节点进行扩充或删减。
在一实施例中,共识节点管理合约在基于指定节点账户更新临时节点列表之前,需要确认节点提案交易对应的加入申请或退出申请是否通过。
共识节点管理合约在获得节点提案交易和若干提案投票交易之后,可以筛选出投票选项为同一节点提案交易的提案投票交易,从节点提案交易和筛选出的提案投票交易中解析出多个发起方账户后,可以对多个发起方账户进行去重处理,获得若干去重后的发起方账户。这里,由于节点提案交易和提案投票交易均由联盟链管理员通过管理员账户发起,每一发起方账户对应于一个联盟链管理员。
共识节点管理合约可以判断去重后发起方账户的数量,与预设管理员账户列表中管理员账户总量之间的比值,是否达到指定比值。这里,指定比值可以是经验值,该指定比值大于等于0.5。管理员账户列表可以记录联盟链中所有共识节点对应的管理员账户。示例性的,联盟链为多个企业、互联网法院和公证机构用于司法存证的区块链,每一企业、互联网法院和公证机构均有对应的共识节点,每一共识节点具有对应的管理员账户。
一方面,若未达到该指定比值,说明节点提案交易对应的加入申请或退出申请未通过投票,此时,共识节点管理合约可以不作处理。另一方面,若达到该指定比值,说明节点提案交易对应的加入申请或退出申请通过投票,此时,共识节点管理合约可以基于指定节点账户更新临时节点列表。
通过上述措施,共识节点管理合约可以进行投票结果统计,从而确定节点提案交易对应的加入申请或退出申请是否通过。
在一实施例中,共识节点管理合约在接收节点提案交易或提案投票交易之后,可以判断节点提案交易或提案投票交易的发起方账户,是否位于管理员账户列表。从交易中只能怪解析出发起方账户后,可以在管理员账户列表查找该发起方账户。
一种情况下,若位于管理员账户列表,说明节点提案交易或提案投票交易为联盟链管理员发起,共识节点管理合约可以基于上述节点提案交易或提案投票交易,执行后续更新临时节点列表的步骤。或者,共识节点管理合约可以继续执行对交易的发起方账户去重处理的步骤。
另一种情况下,若不位于管理员账户列表,说明节点提案交易或提案投票交易并非联盟链管理员发起,此时节点提案交易或提案投票交易无效,共识节点管理合约可以忽略该节点提案交易或提案投票交易。被忽略的节点提案交易或提案投票交易不再被用于打包新区块。
通过上述措施,可以保证对节点账户加入或退出联盟链的提案的发起者及投票均为联盟链管理员,从而防范了联盟链中的共识节点被恶意调整。
在一实施例中,任一共识节点的共识模块在依据临时节点列表中的指定节点账户,更新本地的共识节点列表之前,可以通过共识节点上的合约监控模块触发共识模块。
联盟链各共识节点在接收交易后,可以基于交易打包出新区块,并将新区块传递至其它共识节点。若在产生新区块之前,联盟链中有新的共识节点加入或有共识节点退出,则新区块内可以包括节点提案交易或提案投票交易。
任一共识节点的合约监控模块从其它共识节点或本地获得新区块后,可以判断新区块中是否存在节点提案交易或提案投票交易。合约监控模块可以判断各交易的接收方账户是否为共识节点管理合约的合约地址,从而驱动交易是否为节点提案交易或提案投票交易。
一方面,若不存在节点提案交易或提案投票交易,说明没有共识节点加入或退出联盟链,合约监控模块可以不作处理。另一方面,若存在节点提案交易或提案投票交易,合约监控模块可以触发共识模块执行依据指定节点账户更新共识节点列表的步骤。
通过该措施,可由合约监控模块对新区块进行监控,在新区块中存在节点提案交易或提案投票交易的情况下,触发共识模块更新共识节点列表。
参见图8,为本申请一实施例提供的联盟链架构的示意图,如图8所示,联盟链包括共识节点以及部署于每一共识节点的智能合约。智能合约包括共识节点管理合约和故障节点管理合约,共识节点管理合约用于管理节点入网和节点退网,故障节点管理合约用于管理节点故障和节点恢复。共识节点包括合约监控模块、共识模块、交易管理模块和P2P模块,合约监控模块用于对新区块中发往共识节点管理合约和故障节点管理合约的交易进行监控,并回调触发共识模块;共识模块用于更新共识节点本地的共识节点列表;交易管理模块用于发送交易;P2P模块用于通过心跳保活机制确定与其它共识节点能否正常通信。各模块和合约的具体执行逻辑详见前文相关描述,在此不再赘述。
Claims (11)
1.一种联盟链的共识节点维护方法,应用于联盟链,所述联盟链包括多个共识节点,其特征在于,包括:
第一共识节点通过本地P2P模块确定与第二共识节点的通信状态发生变更时,向所述联盟链中故障节点管理合约发起状态变更交易;其中,所述故障节点管理合约部署于每一共识节点;
任一共识节点的故障节点管理合约接收所述状态变更交易后,基于所述状态变更交易指示的第二共识节点的节点账户,更新故障节点列表;
任一共识节点的共识模块依据第二共识节点的节点账户对于所述故障节点列表的变更情况,更新本地的共识节点列表。
2.根据权利要求1所述的方法,其特征在于,在所述向所述联盟链中故障节点管理合约发起状态变更交易之前,所述方法还包括:
所述第一共识节点通过本地P2P模块,确定与所述第二共识节点无法通信时,所述通信状态由可通信状态变为不可通信状态;或,
所述第一共识节点通过本地P2P模块,确定与所述第二共识节点恢复通信时,所述通信状态由不可通信状态变为可通信状态。
3.根据权利要求1所述的方法,其特征在于,在所述更新故障节点列表之前,所述方法还包括:
所述故障节点管理合约针对状态变更交易的发起方账户进行去重处理,获得若干去重后的发起方账户;其中,每一发起方账户对应于一个共识节点;
所述故障节点管理合约判断去重后发起方账户的数量,与所述共识节点列表中共识节点账户总量之间的比值,是否达到指定比值;
若达到,执行所述更新故障节点列表的步骤。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述故障节点管理合约接收所述状态变更交易之后,判断发起所述状态变更交易的共识节点的节点账户,是否位于所述共识节点列表;
如果是,执行所述更新故障节点列表的步骤,或者,执行所述针对状态变更交易的发起方账户进行去重处理的步骤;
如果否,忽略所述状态变更交易。
5.根据权利要求1所述的方法,其特征在于,在所述更新本地的共识节点列表之前,所述方法还包括:
任一共识节点的合约监控模块获得新区块后,判断所述新区块中是否存在状态变更交易;
若存在所述状态变更交易,所述合约监控模块触发所述共识模块执行更新共识节点列表的步骤。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
第三共识节点响应于提案指令,向所述联盟链中共识节点管理合约发起对应于所述提案指令中指定节点账户的节点提案交易;其中,所述节点提案交易申请将所述指定节点账户加入或退出所述联盟链;
第四共识节点响应于投票指令,向所述共识节点管理合约发起对应于所述节点提案交易的提案投票交易;
任一共识节点的共识节点管理合约接收所述节点提案交易和所述提案投票交易后,基于所述指定节点账户更新临时节点列表;
任一共识节点的共识模块依据所述临时节点列表中的指定节点账户,更新本地的共识节点列表。
7.根据权利要求6所述的方法,其特征在于,在所述基于所述指定节点账户更新临时节点列表之前,所述方法还包括:
所述共识节点管理合约针对所述节点提案交易的发起方账户,以及同意所述节点提案交易的提案投票交易的发起方账户进行去重处理,获得若干去重后的发起方账户;其中,每一发起方账户对应于一个联盟链管理员;
所述共识节点管理合约判断去重后发起方账户的数量,与预设管理员账户列表中管理员账户总量之间的比值,是否达到指定比值;
若达到,执行所述基于所述指定节点账户更新临时节点列表的步骤。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述共识节点管理合约接收所述节点提案交易或所述提案投票交易之后,判断所述节点提案交易或所述提案投票交易的发起方账户,是否位于所述管理员账户列表;
如果是,执行所述基于所述指定节点账户更新临时节点列表的步骤,或者,执行所述去重处理的步骤;
如果否,忽略所述节点提案交易或所述提案投票交易。
9.根据权利要求6所述的方法,其特征在于,在所述任一共识节点的共识模块依据所述临时节点列表中的指定节点账户,更新本地的共识节点列表之前,所述方法还包括:
任一共识节点的合约监控模块获得新区块后,判断所述新区块中是否存在节点提案交易或提案投票交易;
若存在所述节点提案交易或所述提案投票交易,所述合约监控模块触发所述共识模块执行依据指定节点账户更新共识节点列表的步骤。
10.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-9任意一项所述的联盟链的共识节点维护方法。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-9任意一项所述的联盟链的共识节点维护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210365198.8A CN114726866A (zh) | 2022-04-07 | 2022-04-07 | 联盟链的共识节点维护方法、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210365198.8A CN114726866A (zh) | 2022-04-07 | 2022-04-07 | 联盟链的共识节点维护方法、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114726866A true CN114726866A (zh) | 2022-07-08 |
Family
ID=82241664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210365198.8A Pending CN114726866A (zh) | 2022-04-07 | 2022-04-07 | 联盟链的共识节点维护方法、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114726866A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180019921A1 (en) * | 2016-07-15 | 2018-01-18 | Mastercard International Incorporated | Method and system for node discovery and self-healing of blockchain networks |
US20200007513A1 (en) * | 2018-06-29 | 2020-01-02 | Arm Ip Limited | Blockchain infrastructure for securing and/or managing electronic artifacts |
CN111444210A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 区块链共识节点管理方法、装置、设备以及存储介质 |
CN112422341A (zh) * | 2020-11-18 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 区块链网络的故障检测方法及相关设备 |
CN112511338A (zh) * | 2020-11-09 | 2021-03-16 | 迅鳐成都科技有限公司 | 区块链共识网络动态恢复方法、电子设备、系统及介质 |
CN112612496A (zh) * | 2020-12-28 | 2021-04-06 | 杭州趣链科技有限公司 | 智能合约操作管理方法、装置、设备和计算机存储介质 |
CN112837162A (zh) * | 2021-03-12 | 2021-05-25 | 中国工商银行股份有限公司 | 一种基于区块链的数据交互方法、节点及系统 |
CN113157709A (zh) * | 2021-01-29 | 2021-07-23 | 百果园技术(新加坡)有限公司 | 分布式系统节点动态变更方法、装置、设备及存储介质 |
CN113660125A (zh) * | 2021-08-18 | 2021-11-16 | 中国科学技术大学 | 一种基于随机可信委员会的共识方法及装置 |
CN113761062A (zh) * | 2021-08-26 | 2021-12-07 | 浙商银行股份有限公司 | 一种自适应共识算法切换方法、设备及存储介质 |
CN114239044A (zh) * | 2021-10-18 | 2022-03-25 | 国网内蒙古东部电力有限公司 | 一种去中心化的可追溯共享访问系统 |
-
2022
- 2022-04-07 CN CN202210365198.8A patent/CN114726866A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180019921A1 (en) * | 2016-07-15 | 2018-01-18 | Mastercard International Incorporated | Method and system for node discovery and self-healing of blockchain networks |
US20200007513A1 (en) * | 2018-06-29 | 2020-01-02 | Arm Ip Limited | Blockchain infrastructure for securing and/or managing electronic artifacts |
CN111444210A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 区块链共识节点管理方法、装置、设备以及存储介质 |
CN112511338A (zh) * | 2020-11-09 | 2021-03-16 | 迅鳐成都科技有限公司 | 区块链共识网络动态恢复方法、电子设备、系统及介质 |
CN112422341A (zh) * | 2020-11-18 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 区块链网络的故障检测方法及相关设备 |
CN112612496A (zh) * | 2020-12-28 | 2021-04-06 | 杭州趣链科技有限公司 | 智能合约操作管理方法、装置、设备和计算机存储介质 |
CN113157709A (zh) * | 2021-01-29 | 2021-07-23 | 百果园技术(新加坡)有限公司 | 分布式系统节点动态变更方法、装置、设备及存储介质 |
CN112837162A (zh) * | 2021-03-12 | 2021-05-25 | 中国工商银行股份有限公司 | 一种基于区块链的数据交互方法、节点及系统 |
CN113660125A (zh) * | 2021-08-18 | 2021-11-16 | 中国科学技术大学 | 一种基于随机可信委员会的共识方法及装置 |
CN113761062A (zh) * | 2021-08-26 | 2021-12-07 | 浙商银行股份有限公司 | 一种自适应共识算法切换方法、设备及存储介质 |
CN114239044A (zh) * | 2021-10-18 | 2022-03-25 | 国网内蒙古东部电力有限公司 | 一种去中心化的可追溯共享访问系统 |
Non-Patent Citations (1)
Title |
---|
段靓;吕鑫;刘凡;: "基于信任委托的区块链分层共识优化", 计算机工程, no. 10 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740975B2 (en) | System and method for managing blockchain nodes | |
EP2987090B1 (en) | Distributed event correlation system | |
US10348577B2 (en) | Discovering and monitoring server clusters | |
JP6827501B2 (ja) | ホットバックアップシステム、ホットバックアップ方法、及びコンピュータ機器 | |
TWI704788B (zh) | 經組態以實施一有條件觸發規則的具有多伺服器節點之實體安全系統 | |
CN107480014B (zh) | 一种高可用设备切换方法及装置 | |
CN104335159A (zh) | 间隔控制复制 | |
US20140059315A1 (en) | Computer system, data management method and data management program | |
US20100088300A1 (en) | Resource tracking | |
CN111104282A (zh) | 一种基于区块链的节点处理方法和装置 | |
CN110291505A (zh) | 减少应用的恢复时间 | |
US20160050113A1 (en) | Methods for managing storage virtual machine configuration changes in a distributed storage system and devices thereof | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
WO2018076696A1 (zh) | 一种数据同步方法及带外管理设备 | |
WO2017080362A1 (zh) | 数据管理方法及装置 | |
JP6839347B2 (ja) | パケットキャプチャプログラム、パケットキャプチャ装置及びパケットキャプチャ方法 | |
CN114726866A (zh) | 联盟链的共识节点维护方法、电子设备、存储介质 | |
CN112511337B (zh) | 区块链共识网络自恢复方法、电子设备、系统及存储介质 | |
Aniello et al. | Assessing data availability of Cassandra in the presence of non-accurate membership | |
CN102368268B (zh) | 一种实现多元数据一致性的方法 | |
CN106789150B (zh) | 一种网络故障检测方法及装置 | |
JP2015201027A (ja) | ノードおよびプログラム | |
CN116991635B (zh) | 数据同步方法和数据同步装置 | |
CN113010337B (zh) | 故障检测方法、总控节点、工作节点及分布式系统 | |
CN109639509B (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 |