CN116846888A - 区块链网络的共识处理方法、装置、设备及存储介质 - Google Patents

区块链网络的共识处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116846888A
CN116846888A CN202210302668.6A CN202210302668A CN116846888A CN 116846888 A CN116846888 A CN 116846888A CN 202210302668 A CN202210302668 A CN 202210302668A CN 116846888 A CN116846888 A CN 116846888A
Authority
CN
China
Prior art keywords
consensus
speed
nodes
type
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
Application number
CN202210302668.6A
Other languages
English (en)
Inventor
杨文辉
杜智超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210302668.6A priority Critical patent/CN116846888A/zh
Priority to PCT/CN2022/132238 priority patent/WO2023179056A1/zh
Priority to US18/239,843 priority patent/US20230409450A1/en
Publication of CN116846888A publication Critical patent/CN116846888A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Environmental & Geological Engineering (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种区块链网络的共识处理方法、装置、设备及存储介质;方法包括:获取区块链网络当前所运行的共识算法的类型;响应于区块链网络满足共识环境检测条件,对区块链网络进行共识环境检测,得到检测结果,其中,检测结果表征至少部分节点基于共识算法对消息进行共识时是否出错;响应于检测结果满足类型对应的共识算法切换条件,将区块链网络当前所运行的共识算法切换为其他类型的共识算法;共识算法的类型包括第一类型与第二类型,第一类型的共识算法的容错性能大于第二类型的共识算法的容错性能,第二类型的共识算法的共识性能高于第一类型的共识算法的共识性能。通过本申请,能够提升区块链网络的容错性能与稳定性。

Description

区块链网络的共识处理方法、装置、设备及存储介质
技术领域
本申请涉及区块链技术,尤其涉及一种区块链网络的共识处理方法、装置、设备及存储介质。
背景技术
相关技术中,区块链网络目前采用的共识算法往往侧重于达成共识的效率,而对节点异常的容错形能有限,或仅关注在达成共识的过程中的容错性能,容错性能是指存在故障节点或恶意节点时,保证多数的节点仍然能够达成共识。相关技术中,区块链网络中的共识算法切换灵活性不高,影响了区块链网络的容错性能。
发明内容
本申请实施例提供一种区块链网络的共识处理方法、装置、设备及存储介质、计算机程序产品,能够提升区块链网络的容错性能。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种区块链网络的共识处理方法,所述区块链网络包括多个节点,所述多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理,所述方法包括:
获取所述区块链网络当前所运行的所述共识算法的类型;
响应于所述区块链网络满足共识环境检测条件,对所述区块链网络进行共识环境检测,得到检测结果,其中,所述检测结果表征所述至少部分节点基于所述共识算法对所述消息进行共识时是否出错;
响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法;
其中,所述共识算法的类型包括第一类型与第二类型,所述第一类型的共识算法的共识性能高于所述第二类型的共识算法的共识性能,所述第二类型的共识算法的容错性能大于所述第一类型的共识算法的容错性能。
本申请实施例提供一种区块链网络的共识处理装置,所述区块链网络包括多个节点,所述多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理,所述装置包括:
数据采集区块链模块,用于获取所述区块链网络当前所运行的所述共识算法的类型;
共识检测区块链模块,用于响应于所述区块链网络满足共识环境检测条件,对所述区块链网络进行共识环境检测,得到检测结果,其中,所述检测结果表征所述至少部分节点基于所述共识算法对所述消息进行共识时是否出错;
共识切换区块链模块,用于响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法;
其中,所述共识算法的类型包括第一类型与第二类型,所述第一类型的共识算法的共识性能高于所述第二类型的共识算法的共识性能,所述第二类型的共识算法的容错性能大于所述第一类型的共识算法的容错性能。
本申请实施例提供一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的区块链网络的共识处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的区块链网络的共识处理方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的区块链网络的共识方法。
本申请实施例具有以下有益效果:
在满足共识环境检测条件时,基于共识检测结果与共识算法对应的切换条件对区块链网络进行共识算法切换,使得区块链网络的共识算法切换更灵活,更符合区块链网络的容错需求,提升区块链网络的容错能力以及运行的稳定性。进而,区块链网络能够根据业务场景的变化自适应地切换共识算法,能满足不同的应用场景需求。
附图说明
图1是本申请实施例提供的区块链网络的应用场景的示意图;
图2A是本申请实施例提供的区块结构一个可选的示意图
图2B是本申请实施例提供的区块链网络200的功能架构示意图;
图3是本申请实施例提供的运行区块链网络中的节点的电子设备的结构示意图;
图4A至图4F是本申请实施例提供的区块链网络的共识处理方法的流程示意图;
图5A至图5C是本申请实施例提供的区块链网络的共识处理方法的流程示意图;
图5D是本申请实施例提供的检测周期的示意图;
图6是本申请实施例提供的崩溃容错类的共识算法的共识过程示意图;
图7是本申请实施例提供的拜占庭容错类的共识算法的共识过程示意图;
图8A至8C是本申请实施例提供的区块链的共识处理方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
需要指出,在本申请实施例中,涉及到用户的信息、用户的反馈数据等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)区块链网络,由多个节点通过网络通信而连接形成的系统;区块链网络还可以包括客户端。区块链网络中消息的具体内容根据实际的业务场景而有区别,例如,消息可以为消息记录、供节点的状态机执行的指令等。
2)共识,在区块链网络中,节点对其他节点发送的消息的正确性进行验证,如验证成功则向发送消息的节点发送确认,并将该消息进行持久化存储,以用于支持后续进行消息查询。实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof ofStake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proofof Elapsed Time)等。
例如,在区块链网络中,节点对其他节点提交的新区块的有效性进行验证,如验证成功,则向提交新区块的节点发送确认,并将该新区块添加到相应节点所存储的区块链的尾部。
3)崩溃错误(故障容错),指由于节点的运行故障(例如节点宕机)而使得节点无法正常运行所导致的错误类型;崩溃容错(CFT,Crash Fault tolerance)是指区块链网络在一定数量的节点崩溃(例如,节点宕机)时,区块链网络仍能正常运行。本申请实施例中,将崩溃容错共识算法作为第一类型的共识算法。第一类型的共识算法下,能够实现较高的共识效率、并且能够检测到节点崩溃或者恶意节点、节点错误,但是无法解决拜占庭问题。
4)拜占庭错误,指软件错误或节点的恶意行为所导致的错误类型;拜占庭节点是存在拜占庭错误的节点。在分布式环境中,具有拜占庭容错(BFT,Byzantine FaultTolerance)共识算法的区块链网络能够容忍拜占庭错误,即在存在一定数量的拜占庭节点的分布式环境中,区块链网络仍能正常运行。本申请实施例中,将拜占庭容错共识算法作为第二类型的共识算法。
4)共识算法切换,也称为共识算法自适应,当网络环境良好(例如没有恶意节点或者节点错误)时,区块链网络自动采用共识效率高、可以检测到错误节点(节点崩溃、恶意节点或者节点错误)的共识算法,当发现恶意节点或者节点错误的时候(也即,检测到存在拜占庭问题的节点时),可以自动切换到支持解决拜占庭容错的共识算法。
5)联盟链,将特定群体的成员和有限的第三方作为接入方,并提供服务的区块链,联盟链内部指定多个预选的节点为运行共识算法和区块链的节点,每个区块的生成由所有的预选节点共同决定,其他接入节点可以不参与共识和存储区块链的过程,其他第三方可以通过该区块链开放的应用程序编程接口(API,Application Programming Interface)对区块链进行限定查询。
本申请实施例涉及的区块链网络是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成。
参见图1,图1是本申请实施例提供的区块链网络200的一个可选的结构示意图,由多个节点210(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端300形成,节点210之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Contr ol Protocol)协议之上的应用层协议。
参见图1示出的区块链网络中各节点210的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的消息,在消息中携带数字签名以表示来源,将消息发送到区块链网络中的其他节点,供其他节点在验证消息来源以及完整性成功时,将消息添加到临时区块中。
例如,应用实现的业务包括:
2.1)共享账本,用于提供消息(携带数据)的存储、查询和修改等操作的功能,将对消息的操作的消息发送到区块链网络中的其他节点,其他节点验证有效后,作为承认消息有效的响应,将消息存入临时区块中,还可以向发起操作的节点发送确认。
2.2)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的消息处理,例如:查询买家所购买商品的物流状态,在买家签收货物后将买家的货款转移到商户的账户。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链网络中节点提交的消息。
参见图2A,图2A是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储消息记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。
下面说明本申请实施例提供的区块链网络的示例性的功能架构,参见图2B,图2B是本申请实施例提供的区块链网络200的功能架构示意图,包括应用层201、共识层202、网络层203、数据层204和资源层205,下面分别进行说明。
资源层205封装了实现区块链网路200中的各个节点210的计算资源、存储资源和通信资源,例如计算机、服务器/集群和云中的计算资源、存储资源和通信资源,进行抽象并向数据层204提供统一的接口以屏蔽实现资源层205的底层硬件的差异性。
计算资源包括各种形式的处理器,例如中央处理器(CPU)、应用专用集成电路(ASIC,Application Specific Integrated Circuit)、专用集成电路和现场可编程门阵列(FPGA,Field-Programmable Gate Array)的各种形式的处理器。
存储资源包括各种易失性存储器和非易失性存储器等各种类型的存储介质。通信资源包括用于供区块链网络的节点210之间、区块链网络200与业务主体之间通信的各种链路。
数据层204封装了实现账本的各种数据结构,包括以文件系统中的文件实现的区块链,键值型的状态数据库和存在性证明。
网络层203封装了点对点(P2P,Point to Point)网络协议、数据传播机制和数据验证机制、接入认证机制和业务主体身份管理的功能。
其中,P2P网络协议实现区块链网络200中节点210之间的通信,数据传播机制保证了消息在区块链网络200中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点210之间传输数据的可靠性;接入认证机制用于根据实际的业务场景对加入区块链网络200的业务主体的身份进行认证,并在认证通过时赋予业务主体接入区块链网络200的权限;业务主体身份管理用于存储允许接入区块链网络200的业务主体的身份、以及权限(例如能够发起的消息的类型)。
共识层202封装了区块链网络200中的节点210对区块达成一致性的机制(即共识机制)、消息管理和账本管理的功能。
共识机制包括POS、POW和DPOS等共识算法,支持共识算法的可插拔。
消息管理用于验证节点210接收到的消息中携带的数字签名,验证业务主体的身份信息,并根据身份信息判断确认其是否具有权限发送消息(从业务主体身份管理读取相关信息);对于获得接入区块链网络200的授权的业务主体而言,均拥有认证中心颁发的数字证书,业务主体利用自己的数字证书中的私钥对提交的消息进行签名,从而声明自己的合法身份。
账本管理:用于维护区块链和状态数据库。对于取得共识的区块,追加到区块链的尾部;执行取得共识的区块中的消息,当消息包括更新操作时更新状态数据库中的键值对,当消息包括查询操作时查询状态数据库中的键值对并向业务主体返回查询结果。支持对状态数据库的多种维度的查询操作,包括:根据区块序列号(例如消息的哈希值)查询区块;根据区块哈希值查询区块;根据消息序列号查询区块;根据消息序列号查询消息;根据业务主体的账号(序列号)查询业务主体的账号数据;根据通道名称查询通道中的区块链。
应用层201封装了区块链网络能够实现的各种业务,包括消息的溯源、存证和验证等。
下面说明本申请实施例提供的运行区块链网络的节点的电子设备的示例性结构,参见图3,图3是本申请实施例提供的运行区块链网络200中的节点210的电子设备600的结构示意图,电子设备可以是终端(例如PC)、服务器或服务器集群,电子设备供区块链网络200中的节点210运行的虚拟化环境,并提供节点210的运行的资源(包括计算资源、存储资源和通信资源)。图3所示的电子设备600包括:至少一个处理器610、存储器650和至少一个网络接口620。电子设备600中的各个组件通过总线系统640耦合在一起。可理解,总线系统640用于实现这些组件之间的连接通信。总线系统640除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统640。
处理器610可以是一种集成电路芯片,具有信号的处理能力。存储器650可以是可移除的,不可移除的或其组合。存储器650包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。在一些实施例中,存储器650能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统651,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;网络通信模块652,用于经由一个或多个(有线或无线)网络接口620到达其他计算设备,示例性的网络接口620包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,UniversalSerial Bus)等。
在一些实施例中,本申请实施例提供的区块链网络的共识处理装置可以采用软件方式实现,图2示出了存储在存储器650中的区块链网络的共识处理装置655,其可以是程序和插件等形式的软件,包括以下软件模块:数据采集区块链模块6551、共识检测区块链模块6552、共识切换区块链模块6553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
将结合本申请实施例提供的区块链网络的示例性应用和实施,说明本申请实施例提供的区块链网络的共识处理方法。
本申请实施例中,区块链网络包括多个节点,多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理。共识通过之后,每个节点对于消息的处理结果将被存储到区块链中。参考图1,区块链网络200中的节点210对应于多种功能,其中,部分节点仅执行路由与区块链功能,部分节点仅执行区块链、应用以及路由功能,部分节点执行区块链、共识以及路由功能,不同节点的功能可以是不同的,区块链网络200中至少部分节点210可以用于基于共识算法对客户端发送的消息进行共识处理,其余节点210可以不执行共识处理。
参见图4A,图4A是本申请实施例提供的区块链网络的共识处理方法的流程示意图,将结合图4A示出的步骤401A至步骤403A进行说明,以区块链网络中的节点为执行主体进行说明。
示例的,作为执行主体的节点可以是区块链网络中任意节点,可以是属于任意接入方的节点,也可以是多个接入方共同指定的节点。
在步骤401A中,获取区块链网络当前所运行的共识算法的类型。
这里,共识算法的类型包括第一类型与第二类型,第一类型的共识算法的共识性能高于第二类型的共识算法的共识性能,第二类型的共识算法的容错性能大于第一类型的共识算法的容错性能。
示例的,本申请实施例中区块链网络是联盟链区块链网络,可以应用在消息处理场景中。第一类型的共识算法是崩溃容错共识算法,第二类型的共识算法是拜占庭容错共识算法。拜占庭容错共识算法具有拜占庭容错能力,因而能够在不可信的区块链场景中防止恶意节点作恶,从而达成共识,对于拜占庭节点的容错性能大于崩溃容错共识算法。
崩溃容错共识算法的共识过程包括准备阶段与提交阶段,且每个阶段均为主节点与从节点之间的通信过程,从节点之间无需进行交互。拜占庭容错共识算法的共识过程包括预准备阶段、准备阶段以及提交阶段,通过三轮通信过程达成共识,通信过程中从节点之间进行交互。拜占庭容错共识算法的通信过程相较于崩溃容错共识算法更复杂,崩溃容错共识算法的共识性能高于拜占庭容错共识算法。不同类型的共识算法对应的通信过程不同。可以基于区块链网络中节点之间的通信过程确定当前所运行的共识算法的类型。
本申请实施例中,当区块链网络当前运行第一类型的共识算法时,也即,当区块链网络当前运行崩溃容错共识算法时,崩溃容错共识算法通过以下方式对消息达成共识:响应于消息传递到每个节点,每个节点对消息进行签名处理;响应于区块链网络中正常节点的数量占总节点数量的比例大于或等于响应比例阈值(例如:2/3),且正常节点响应的共识响应消息中有效共识响应消息占所有的共识响应消息的比例大于有效比例阈值(例如1/2),确定基于第一类型的共识算法(崩溃容错共识算法)对消息达成共识。达成共识后,将消息以及各节点的签名存储到节点中的区块中。
这里,正常节点是对消息进行响应的节点,有效共识响应消息的签名是有效签名。
示例的,当消息传递到节点时,节点对消息进行数字签名处理,数字签名是利用不对称加密算法的私钥对数字内容的摘要加密形成的密文,数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation)。当接收到节点反馈的包含有数字签名的共识响应消息时,对共识响应消息携带的数字签名进行解码,得到数字签名对应的数字摘要,将数字摘要与消息对应的原始数字摘要进行比对,当比对结果相同时,说明签名有效,共识响应消息是有效的共识响应消息。
在步骤402A中,响应于区块链网络满足共识环境检测条件,对区块链网络进行共识环境检测,得到检测结果。
这里,检测结果表征至少部分节点基于共识算法对消息进行共识时是否出错。
示例的,共识环境检测条件包括以下至少一项,以下具体说明。
(1)区块链网络中接入新节点;例如:区块链网络中加入了新接入方,该接入方对应于多个新节点,则满足共识环境检测条件,对区块链网络进行共识环境检测。
(2)区块链网络中至少一个节点的负载超过节点负载阈值。
示例的,节点负载阈值是作为节点的设备能够承担的负载量,当节点的负载超过节点阈值时,节点可能出现宕机等问题,当区块链网络中至少一个节点的负载超过节点负载阈值时,则满足共识环境检测条件,对区块链网络进行共识环境检测。
(3)区块链网络中至少一个接入方对应的负载超过负载阈值。
示例的,区块链网络中存在不同的接入方,例如:应用于消息的联盟链中,接入方可以分别对应于多个企业、银行以及消息的监督方等,每个接入方向区块链网络中接入多个节点。节点处理数据的能力是有限的,当接入方对应的节点的负载超过该接入方对应的负载阈值,则满足共识环境检测条件,对区块链网络进行共识环境检测。
(4)区块链网络中至少一个网段对应的节点的数量大于网段的节点负载数量阈值。
示例的,网段(Network Segment)是网络中使用同一物理层设备(传输介质、中继器、集线器等)能够直接通讯的部分。区块链网络中的节点可能使用不同的网段,每个网段的通讯负载能力存在对应的阈值,例如:网段的节点负载数量阈值。当至少一个网段对应的节点的数量大于网段的节点负载数量阈值,则满足共识环境检测条件,对区块链网络进行共识环境检测。
在一些实施例中,还可以基于区块链网络的应用场景设置对应的检测周期,例如:区块链网络应用于消息处理场景,设置检测周期T(例如:1分钟),每隔一个检测周期则对区块链网络中当前周期内的区块进行检测处理。
在一些实施例中,参考图4B,图4B是本申请实施例提供的区块链网络的共识处理方法的流程示意图,步骤402A可以通过步骤421B至步骤423B实现,以下具体说明。
在步骤421B中,对区块链网络最近的至少一个检测周期内生成的区块进行检测处理,得到多个节点的参数。
这里,参数包括以下至少之一:每个节点的类型、每个节点对应的接入方、每个节点对应的网段。
示例的,参考图5D,是本申请实施例提供的检测周期的示意图;检测周期为T,每个检测周期内依次生成的区块数量为1、2、4、5。在最近的至少一个检测周期内生成的区块中,存储有最近的至少一个检测周期内进行消息处理的节点对于消息的处理结果。可以通过对生成的区块进行检测,得到节点对应的参数。
示例的,根据节点的功能,节点的类型包括:记账节点、背书节点、排序节点、共识节点等。以处理业务相关消息的场景为例,节点对应的接入方的类型包括:消息发起方(例如:企业)、消息处理方(例如:银行)、消息监督方。
在步骤422B中,确定至少一个检测周期内执行共识处理的每个节点,对每个节点的共识响应消息签名进行校验处理,得到每个节点的校验结果。
这里,共识响应消息签名正确的节点的校验结果为正确节点,共识响应消息签名错误的节点的校验结果为错误节点。
示例的,基于最近的至少一个检测周期内的产生的区块,确定至少一个检测周期内执行共识处理的每个节点,对每个节点的共识响应消息签名进行校验处理。当接收到节点反馈的包含有数字签名的共识响应消息时,对共识响应消息携带的数字签名进行解码,得到数字签名对应的数字摘要,将数字摘要与消息对应的原始数字摘要进行比对,当比对结果相同时,共识响应消息签名正确,反之错误。
在步骤423B中,将每个节点的校验结果以及至少一项参数作为检测结果。
示例的,基于检测结果可以统计得到:区块链网络中正确节点的数量以及错误节点的数量、共识响应消息的数量、有效的共识响应消息的数量、区块链网络中的接入方、区块链网络中的每个接入方对应的节点数量、区块链网络中不同的网段、区块链网络中每个网段对应的节点数量等数据。
继续参考图4A,在步骤403A中,响应于检测结果满足类型对应的共识算法切换条件,将区块链网络当前所运行的共识算法切换为其他类型的共识算法。
示例的,不同类型的共识算法的共识性能或者容错能力不同,本申请实施例中,针对不同类型的共识算法设置不同的共识算法切换条件,使得共识算法切换能够更加灵活,提升共识算法切换的执行效率,有利于提升区块链网络的容错能力以及稳定性。
在一些实施例中,检测结果包括:一个或多个检测周期内区块链网络中的错误节点的数量;这里,错误节点是针对消息在区块链网络中发送了错误的共识响应消息的节点(也即,拜占庭节点)。
当区块链网络当前运行第二类型的共识算法时,步骤403A可以通过以下方式实现:响应于在一个或多个连续或间隔性的检测周期内在区块链网络中检测到的拜占庭节点的数量小于或者等于共识比例阈值,将区块链网络当前所运行的第二类型的共识算法切换为第一类型的共识算法。
示例的,共识比例阈值可以为0。例如:区块链网络正在运行拜占庭容错算法,响应于连续多个检测周期内均没有检测到拜占庭节点,将拜占庭容错共识算法切换为崩溃容错共识算法。
在一些实施例中,参考图4C,图4C是本申请实施例提供的区块链网络的共识处理方法的流程示意图。当区块链网络当前运行第一类型的共识算法(崩溃容错共识算法)时,步骤403A可以通过步骤431C至步骤433C实现,以下具体说明。
在步骤431C中,基于区块链网络的总节点数量和错误节点的数量,确定错误节点的比例,基于总节点数量以及正常节点的数量,确定正常节点的比例。
示例的,检测结果包括:区块链网络中正常节点的数量以及错误节点的数量;正常节点是未出现运行故障的节点,错误节点是存在运行故障的节点,例如:由于故障运行导致消息错误或者丢失的节点为错误节点,错误节点可以是拜占庭节点。
在步骤432C中,响应于错误节点的比例等于或者大于第二类型的共识算法对应的全局维度容错比例阈值,对错误节点共识的区块进行回退处理。
示例的,全局维度容错比例阈值是正常节点的比例与预设容错比例之间的差值,预设容错比例为2/3。当区块链网络运行崩溃容错共识算法时,主节点可以接收来自从节点的消息。正常节点是检测过程中向主节点发送过消息(正常消息、错误消息)的节点,设正常节点的比例为P,没有检测到向主节点发送消息的节点(可能是正常节点或者故障节点)的占比为(1-P),假设这部分节点均为拜占庭节点,区块链网络中的错误节点为拜占庭节点,拜占庭节点的占比为Q,则区块链网络中拜占庭节点的总比例为(Q+1-P)。如果拜占庭节点的比例达到了(P-2/3),则拜占庭节点的总比例可能为(P-2/3+1-P)=1/3。当检测结果中的拜占庭节点的比例大于全局维度容错比例阈值(P-2/3),说明可以将崩溃容错共识算法切换为拜占庭容错算法。在进行共识算法切换前,由于区块链网络已经在上述拜占庭错误中达成了共识,可以对本次检测范围内的区块进行回退处理,也即,在每个节点维护的区块链中删除本次检测范围内产生的区块。
在步骤433C中,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
示例的,将区块链网络当前运行的崩溃容错共识算法切换为拜占庭容错算法,提升了区块链网络的容错能力。
在一些实施例中,参考图4D,图4D是本申请实施例提供的区块链网络的共识处理方法的流程示意图。当区块链网络当前运行第一类型的共识算法(崩溃容错共识算法)时,步骤403A可以通过步骤431D至步骤432D实现,以下具体说明。
在步骤431D中,基于总节点数量以及每个接入方对应的错误节点的数量,确定每个接入方对应的错误节点的比例。
示例的,对应的检测结果包括:每个接入方在区块链网络中对应的错误节点的数量,其中,不同的接入方对应于不同的节点,错误节点是存在运行故障的节点。区块链网络中包括多个类型的接入方,例如:当区块链应用于消息处理时,接入方的类型包括消息发起方(例如:发送业务消息的企业)、消息处理方(例如:处理业务消息的银行)、消息监督方(例如:监督业务消息的机构)。每个接入方对应的节点数量可以是不同的。假设:区块链网络中存在大量的接入方,分别是多个不同企业、多个银行以及一个消息监督机构。将每个接入方对应的错误节点的数量除以总节点数量,得到每个接入方对应的错误节点的比例。
在步骤432D中,响应于区块链网络中的至少一个接入方对应的错误节点的比例大于接入方维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
示例的,不同接入方的接入方维度容错比例阈值可以相同,也可以是差异化的,例如:差异化地根据接入方对应的节点数量设置为不同的比例。至少一个接入方的数量可以根据具体业务场景的容错要求适应设置,例如:区块链网络中的全部接入方或者部分接入方。当至少一个接入方对应的错误节点的比例大于接入方维度容错比例阈值时,对错误节点共识的区块进行回退处理,并将区块链网络当前运行的崩溃容错共识算法切换为拜占庭容错算法。
本申请实施例中,基于接入方维度进行共识算法切换,能够提升区块链网络的容错性能,使得区块链网络更加稳定地运行。
在一些实施例中,参考图4E,图4E是本申请实施例提供的区块链网络的共识处理方法的流程示意图。当区块链网络当前运行第一类型的共识算法(崩溃容错共识算法)时,步骤403A可以通过步骤431E至步骤432E实现,以下具体说明。
在步骤431E中,基于总节点数量以及每个类型的错误节点的数量,确定每个类型的错误节点的比例。
示例的,对应的检测结果包括:区块链网络中每个类型的错误节点的数量,其中,错误节点是存在运行故障的节点。区块链网络中包括多种类型的节点,根据节点的功能,节点的类型包括:记账节点、背书节点、排序节点、共识节点等。将每个类型对应的错误节点的数量除以总节点数量,得到每个类型对应的错误节点的比例。
在步骤432E中,响应于区块链网络中至少一种类型的错误节点的比例大于节点维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
示例的,不同类型节点对应的节点维度容错比例阈值相同,或根据不同接入的容错需求适应设定。至少一个类型的数量可以根据具体业务场景的容错要求适应设置,例如:区块链网络中的全部类型或者部分类型。当至少一个类型对应的错误节点的比例大于类型维度容错比例阈值时,对错误节点共识的区块进行回退处理,并将区块链网络当前运行的崩溃容错共识算法切换为拜占庭容错算法。
本申请实施例中,基于节点类型维度进行共识算法切换,能够提升区块链网络的容错性能,使得区块链网络更加稳定地运行。
在一些实施例中,参考图4F,图4F是本申请实施例提供的区块链网络的共识处理方法的流程示意图。当区块链网络当前运行第一类型的共识算法(崩溃容错共识算法)时,步骤403A可以通过步骤431F至步骤432F实现,以下具体说明。
在步骤431F中,基于总节点数量以及每个网段中的错误节点的数量,确定每个网段的错误节点的比例。
示例的,区块链网络中的多个节点处于多个网段;检测结果包括:区块链网络中每个网段中的错误节点的数量,其中,错误节点是存在运行故障的节点;将每个网段对应的错误节点的数量除以总节点数量,得到每个网段对应的错误节点的比例。
在步骤432F中,响应于区块链网络的至少一个网段的错误节点的比例大于网段维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
示例的,每个网段对应的网段维度容错比例阈值是基于每个网段的容错能力确定的。不同网段的网段维度容错比例阈值可以相同,也可以是差异化的,例如:差异化地根据网段对应的节点数量设置为不同的比例。至少一个网段的数量可以根据具体业务场景的容错要求适应设置,例如:区块链网络中的全部网段或者部分网段。当至少一个网段对应的错误节点的比例大于网段维度容错比例阈值时,对错误节点共识的区块进行回退处理,并将区块链网络当前运行的崩溃容错共识算法切换为拜占庭容错算法。
在一些实施例中,当区块链网络运行第一类型的共识算法时,参考图5A,图5A是本申请实施例提供的区块链网络的共识处理方法的流程示意图。在步骤403A之前,还可以通过执行步骤501A减少切换共识算法前回退的区块数量,以下具体说明。
在步骤501A中,响应于区块链网络中存在错误节点,且错误节点的比例小于第二类型的共识算法对应的容错比例阈值,对区块链网络的区块生成速度进行控制。
示例的,对区块链网络的区块生成速度进行控制,也即,减慢区块生成速度的增长速度,避免在切换共识算法之前回退过多区块。
这里,错误节点是存在运行故障的节点,容错比例阈值的类型包括:全局维度容错比例阈值、接入方维度容错比例阈值、节点维度容错比例阈值以及网段维度容错比例阈值。
在一些实施例中,参考图5B,图5B是本申请实施例提供的区块链网络的共识处理方法的流程示意图。在步骤403A之后,可以通过执行步骤501B,降低共识算法切换时共识性能变化和容错损耗所引发的负面影响。
在步骤501B中,对区块链网络的区块生成速度进行控制。
示例的,减慢区块生成速度的增长速度,可以避免共识切换后,性能下降可能导致的系统崩溃,以及容错能力降低导致回退过多的区块。步骤501A中所执行的“对区块链网络的区块生成速度进行控制”与步骤501B相同。
在一些实施例中,参考图5C,图5C是本申请实施例提供的区块链网络的共识处理方法的流程示意图。步骤501B可以通过步骤511C以及步骤512C实现,以下具体说明。
在步骤511C中,确定区块链网络在至少一个历史检测周期中的区块生成速度,并确定区块生成速度在多个速度区间中所处的目标速度区间。
示例的,多个速度区间的端点速度依次衔接,多个速度区间之间进行拼接可以组成连续的区间,至少一个历史检测周期可以是最近的多个或者一个历史检测周期。
在一些实施例中,可以通过以下方式确定速度区间:获取区块链网络的最大区块生成速度,基于最大区块生成速度与速度比例阈值确定速度阈值;将零作为第一速度区间,将介于零与速度阈值的区间作为第二速度区间,将大于等于速度阈值且小于最大区块生成速度的区间作为第三速度区间,将等于最大区块生成速度作为第四速度区间。
其中,第一速度区间对应的速度控制方式为控制区块生成速度维持最低区块生成速度,区块生成速度的单位为(区块数量/单位时间),本申请实施例中区块生成速度的单位为(区块数量/检测周期),假设每个检测周期为1分钟。最低区块生成速度可以为1分钟1个区块(1个/min);第二速度区间对应的速度控制方式为控制区块生成速度以指数形式增长,第二速度区间内区块生成速度较低,避免了区块生成速度过快变化造成区块回退过多,在消息处理场景下可以避免产生过多的无效消息,区块生成速度的增长速度可以较其他区间更高,以保证区块生成速度满足区块链网络的需求;第三速度区间对应的速度控制方式为控制区块生成速度匀速增长,也即线性增长,区块链生成速度匀速增长可以提升区块链网络的稳定性;第四速度区间对应的速度控制方式为控制区块生成速度维持最大区块生成速度不变,即此时可以认为区块链网络已经能够平稳运行,保持最大区块生成速度。
示例的,可以将速度比例阈值设置为1/2,则速度阈值是最大区块生成速度的二分之一,速度区间以及每个速度区间对应的速度控制方式可以表示为以下公式(2)。
其中,a是大于1的正整数,b、k是大于等于1的正整数,a与b可以根据区块链网络的实际需求进行设置,k是检测周期的标号。Nk是当前检测周期内的区块生成速度。Nk-1是当前检测周期的上一检测周期对应的区块生成速度。第一速度区间为(Nk-1=0),第二速度区间为(Nk-1<M/2),第三速度区间为(M/2≤Nk-1<M),第四速度区间为(Nk-1=M)。
在一些实施例中,还可以通过以下方式确定速度区间:获取区块链网络的区块的最大区块生成速度;将最大区块生成速度与零之间的区间均匀或不均匀划分为依次衔接的多个速度区间;其中,每个速度区间对应的速度值,与每个速度区间的速度控制方式对应的速度增长速率负相关。
示例的,每个区间内生成速度匀速增长,每个区间对应的区块速度的增长速度形成降序的等差序列。
示例的,假设速度区间的数量为n+1个,速度区间是均匀的,速度区间以及每个速度区间对应的速度控制方式可以表示为以下公式(3)。
示例的,c1、cn是正整数,c1至cn为生成速度的增长速度,形成逐渐减小的等差序列;d1、dn是正整数,d1至dn中包括多个正整数,形成逐渐增加的等差序列。假设:最大区块生成速度M是48个/min,生成多个速度区间,大于等于0且小于10、大于等于10且小于24,大于等于24且小于36,大于等于36且小于48以及等于48,除等于48以外的每个区间内生成速度匀速增长,每个区间对应的增长速度分别为2、4、6、8,每个区间对应的增长速度形成降序的等差序列。
在步骤512C中,基于目标速度区间对应的速度控制方式,对区块链网络在当前检测周期中的区块生成速度进行控制。
这里,不同的速度区间对应的速度控制方式不同。
示例的,以下举例进行说明,假设采用上文中公式(2)对应的区间进行区块生成速度控制。假设:检测周期为1分钟,最大区块生成速度M为每分钟1024个区块(1024个/min)。初始的区块生成速度N0=0,第一检测周期内的区块生成速度为N1=1。
各检测周期内的区块生成速度依次为1、4个/min、8个/min、16个/min……512个/min(第二速度区间内以指数形式增长,第二速度区间为大于0且小于512个/min)、513、514……1024(第三速度区间为大于等于512个/min且小于1024个/min,当区块生成速度达到1024个/min时,也即第四速度区间,区块生成速度维持1024个/min不变)。
本申请实施例所提出的区块链网络的共识处理方法,使得区块链网络在网络环境中无拜占庭节点时,切换到崩溃容错类共识,从而满足性能需求高的应用场景;当检测到区块链网络中存在一定数量的拜占庭节点时,将共识算法切换为拜占庭容错类共识,提供更好的容错能力。在共识算法切换后对区块生成速度进行控制,能够降低共识算法切换时共识性能变化和容错损耗所引发的负面影响。使用本申请实施例的共识方案,能够根据业务场景的变化自适应地切换共识算法,既能提供更好的容错能力也能满足性能要求高的应用场景需求。
下面,以本申请实施例提供的区块链网络的共识处理方法可以应用在联盟链中的消息处理场景中为例说明。
在处理业务相关消息的场景中,无论是资产的转移、买卖等(例如,网络游戏中的游戏资产),都需要防止恶意节点作恶。拜占庭容错类的共识算法能够用于对恶意节点进行容错,保证消息结果的正确性。另一方面,消息处理场景也需要高效的共识算法来实现高吞吐量,崩溃容错类的共识算法具有更好的性能。本申请实施例提出的区块链网络的共识处理方法开源应用在联盟链的消息处理场景中,使共识算法灵活切换,保证系统(也即区块链网络,下文中的系统均是指区块链网络)的容错能力和性能。
参考图6,图6是本申请实施例提供的崩溃容错类的共识算法的共识过程示意图。本申请实施例中以崩溃容错类中的递归容错算法(RAFT,Recursive Algorithm for FaultTolerance)的共识过程为例进行说明,共识过程可以抽象为准备阶段和提交阶段,主节点C1收到客户端K1的消息后,进入准备阶段,由主节点同步日志记录给从节点(从节点C2、从节点C3以及从节点C4),从节点收到消息后,发送响应给主节点C1,主节点C1收到半数以上的响应后,进入提交阶段,主节点C1发送消息给从节点,进行数据提交,并返回结果给客户端K1。Raft的共识过程包括两个阶段,且每个阶段只包含主节点和从节点之间的通信过程,从节点间无需进行交互,整体的通信复杂度为O(n),n为节点的数量。因此,以Raft为代表的崩溃容错类共识算法通常具有较高的吞吐量,因而整体系统能够达到较高的性能。崩溃容错类共识能够容忍的最大崩溃错误节点数量为(n-1)/2,n是大于等于1的正整数。
参考图7,图7是本申请实施例提供的拜占庭容错类的共识算法的共识过程示意图。拜占庭容错类共识算法通常需要三轮通信过程来达成共识,本申请实施例中以拜占庭容错类中的实用拜占庭容错(PBFT,Practical Byzantine Fault Tolerance)共识算法为例进行说明,主节点B1收到客户端K2请求后,进入预准备阶段,主节点B1向所有从节点(从节点B2、从节点B3、从节点B4)发送消息,从节点收到消息并进行检查(例如,校验签名等),检查无误后,进入准备阶段;各节点将消息封装(例如签名等操作)后,进一步广播给其余节点,当节点收到的正确消息大于等于2f+1(包括节点本身),其中,f是大于等于1的正整数,进入提交阶段;各节点将消息进行封装并广播给其余节点,当收到的正确提交消息大于等于2f+1后(包括节点本身),共识达成,进行数据提交,同时将响应请求消息发送给客户端。如图2所示,在存在1个拜占庭节点时,系统仍能达成共识。拜占庭容错类共识能够容忍的拜占庭节点数量为f=(n-1)/3,从节点数量的1/3,其中n为网络中节点总数量(1个主节点与n-1个从节点)
本申请实施例提供了一种区块链的共识处理方法,能够根据运行环境的变化自适应地切换不同共识算法,涉及到拜占庭容错类共识算法和崩溃容错类共识算法的切换。
本申请实施例中,针对崩溃容错类共识算法采用以下方式达成共识:响应于消息传递到每个节点,每个节点对消息进行签名处理;响应于区块链网络中正常节点的数量占总节点数量的比例大于或等于响应比例阈值(例如:2/3),且正常节点响应的共识响应消息中有效共识响应消息占所有的共识响应消息的比例大于有效比例阈值(例如1/2),确定基于第一类型的共识算法对消息达成共识。
当前的共识算法为拜占庭容错算法时,参考图8A,图8A是本申请实施例提供的区块链的共识处理方法的流程示意图,以下具体说明。
在步骤801A中,共识环境检测。
示例的,共识环境检测中检测的指标为当前系统运行环境中拜占庭节点的数量。检测的方法为校验区块中各节点的共识消息签名:节点校验成功,则表示节点未出现拜占庭错误;节点校验失败,则表示出现拜占庭错误或者其他错误。
参考图5D,图5D是本申请实施例提供的检测周期的示意图;共识环境检测每隔单位时间T进行一次,如图5D所示,时间T可以根据业务场景的不同进行设置。例如,需要频繁进行检测的场景可以设置较小的T值,例如:处理业务相关消息的场景中,将T设置为预设秒数(例如5秒)频繁地进行检查,或者将T设置为预设分钟(例如1分钟)。每次检测的范围为当前单位时间T内(也即上文中的检测周期)产生的区块,单位时间T(例如:1分钟)内产生的区块数量由切换过渡策略(也即,本申请实施例中对区块生成速度进行控制的处理)决定。
在步骤802A中,判断是否满足共识切换条件。在步骤802A的判断结果为是时,执行步骤803A,若否则继续执行步骤801A。
示例的,拜占庭容错算法下,共识切换条件为:连续多次共识环境检测均未出现拜占庭错误(即拜占庭节点数量为0)。满足共识切换条件,表明此时运行环境中节点是可信的,此时将拜占庭容错算法切换为崩溃容错算法,能够提升系统性能。具体的检测次数可以根据业务场景自定义,如果需要更加可靠的容错,可设置更大的次数值。
在步骤803A中,切换共识算法。
示例的,在当前共识算法为拜占庭容错算法时,切换共识算法也即将当前共识算法切换为崩溃容错算法。
在步骤804A中,应用切换过渡策略。
示例的,为避免共识切换后,性能下降可能导致的系统崩溃,以及容错能力降低导致回退过多的区块。因而在切换共识算法后,运行切换过渡策略,对切换后的区块生成速度(即共识速度)进行控制。切换过渡策略用于控制共识算法切换之后区块的生成速度,防止系统崩溃或区块回退过多。
示例的,参考图8C,图8C是本申请实施例提供的区块链的共识处理方法的流程示意图。步骤804A可以通过步骤801C至步骤806C实现。
在步骤801C中,确定共识算法切换完成。
示例的,当区块链网络中各节点均采用相同的共识算法时,确定共识算法切换完成。
在步骤802C中,以指数规律增加单个共识轮次区块生成数量。
示例的,本申请实施例以共识算法切换完成后,区块生成速度为零为例进行说明。切换过渡策略通过限制单位时间T内生成的区块数量来控制区块的生成速度,单位时间T是上文中执行共识检测的检测周期。区块生成速度可以表征为,每个单位时间内的区块生成数量。假设每个单位时间T为一个共识检测轮次(每个共识检测轮次对应于一次共识检测),用N表示每个共识检测轮次产生的区块数量,第k个共识检测轮次产生的区块数量为Nk,k大于等于1。每次应用切换过渡策略,均重新开始累计共识检测轮次,即每次应用过渡策略时共识检测轮次的初始值均为k=1,系统在当前共识算法下,单个共识检测轮次生成的最大区块数量为M,Nk的计算方式如下公式(1)所示,Nk的初始值N0=0,N1=1,Nk-1是上一共识检测轮次产生的区块数量。
以上Nk的计算分别对应区块慢生成(通过步骤802C实现,对应于区间Nk-1<M/2)、损耗避免(通过步骤804C实现,对应于区间M/2≤Nk-1<M)、平稳运行(通过步骤806C实现,对应于区间Nk-1=M)三个阶段,区块慢生成对应于步骤802C,当单个共识检测轮次(时间T)中生成的区块数量小于M/2(区块的生成速度较小,即时间T内产生的区块数量较少)时,控制每个共识检测轮次中生成的区块呈指数增长(也即,区块生成速度以指数形式增长)。
在步骤803C中,判断单轮次区块生成数量是否小于M/2。当判断结果为是时,执行步骤802C,若否则执行步骤804C。
示例的,当单轮次区块生成数量小于M/2时,此时区块生成速度的增长速率高,但单个共识检测轮次中区块数量少,若此时发生共识切换,需要回退的区块数量也相对较小,在消息处理场景中可以避免产生过多的无效消息。同时在切换之后保持较低的区块生成速率,也能防止节点无法处理大量请求而造成的系统崩溃。
在步骤804C中,以线性规律增加单个共识轮次区块生成数量。
示例的,当单个共识检测轮次中生成的区块大于等于M/2且小于M时,控制区块的增长速率减慢,具体为,每个共识检测轮次中区块的生成数量呈线性增长,也即,控制区块的生成速度的增长速度保持不变(Nk=Nk-1+1)。
在步骤805C中,判断单轮次区块生成数量是否小于M。当判断结果为是时,执行步骤804C,若否则执行步骤806C。
在步骤806C中,单轮次区块生成数量维持在M,系统平稳运行。
示例的,当区块的生成速率达最大值(M/T)后,也即单个共识检测轮次中产生的区块数量为M,即此时可以认为系统已经能够平稳运行,无需再对区块的生成速度进行控制。(Nk=M)。
示例的,假设M=1024,各轮的共识生成的区块数量依次为,1、4、8、16……512(1到512以指数形式增长)、513、514……1024(513至1024以匀速形式增长,当达到1024时,维持1024不变)。
本申请实施例,在共识算法切换之后,采用区块慢生成能够快速提升系统整体的吞吐量,而由于此时单个轮次中的区块数量还相对较少,因而即使此时需要进行区块回退,也不会产生过多的无效消息。当系统的吞吐率(即单个共识检测轮次的区块生成数量)到达一定阈值时,开始进入损耗避免阶段,此时系统整体的性能已基本能够支撑系统的请求量,因此降低区块生成速率的增长速度,避免区块生成速度以指数形式递增而生成过多的区块,进而避免对区块进行回退处理时产生大量无效消息。当系统性能达到最大值时,此时已经无需再对区块生成速率进行限制,系统进入平稳运行阶段。
当前的共识算法为崩溃容错算法时,参考图8B,图8B是本申请实施例提供的区块链的共识处理方法的流程示意图,以下具体说明。
在步骤801B中,共识环境检测。
示例的,步骤801B的执行可以参考步骤801A。
在步骤802B中,判断是否满足共识切换条件。当判断结果为是时,执行步骤803C,当判断结果为否时,执行步骤804C。
示例的,崩溃容错算法对应的共识切换条件为:检测到某次共识过程拜占庭节点的比例大于则进行共识算法切换。P为共识过程中主节点收到来自不同节点消息的数量与总节点数之间的比例。假设,其余节点未收到消息的(1-P)节点均为拜占庭节点,若某次共识过程中检测到的拜占庭节点大于/>则网络中拜占庭节点总比例将大于/>即大于/>表明当前可能出现了拜占庭容错类共识无法容忍的拜占庭节点数量,为实现系统整体的拜占庭容错能力,因而当拜占庭节点的比例大于时,将共识算法切换为拜占庭容错算法来防止拜占庭节点继续作恶可能导致的系统异常。
在步骤803B中,切换共识算法。
示例的,当前共识算法为崩溃容错算法时,由于系统(区块链网络)已经在上述拜占庭错误中达成了共识,先回退本次检测范围内的区块,再将共识算法切换为拜占庭容错算法。
在步骤804B中,当前轮次中是否存在拜占庭错误。当判断结果为是时,执行步骤805B,若否则执行步骤801B。
示例的,若检测到存在拜占庭错误的节点,但未达到共识切换的阈值时,此时执行切换过渡策略,减慢区块的生成速度,避免出现切换共识算法时回退过多的区块。
在步骤805B中,应用切换过渡策略。
示例的,步骤805B也可以通过步骤801C至步骤806C实现,此处不再赘述。
本申请实施例所提出的区块链网络的共识处理方法,使得区块链网络在网络环境中无拜占庭节点时,切换到崩溃容错类共识,从而满足性能需求高的应用场景;当检测到系统中存在一定数量的拜占庭节点时,将共识算法切换为拜占庭容错类共识,提供更好的容错能力。本申请所提出的切换过渡策略能够降低共识算法切换时共识性能变化和容错损耗所引发的负面影响。使用本申请实施例的共识方案,能够根据业务场景的变化自适应地切换共识算法,既能提供更好的容错能力也能满足性能要求高的应用场景需求。
下面继续说明本申请实施例提供的区块链网络的共识处理装置655的实施为软件模块的示例性结构,在一些实施例中,如图3所示,区块链网络包括多个节点,多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理;存储在存储器650的区块链网络的共识处理装置655中的软件模块可以包括:数据采集区块链模块6551,用于获取区块链网络当前所运行的共识算法的类型;共识检测区块链模块6552,用于响应于区块链网络满足共识环境检测条件,对区块链网络进行共识环境检测,得到检测结果,其中,检测结果表征至少部分节点基于共识算法对消息进行共识时是否出错;共识切换区块链模块6553,用于响应于检测结果满足类型对应的共识算法切换条件,将区块链网络当前所运行的共识算法切换为其他类型的共识算法;其中,共识算法的类型包括第一类型与第二类型,第一类型的共识算法的共识性能高于第二类型的共识算法的共识性能,第二类型的共识算法的容错性能大于第一类型的共识算法的容错性能。
在一些实施例中,当区块链网络当前运行第二类型的共识算法时,检测结果包括:一个或多个检测周期内区块链网络中的错误节点的数量;其中,错误节点是针对消息发送了错误的共识响应消息的节点;共识切换区块链模块6553,用于响应于在一个或多个检测周期内在区块链网络中检测到的错误节点的数量小于或者等于共识比例阈值,将区块链网络当前所运行的第二类型的共识算法切换为第一类型的共识算法。
在一些实施例中,当区块链网络运行第一类型的共识算法时,检测结果包括:区块链网络中正常节点的数量以及错误节点的数量;其中,正常节点是未出现运行故障的节点,错误节点是存在运行故障的节点;共识切换区块链模块6553,用于基于区块链网络的总节点数量和错误节点的数量,确定错误节点的比例,基于总节点数量以及正常节点的数量,确定正常节点的比例;响应于错误节点的比例等于或者大于第二类型的共识算法对应的全局维度容错比例阈值,对错误节点共识的区块进行回退处理,其中,全局维度容错比例阈值是正常节点的比例与预设容错比例之间的差值;将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
在一些实施例中,当区块链网络运行第一类型的共识算法时,检测结果包括:每个接入方在区块链网络中对应的错误节点的数量,其中,不同的接入方对应于不同的节点,错误节点是存在运行故障的节点;共识切换区块链模块6553,用于基于总节点数量以及每个接入方对应的错误节点的数量,确定每个接入方对应的错误节点的比例;响应于区块链网络中的至少一个接入方对应的错误节点的比例大于接入方维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
在一些实施例中,多个节点分别属于多个类型;当区块链网络运行第一类型的共识算法时,检测结果包括:区块链网络中每个类型的错误节点的数量,其中,错误节点是存在运行故障的节点;共识切换区块链模块6553,用于基于总节点数量以及每个类型的错误节点的数量,确定每个类型的错误节点的比例;响应于区块链网络中至少一种类型的错误节点的比例大于节点维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
在一些实施例中,区块链网络中的多个节点处于多个网段;检测结果包括:区块链网络中每个网段中的错误节点的数量,其中,错误节点是存在运行故障的节点;当区块链网络运行第一类型的共识算法时,共识切换区块链模块6553,用于基于总节点数量以及每个网段中的错误节点的数量,确定每个网段的错误节点的比例;响应于区块链网络的至少一个网段的错误节点的比例大于网段维度容错比例阈值,将区块链网络当前所运行的第一类型的共识算法切换为第二类型的共识算法。
在一些实施例中,当区块链网络运行第一类型的共识算法时,共识切换区块链模块6553,用于响应于区块链网络中存在错误节点,且错误节点的比例小于第二类型的共识算法对应的容错比例阈值,对区块链网络的区块生成速度进行控制;其中,错误节点是存在运行故障的节点,容错比例阈值的类型包括:全局维度容错比例阈值、接入方维度容错比例阈值、节点维度容错比例阈值以及网段维度容错比例阈值。
在一些实施例中,共识切换区块链模块6553,用于对区块链网络的区块生成速度进行控制。
在一些实施例中,共识切换区块链模块6553,用于确定区块链网络在至少一个历史检测周期中的区块生成速度,并确定区块生成速度在多个速度区间中所处的目标速度区间,其中,多个速度区间的端点速度依次衔接;基于目标速度区间对应的速度控制方式,对区块链网络在当前检测周期中的区块生成速度进行控制,其中,不同的速度区间对应的速度控制方式不同。
在一些实施例中,共识切换区块链模块6553,用于获取区块链网络的最大区块生成速度,基于最大区块生成速度与速度比例阈值确定速度阈值;将零作为第一速度区间,将介于零与速度阈值的区间作为第二速度区间,将大于等于速度阈值且小于最大区块生成速度的区间作为第三速度区间,将等于最大区块生成速度作为第四速度区间;其中,第一速度区间对应的速度控制方式为控制区块生成速度维持最低区块生成速度,第二速度区间对应的速度控制方式为控制区块生成速度以指数形式增长,第三速度区间对应的速度控制方式为控制区块生成速度匀速增长,第四速度区间对应的速度控制方式为控制区块生成速度维持最大区块生成速度不变。
在一些实施例中,共识切换区块链模块6553,用于获取区块链网络的区块的最大区块生成速度;将最大区块生成速度与零之间的区间划分为依次衔接的多个速度区间;其中,每个速度区间对应的速度值与每个速度区间的速度控制方式对应的速度增长速率负相关。
在一些实施例中,共识切换区块链模块6552,用于对区块链网络最近的至少一个检测周期内生成的区块进行检测处理,得到多个节点的参数,其中,参数包括以下至少之一:每个节点的类型、每个节点对应的接入方、每个节点对应的网段;确定至少一个检测周期内执行共识处理的每个节点,对每个节点的共识响应消息签名进行校验处理,得到每个节点的校验结果,其中,共识响应消息签名正确的节点的校验结果为正确节点,共识响应消息签名错误的节点的校验结果为错误节点;将每个节点的校验结果以及至少一项参数作为检测结果。
在一些实施例中,共识环境检测条件包括以下至少之一:区块链网络中接入新节点;区块链网络中至少一个节点的负载超过节点负载阈值;区块链网络中至少一个接入方对应的负载超过负载阈值;区块链网络中至少一个网段对应的节点的数量大于网段的节点负载数量阈值。
在一些实施例中,共识检测区块链模块6552,用于响应于消息传递到每个节点,对消息进行签名处理;响应于区块链网络中正常节点的数量占总节点数量的比例大于或等于响应比例阈值,且正常节点的共识响应消息中的有效共识响应消息的比例大于有效比例阈值,确定基于第一类型的共识算法对消息达成共识,其中,正常节点是对消息进行响应的节点,有效共识响应消息的签名是有效签名。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的区块链网络的共识处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的区块链网络的共识处理方法,例如,如图3示出的区块链网络的共识处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例,在满足共识环境检测条件时,基于共识检测结果与共识算法对应的切换条件对区块链网络进行共识算法切换,使得区块链网络的共识算法切换更灵活,更符合区块链网络的容错需求,提升区块链网络的容错能力以及运行的稳定性。在共识算法切换后,通过对区块生成速度进行控制,能够降低共识算法切换时共识性能变化和容错损耗所引发的负面影响。使用本申请实施例的共识方案,能够根据业务场景的变化自适应地切换共识算法,既能提供更好的容错能力也能满足性能要求高的应用场景需求。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (20)

1.一种区块链网络的共识处理方法,其特征在于,
所述区块链网络包括多个节点,所述多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理;
所述方法包括:
获取所述区块链网络当前所运行的所述共识算法的类型;
响应于所述区块链网络满足共识环境检测条件,对所述区块链网络进行共识环境检测,得到检测结果,其中,所述检测结果表征所述至少部分节点基于所述共识算法对所述消息进行共识时是否出错;
响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法;
其中,所述共识算法的类型包括第一类型与第二类型,所述第一类型的共识算法的共识性能高于所述第二类型的共识算法的共识性能,所述第二类型的共识算法的容错性能大于所述第一类型的共识算法的容错性能。
2.如权利要求1所述的方法,其特征在于,
当所述区块链网络当前运行所述第二类型的共识算法时,所述检测结果包括:一个或多个检测周期内所述区块链网络中的错误节点的数量;其中,所述错误节点是针对所述消息发送了错误的共识响应消息的节点;
所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法,包括:
响应于在一个或多个检测周期内在所述区块链网络中检测到的所述错误节点的数量小于或者等于共识比例阈值,将所述区块链网络当前所运行的所述第二类型的共识算法切换为所述第一类型的共识算法。
3.如权利要求1所述的方法,其特征在于,
当所述区块链网络当前运行所述第一类型的共识算法时,所述检测结果包括:所述区块链网络中正常节点的数量以及错误节点的数量;其中,所述正常节点是未出现运行故障的节点,所述错误节点是存在运行故障的节点;
所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法,包括:
基于所述区块链网络的总节点数量和所述错误节点的数量,确定所述错误节点的比例,基于所述总节点数量以及所述正常节点的数量,确定所述正常节点的比例;
响应于所述错误节点的比例等于或者大于所述第二类型的共识算法对应的全局维度容错比例阈值,对所述错误节点共识的区块进行回退处理,其中,所述全局维度容错比例阈值是所述正常节点的比例与预设容错比例之间的差值;
将所述区块链网络当前所运行的所述第一类型的共识算法切换为所述第二类型的共识算法。
4.如权利要求1所述的方法,其特征在于,当所述区块链网络当前运行所述第一类型的共识算法时,所述检测结果包括:每个接入方在所述区块链网络中对应的错误节点的数量,其中,不同的所述接入方对应于不同的所述节点,所述错误节点是存在运行故障的节点;
所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法,包括:
基于所述总节点数量以及所述每个接入方对应的错误节点的数量,确定所述每个接入方对应的错误节点的比例;
响应于所述区块链网络中的至少一个所述接入方对应的错误节点的比例大于接入方维度容错比例阈值,将所述区块链网络当前所运行的所述第一类型的共识算法切换为所述第二类型的共识算法。
5.如权利要求1所述的方法,其特征在于,
所述多个节点分别属于多个类型;当所述区块链网络当前运行所述第一类型的共识算法时,所述检测结果包括:所述区块链网络中每个所述类型的错误节点的数量,其中,所述错误节点是存在运行故障的节点;
所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法,包括:
基于所述总节点数量以及每个所述类型的错误节点的数量,确定每个所述类型的错误节点的比例;
响应于所述区块链网络中至少一种类型的错误节点的比例大于节点维度容错比例阈值,将所述区块链网络当前所运行的所述第一类型的共识算法切换为所述第二类型的共识算法。
6.如权利要求1所述的方法,其特征在于,
所述区块链网络中的所述多个节点处于多个网段;当所述区块链网络当前运行所述第一类型的共识算法时,所述检测结果包括:所述区块链网络中每个所述网段中的错误节点的数量,其中,所述错误节点是存在运行故障的节点;
所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法,包括:
基于所述总节点数量以及每个所述网段中的错误节点的数量,确定每个所述网段的错误节点的比例;
响应于所述区块链网络的至少一个网段的错误节点的比例大于网段维度容错比例阈值,将所述区块链网络当前所运行的所述第一类型的共识算法切换为所述第二类型的共识算法。
7.如权利要求1所述的方法,其特征在于,当所述区块链网络运行所述第一类型的共识算法时,所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法之前,所述方法还包括:
响应于所述区块链网络中存在错误节点,且所述错误节点的比例小于所述第二类型的共识算法对应的容错比例阈值,对所述区块链网络的区块生成速度进行控制;
其中,所述错误节点是存在运行故障的节点,所述容错比例阈值的类型包括:全局维度容错比例阈值、接入方维度容错比例阈值、节点维度容错比例阈值以及网段维度容错比例阈值。
8.如权利要求1所述的方法,其特征在于,所述响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法之后,所述方法还包括:
对所述区块链网络的区块生成速度进行控制。
9.如权利要求7或8所述的方法,其特征在于,所述对所述区块链网络的区块生成速度进行控制,包括:
确定所述区块链网络在至少一个历史检测周期中的区块生成速度,并确定所述区块生成速度在多个速度区间中所处的目标速度区间,其中,所述多个速度区间的端点速度依次衔接;
基于所述目标速度区间对应的速度控制方式,对所述区块链网络在当前检测周期中的区块生成速度进行控制,其中,不同的所述速度区间对应的速度控制方式不同。
10.如权利要求9所述的方法,其特征在于,所述确定所述区块链网络在至少一个历史检测周期中的区块生成速度之前,所述方法还包括:
获取所述区块链网络的最大区块生成速度,基于所述最大区块生成速度与速度比例阈值确定速度阈值;
将零作为第一速度区间,将介于零与所述速度阈值的区间作为第二速度区间,将大于等于所述速度阈值且小于所述最大区块生成速度的区间作为第三速度区间,将等于所述最大区块生成速度作为第四速度区间;
其中,所述第一速度区间对应的速度控制方式为控制所述区块生成速度维持最低区块生成速度,所述第二速度区间对应的速度控制方式为控制所述区块生成速度以指数形式增长,所述第三速度区间对应的速度控制方式为控制所述区块生成速度匀速增长,所述第四速度区间对应的速度控制方式为控制所述区块生成速度维持所述最大区块生成速度不变。
11.如权利要求9所述的方法,其特征在于,所述确定所述区块链网络在至少一个历史检测周期中的区块生成速度之前,所述方法还包括:
获取所述区块链网络的区块的最大区块生成速度;
将所述最大区块生成速度与零之间的区间划分为依次衔接的多个速度区间;
其中,每个所述速度区间对应的速度值与每个所述速度区间的速度控制方式对应的速度增长速率负相关。
12.如权利要求1所述的方法,其特征在于,所述对所述区块链网络进行共识环境检测,得到检测结果,包括:
对所述区块链网络最近的至少一个检测周期内生成的区块进行检测处理,得到所述多个节点的参数,其中,所述参数包括以下至少之一:每个所述节点的类型、每个所述节点对应的接入方、每个所述节点对应的网段;
确定所述至少一个检测周期内执行共识处理的每个所述节点,对每个所述节点的共识响应消息签名进行校验处理,得到每个所述节点的校验结果,其中,共识响应消息签名正确的所述节点的所述校验结果为正确节点,共识响应消息签名错误的所述节点的所述校验结果为错误节点;
将每个所述节点的校验结果以及所述至少一项参数作为检测结果。
13.如权利要求1所述的方法,其特征在于,所述共识环境检测条件包括以下至少之一:
所述区块链网络中接入新节点;
所述区块链网络中至少一个所述节点的负载超过节点负载阈值;
所述区块链网络中至少一个接入方对应的负载超过负载阈值;
所述区块链网络中至少一个网段对应的节点的数量大于所述网段的节点负载数量阈值。
14.如权利要求1所述的方法,其特征在于,当所述区块链网络当前运行所述第一类型的共识算法时,所述方法还包括:
响应于所述消息传递到每个所述节点,对所述消息进行签名处理;
响应于所述区块链网络中正常节点的数量占总节点数量的比例大于或等于响应比例阈值,且所述正常节点的共识响应消息中的有效共识响应消息的比例大于有效比例阈值,确定基于所述第一类型的共识算法对所述消息达成共识,其中,所述正常节点是对所述消息进行响应的节点,所述有效共识响应消息的签名是有效签名。
15.一种区块链网络的共识处理方法,其特征在于,
所述区块链网络包括多个节点,所述多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识;
所述方法包括:
确定所述区块链网络在至少一个历史检测周期中的区块生成速度,并确定所述区块生成速度在多个速度区间中所处的目标速度区间,其中,所述多个速度区间的端点速度依次衔接;
基于所述目标速度区间对应的速度控制方式,对所述区块链网络在当前检测周期中的区块生成速度进行控制,其中,不同的所述速度区间对应的速度控制方式不同。
16.如权利要求15所述的方法,其特征在于,所述确定所述区块链网络在至少一个历史检测周期中的区块生成速度之前,所述方法还包括:
获取所述区块链网络的最大区块生成速度,基于所述最大区块生成速度与速度比例阈值确定速度阈值;
将零作为第一速度区间,将介于零与所述速度阈值的区间作为第二速度区间,将大于等于所述速度阈值且小于所述最大区块生成速度的区间作为第三速度区间,将等于所述最大区块生成速度作为第四速度区间;
其中,所述第一速度区间对应的速度控制方式为控制所述区块生成速度维持最低区块生成速度,所述第二速度区间对应的速度控制方式为控制所述区块生成速度以指数形式增长,所述第三速度区间对应的速度控制方式为控制所述区块生成速度匀速增长,所述第四速度区间对应的速度控制方式为控制所述区块生成速度维持所述最大区块生成速度不变。
17.如权利要求15所述的方法,其特征在于,所述确定所述区块链网络在至少一个历史检测周期中的区块生成速度之前,所述方法还包括:
获取所述区块链网络的区块的最大区块生成速度;
将所述最大区块生成速度与零之间的区间划分为依次衔接的多个速度区间;
其中,每个所述速度区间对应的速度值与每个所述速度区间的速度控制方式对应的速度增长速率负相关。
18.一种区块链的共识处理装置,其特征在于,所述区块链网络包括多个节点,所述多个节点中至少部分节点用于基于共识算法对客户端发送的消息进行共识处理,所述区块链的共识处理装置包括:
数据采集区块链模块,用于获取所述区块链网络当前所运行的所述共识算法的类型;
共识检测区块链模块,用于响应于所述区块链网络满足共识环境检测条件,对所述区块链网络进行共识环境检测,得到检测结果,其中,所述检测结果表征所述至少部分节点基于所述共识算法对所述消息进行共识时是否出错;
共识切换区块链模块,用于响应于所述检测结果满足所述类型对应的共识算法切换条件,将所述区块链网络当前所运行的所述共识算法切换为其他类型的共识算法;
其中,所述共识算法的类型包括第一类型与第二类型,所述第一类型的共识算法的共识性能高于所述第二类型的共识算法的共识性能,所述第二类型的共识算法的容错性能大于所述第一类型的共识算法的容错性能。
19.一种运行区块链网络的节点的电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至17任一项所述的区块链网络的共识方法。
20.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令被处理器执行时实现权利要求1至17任一项所述的区块链网络的共识方法。
CN202210302668.6A 2022-03-24 2022-03-24 区块链网络的共识处理方法、装置、设备及存储介质 Pending CN116846888A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210302668.6A CN116846888A (zh) 2022-03-24 2022-03-24 区块链网络的共识处理方法、装置、设备及存储介质
PCT/CN2022/132238 WO2023179056A1 (zh) 2022-03-24 2022-11-16 区块链网络的共识处理方法、装置、设备及存储介质、程序产品
US18/239,843 US20230409450A1 (en) 2022-03-24 2023-08-30 Consensus processing method and apparatus for blockchain network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210302668.6A CN116846888A (zh) 2022-03-24 2022-03-24 区块链网络的共识处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116846888A true CN116846888A (zh) 2023-10-03

Family

ID=88099742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210302668.6A Pending CN116846888A (zh) 2022-03-24 2022-03-24 区块链网络的共识处理方法、装置、设备及存储介质

Country Status (3)

Country Link
US (1) US20230409450A1 (zh)
CN (1) CN116846888A (zh)
WO (1) WO2023179056A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117478299B (zh) * 2023-12-27 2024-03-01 湖南天河国云科技有限公司 区块链共识算法切换方法、装置和计算机设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878071B (zh) * 2017-01-25 2020-09-15 上海钜真金融信息服务有限公司 一种基于Raft算法的区块链共识机制
CN107577694B (zh) * 2017-07-14 2020-04-24 创新先进技术有限公司 一种基于区块链的数据处理方法及设备
CN108235799B (zh) * 2017-12-27 2020-02-18 深圳达闼科技控股有限公司 区块生成方法、装置、存储介质、区块链网络
US11038690B2 (en) * 2018-10-04 2021-06-15 EMC IP Holding Company LLC Policy-driven dynamic consensus protocol selection
CN110598471A (zh) * 2019-09-17 2019-12-20 深圳市网心科技有限公司 基于区块链的时间戳生成方法、装置、系统及存储介质
CN111464356B (zh) * 2020-04-01 2021-11-05 腾讯科技(深圳)有限公司 一种区块共识周期切换方法、装置及计算机设备
CN112564960B (zh) * 2020-12-01 2022-05-13 浙商银行股份有限公司 基于区块链节点中心度弹性调整共识的方法及装置
CN113764060B (zh) * 2021-09-09 2023-09-22 安徽师范大学 一种基于双区块链的医疗数据管理系统、病人授权病历共享方法

Also Published As

Publication number Publication date
US20230409450A1 (en) 2023-12-21
WO2023179056A1 (zh) 2023-09-28

Similar Documents

Publication Publication Date Title
US11294888B2 (en) Blockchain system and blockchain transaction data processing method based on ethereum
AU2019203861B2 (en) System and method for ending view change protocol
US20200235988A1 (en) Changing a master node in a blockchain system
KR102566892B1 (ko) 블록체인 합의 방법, 디바이스 및 시스템
JP7154234B2 (ja) ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
US20180308091A1 (en) Fairness preserving byzantine agreements
CN110990408A (zh) 基于区块链的业务信息协同方法、业务系统及联盟链
EP3701701A2 (en) Consensus system and method
CN111400112B (zh) 分布式集群的存储系统的写入方法、装置及可读存储介质
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN113141414B (zh) 一种cnfs协议中区块链节点的分组多链异步共识方法
CN113347164A (zh) 基于区块链的分布式共识系统及方法、设备、存储介质
CN114050904B (zh) 一种基于两层级领导节点分片结构的共识系统及方法
Vizier et al. Comchain: Bridging the gap between public and consortium blockchains
CN112395113B (zh) 实用拜占庭容错共识方法及装置、可读存储介质
Vizier et al. ComChain: A blockchain with Byzantine fault‐tolerant reconfiguration
WO2023040453A1 (zh) 一种交易信息处理方法及装置
CN111338857A (zh) 一种拜占庭容错共识协议
US20230409450A1 (en) Consensus processing method and apparatus for blockchain network
CN116204110A (zh) 基于区块链的区块处理方法、装置及设备、介质、产品
Canakci et al. Scaling membership of Byzantine consensus
CN111756548A (zh) 节点共识机制优化方法、系统、设备及存储介质
CN111563740A (zh) 一种联盟链的交易处理方法及系统
CN116633699B (zh) 基于区块链的产品防伪溯源信息可信处理方法及系统
CN116192868B (zh) 一种应用于联盟链的并行拜占庭容错共识方法及终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40099881

Country of ref document: HK