CN109525636A - 基于Raft算法的区块链共识方法 - Google Patents

基于Raft算法的区块链共识方法 Download PDF

Info

Publication number
CN109525636A
CN109525636A CN201811186202.4A CN201811186202A CN109525636A CN 109525636 A CN109525636 A CN 109525636A CN 201811186202 A CN201811186202 A CN 201811186202A CN 109525636 A CN109525636 A CN 109525636A
Authority
CN
China
Prior art keywords
node
block
leader
common recognition
message
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.)
Granted
Application number
CN201811186202.4A
Other languages
English (en)
Other versions
CN109525636B (zh
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.)
Shanghai Insurance Exchange Ltd By Share Ltd
Original Assignee
Shanghai Insurance Exchange Ltd By Share 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 Shanghai Insurance Exchange Ltd By Share Ltd filed Critical Shanghai Insurance Exchange Ltd By Share Ltd
Priority to CN201811186202.4A priority Critical patent/CN109525636B/zh
Publication of CN109525636A publication Critical patent/CN109525636A/zh
Application granted granted Critical
Publication of CN109525636B publication Critical patent/CN109525636B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

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)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了基于Raft算法的区块链共识方法,其一个实施例包括:选举步骤,其中根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;准备步骤,其中领导节点向所有跟随节点发出提交区块的准备请求,跟随节点对准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及提交步骤,其中在接收到满足预定条件的跟随节点的认可消息的情况下,领导节点向所有跟随节点发出提交区块请求,跟随节点对该提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;其中,该第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。

Description

基于Raft算法的区块链共识方法
技术领域
本发明涉及区块链技术,具体地,本发明涉及区块链网络上的利用Raft算法的共识机制。
背景技术
Raft算法是一种用于分布式系统的一致性算法。传统的Raft算法虽然效率较高,但是其只支持容错故障节点(即因为系统繁忙、宕机或者网络问题等其它异常情况导致的无响应的节点),不支持容错作恶节点(即除了可以故意对网络的其它节点的请求无响应之外,还可以故意发送错误的数据,或者给不同的其它节点发送不同的数据的节点)。
另一方面,拜占庭容错(Byzantine Fault Tolerance,BFT)共识算法则能支持容错故障节点和作恶节点,但是由于处理的流程更复杂,通信量更大,因此BFT共识算法的效率较低。
因此,需要一种新型的基于Raft算法的共识方法,其至少具有部分容恶能力。
发明内容
本发明提供一种在包括多个共识节点的区块链中进行共识的方法。通过该共识方法,可以在具有部分容恶能力的同时高效地达成共识。
根据本发明的一个方面,提供了一种在包括多个共识节点的区块链中进行共识的方法,该方法包括:选举步骤,在所述选举步骤中,根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;准备步骤,在所述准备步骤中,领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及提交步骤,在所述提交步骤中,在接收到满足预定条件的跟随节点的认可消息的情况下,领导节点向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
根据本发明的另一个方面,提供了一种区块链网络,该区块链网络包括:多个共识节点,各共识节点至少能在领导节点和跟随节点的状态之间切换,多个共识节点根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及领导节点在接收到满足预定条件的跟随节点的认可消息的情况下,向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
根据本发明的另一个方面,提供了一种用于在包括多个节点的区块链中进行共识的装置,该装置包括:选举部件,所述选举部件根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;准备部件,所述准备部件使得领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及提交部件,所述提交部件使得领导节点在接收到满足预定条件的跟随节点的认可消息的情况下向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
根据本发明的另一个方面,提供了一种用于在包括多个节点的区块链中进行共识的系统,其包括:一个或更多个处理器;以及一个或更多个存储器,被配置为存储一系列计算机可执行指令,其中所述一系列计算机可执行指令在由所述一个或更多个处理器运行时使得所述一个或更多个处理器执行如上所述的方法。
根据本发明的另一个方面,提供了一种非暂态的计算机可读介质,其上存储有计算机可执行指令,所述计算机可执行指令在由一个或更多个处理器运行时使得所述一个或更多个处理器执行如上所述的方法。
根据参照附图的以下描述,本发明的其它特性特征和优点将变得清晰。
附图说明
并入说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与描述一起用于说明本发明的原理。
图1a是示出了根据本发明一个示例性实施例的区块链网络系统基本配置的示意图。
图1b示出了根据本发明一个示例性实施例的区块链网络系统中各个共识节点的状态的状态机。
图2是示出了根据本发明一个示例性实施例的在区块链网络中进行共识的方法的示例性流程图。
图3是示出了根据本发明一个示例性实施例的共识方法中的启动步骤和选举步骤的详细流程图。
图4是示出了根据本发明一个示例性实施例的共识方法中的准备阶段和提交阶段的示意图。
图5是示出了根据本发明一个示例性实施例的共识方法中的准备步骤和提交步骤的详细流程图。
图6是示出了根据本发明一个示例性实施例的在区块链网络中修改各个节点的权重的示例性流程图。
图7是示出了根据本发明一个示例性实施例的用于在区块链网络中进行共识的装置的基本配置的框图。
图8是示出可以实现根据本发明的实施例的计算设备的示例性配置图。
具体实施方式
下面将参考附图来详细描述本发明的优选的实施例。不是本发明必需的细节和功能被省略,以便不会混淆本发明的理解。
请注意,类似的参考数字和字母指的是图中的类似的项目,因而一旦在一幅图中定义了一个项目,就不需要在之后的图中讨论了。
在本公开中,术语“第一”、“第二”等仅仅被用来在元件或步骤之间进行区分,而并不意图表示时间顺序、优先级或重要性。
图1a是示出了根据本发明一个示例性实施例的区块链网络系统基本配置的示意图。
如图1a所示,根据本发明实施例的区块链网络可以包括多个共识节点(例如,共识节点1-4),其中各个共识节点负责进行共识操作和生产账本,特别是基于Raft算法进行的共识操作。多个共识节点两两之间相互连接和/或通信。在一些实施方式中,由于在实际的网络环境中等到同步反馈是不现实的,各节点之间可以采用异步通信方式,这更加适用于工程实践的生产环境。另外,虽然图1a未示出,但是本领域技术人员均能理解,应用本发明的区块链网络系统还可以根据需要包括非共识节点(未示出)。此外,应当认识到,在一些情况下,共识节点和非共识节点并非是固定的,而是可以进行切换。
例如,在根据本发明实施例的基于Raft算法的共识操作中,各个节点可以处于四种角色状态中,分别是:非投票节点(即,非共识节点的一种)、跟随节点、候选人节点和领导节点。区块链网络中的一个节点在某一时刻只能是这四种状态中的其中一种,而这四种角色状态可以随着时间和条件的变化而进行切换,如下面将结合图1b所详细描述的。
图1b示出了根据本发明一个示例性实施例的区块链网络系统中各个共识节点的状态的状态机。具体地,各个节点在刚启动时默认状态是非投票节点,在进行了区块链网络的区块同步后,如果区块高度与网络中的最新高度一致,该节点的状态切换为跟随节点(如标号1的箭头所示)。随后,当该跟随节点长时间未收到心跳信息时,该跟随节点可以切换为候选人节点(如标号2的箭头所示)。如果该候选人节点通过选举步骤(将在下文中参考附图3进行详细描述)成功当选,则该候选人节点可以切换为领导节点(如标号3的箭头所示)。在一些实施方式中,如果候选人节点没有成功当选,该候选人节点将切换回跟随节点状态(如标号4的箭头所示)。在一些实施方式中,如果触发了领导节点的卸任处理(将在下文中参考附图3进行详细描述),领导节点可以切换到跟随节点状态(如标号5的箭头所示)。在一些实施方式中,如果跟随节点的区块高度低于区块链网络中的最新区块高度,则该跟随节点状态切换到非投票节点(如标号6的箭头所示),并进行区块同步。
其中,请注意,领导节点可以对应于传统Raft算法中的领导者(Leader),是根据本发明的实施例的区块链网络中唯一可以提交区块的节点。而跟随节点则对应于传统Raft算法中的跟随者(Follower),是不主动向其他节点发送消息的被动的节点。候选人节点是在选举处理中的一种中间状态,在选举处理结束后,候选人节点将变为领导节点或跟随节点。而与其他节点状态相比,非投票节点的功能是受限的。例如,非投票节点不能参与如下文所述的选举步骤、准备步骤和提交步骤等步骤。
图2是示出了根据本发明一个示例性实施例的在区块链网络中进行共识的方法200的示例性流程图。如图2所示,在区块链网络中进行共识的方法200至少包括选举步骤S202、准备步骤S204和提交步骤S206。
具体而言,在选举步骤S202中,根据Raft算法从组成区块链网络的多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点。
然后,在准备步骤S204中,领导节点生成区块,并向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息。该第一验证处理可以包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
然后,在提交步骤S206中,在接收到满足预定条件的跟随节点的认可消息的情况下,领导节点向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块。在一些优选实施方式中,第二验证处理可以是验证该区块是否对应于在准备步骤S204中已经通过第一验证处理的准备请求。
上述根据本发明的方法200提供了一种高效且至少具有部分容恶能力的区块链共识方法。
首先,由于采用了Raft算法中的领导节点机制,可以高效地达成共识。其次,由于将领导节点提交区块的处理分成准备步骤S204和提交步骤S206的两阶段处理并分别进行验证,因此增加了该共识方法对跟随节点和领导节点的容恶能力。
另外,在根据本发明的一些优选实施方式中,跟随节点可以在本地保存关于准备步骤S204和/或提交步骤S206的记录,其中该记录可以至少包括领导节点的与所述准备请求和/或所述提交区块请求相关的签名。这些记录可以被事后追溯,从而进一步消除领导节点故意作恶的可能性。
下面将结合图3至图5来描述根据本发明一个示例性实施例的在区块链网络中进行的共识方法的详细操作,从而更清楚全面地阐述本发明的原理以及益处。显然,这些细节只是示例性的,而本发明并不限于此。
图3是示出了根据本发明一个示例性实施例的在区块链网络中进行共识的方法中启动步骤和选举步骤的详细流程图。如图3所示,启动步骤包括步骤S302至S310,并且选举步骤包括步骤S312至S326。
具体地,先描述启动步骤,首先在步骤S302处,区块链网络中的各个共识节点启动。如上述参考图1b所描述的,所有共识节点在启动时的默认角色状态为非投票节点状态。
随后,处理进行到步骤S304处,所有启动的共识节点对自身的程序进行程序包检验。这样的程序包检验可以包括例如检验程序包文件的大小、文件类型、权限、MD5校验和、路径、修改时间等中的一项或多项。仅当程序包校验通过时,共识节点才能继续启动步骤。请注意,通过这样的程序包检验步骤,可以消除共识节点在启动之前其程序就已经被恶意篡改的可能性,进一步提高系统的安全性。
随后,处理进行到步骤S306处,已经经过程序包检验的共识节点顺利启动,并连入区块链网络进行区块同步。直至共识节点同步至区块链网络中的最新的区块高度,区块同步完成。
随后,在步骤S308处确认共识节点的区块同步已经完成后,处理进行到步骤S310处,该共识节点的角色状态切换为跟随节点(如参考图1b所描述的)。
另外,在一些实施方式中,在节点启动后,已经变为跟随节点的共识节点会定期或不定期地检查自身的区块高度是否不低于当前区块链网络中的最新的区块高度。如上面参考图1b所述,当共识节点的区块高度低于当前区块链网络中的最新的区块高度时,跟随节点的状态会切换回非投票节点,并再一次进行步骤S306的区块同步操作,直到在步骤S308处确认共识节点的区块高度不低于当前区块链网络中的最新的区块高度,节点再次变为跟随节点。这样可以保证所有共识节点的区块高度是一致的。
随后,处理进行到选举步骤。在步骤S312处,各个跟随节点检查在预定时间(可以由节点自身的计时器随机决定)内是否收到心跳信息。心跳信息是从领导节点向各个跟随节点周期性发送的信息。心跳信息可以用来保持领导节点的角色状态不发生变化,并通知各个跟随节点该领导节点的存在。请注意,该预定时间可以是随机生成的时间值,在不同任期之间该预定时间可以不同,各节点之间的预定时间也可以各不相同。
如果跟随节点接收到心跳信息,则该跟随节点保持当前状态不变,并周期性地检查是否接收到心跳信息。这样的周期性检查心跳信息可以通过各个共识节点自身的计时器来完成。
如果跟随节点在预定时间内没有接收到心跳信息,则如步骤S314所示,该节点将状态切换为候选人节点(如图1b中所示),并且使得节点自身的任期加一。请注意,这里的候选人节点不限于一个,也可以是多个。
随后,处理进行到步骤S316,所有候选人节点可以向剩余的共识节点(例如,除了节点自身以外的其他候选人节点和跟随节点)发送投票请求,以请求其余共识节点为自己投票。
随后,在步骤S318处,接收到投票请求的共识节点对所接收的请求进行验证。在一些示例性实施方式中,这样的验证可以是发送投票请求的候选人节点的任期号大于自身节点的任期号、并且区块高度不低于自身的区块高度。
如果上述验证通过,则在步骤S320处,共识节点为该候选人节点投票。反之,如果验证不通过,则该共识节点不会为该候选人节点投票。另外,候选人节点也会将自己的票投给自己。
随后,候选人节点接收到来自其他跟随节点的投票,以及该候选人节点投给自身的一票。在步骤S322处,候选人节点检验上述收到的投票的总数是否超过了整个区块链网络中共识节点总数的一半。
请注意,每一个共识节点在每个任期内仅可以投出一票。由此,即使在同一个选举周期中存在两个或更多个候选人节点,这些候选人节点也不可能同时得到超过整个区块链网络中共识节点总数的一半的大多数投票。
如果收到的投票的总数没有超过一半,则该候选人节点选举失败。在一些实施方式中,该候选人节点将切换回跟随节点,并且处理可以返回到步骤S312处,即,再一次基于是否接收到来自领导节点的心跳信息而决定是否开始新一轮的选举步骤。
如果收到的投票的总数超过了一半,则处理进行到步骤S324处,该候选人节点变为领导节点。此时,整个选举步骤完成,处理进行到步骤S326处,领导节点周期性地向其余节点发送心跳信息,其余节点在收到心跳信息后均变为跟随节点。
在一些实施方式中,如果跟随节点在预定时间内没有接收到心跳信息,则将重新执行选举步骤来选出下一任期的领导节点。因此,当选的领导节点需要周期性地将心跳信息发送给所有跟随节点,以保持自己领导节点的状态,并防止选举步骤的重新执行。
在一些实施方式中,上述心跳信息可以包括关于领导节点的区块高度和任期号的信息。但是,上述心跳信息不限于此。例如,心跳信息还可以包括领导节点发送给跟随节点的各种请求信息、消息信息等。
下面将结合图4和图5来描述本发明的一个示例性实施例的在区块链网络中进行的共识方法的准备步骤和提交步骤的详细操作。图4是示出了共识方法的一个具体示例中的准备阶段和提交阶段的各个节点之间信息发送的示意图。图5是示出了共识方法中的准备步骤和提交步骤的详细流程图。
如图4所示,区块链网络共包括4个共识节点,在经过了例如参考图3描述的选举步骤后,选出了领导节点L,其余3个为跟随节点F1、F2和F3。在这个示例中,假设跟随节点F3是错误节点或作恶节点,例如在准备步骤中的未响应或验证未通过的节点或返回错误信息的节点。
如图4所示,在准备阶段,领导节点L向区块链网络中的所有跟随节点F1至F3发送提交区块的准备请求。跟随节点F1至F3中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息。在提交阶段,领导节点L在接收到认可消息后向所有跟随节点F1至F3提交新的区块。下面将结合图4和图5对准备步骤(例如,包括图5中的步骤S502至S510)和提交步骤((例如,包括图5中的步骤S512至S516)中的各个处理进行详细说明。
如图5所示,在步骤S502处,领导节点L生成了新的待提交的区块,并向所有的跟随节点F1至F3发送基于该待提交的区块的准备请求。该准备请求里可以包括例如领导节点、要提交的区块以及区块内的事务的相关信息。但是,准备请求中所包括的信息不限于此,还可以包括例如时间戳信息。
在一些实施方式中,领导节点的相关信息可以包括领导节点的任期号和领导节点的区块高度,要提交的区块的相关信息可以包括要提交的区块中的前哈希值(即,前一区块的哈希值),并且区块中的事务的相关信息可以包括区块中的事务的梅克尔(Merkle)哈希值。
随后,处理进行到步骤S504处,例如,跟随节点F1至F3在接收到来自领导节点L的准备请求后,对准备请求中所包含的相关信息进行第一验证处理。
在一些实施方式中,以跟随节点F1为例,在其上执行的第一验证处理可以包括验证是否满足以下条件中的一个或多个:领导节点L的任期号不小于跟随节点F1的任期号,领导节点L的区块高度不低于跟随节点F1的区块高度,要提交的区块中的前哈希值正确,以及要提交的区块中的事务的梅克尔哈希值正确。其中,要提交的区块中的前哈希值可以用于将要提交的区块与前一个区块相连,以保证所有区块均是按顺序相连接的。例如,前哈希值可以通过例如对前一个区块的区块头数据进行哈希计算而得到。另外,区块中的事务的梅克尔哈希值可以是梅克尔树的根节点的哈希值(即,通过对区块中的所有事务不断地进行两个一组的向上的哈希计算,直到计算得到的最后一个哈希值)或整个梅克尔树的哈希值。使用根节点哈希值能够快速检验区块中事务的完整性,即数据是否被篡改过。注意上述验证条件仅仅是示例,验证条件不限于此,还可以包括例如验证区块生成时间的时间戳是否晚于上一个区块等其他验证条件。
如果领导节点L发送的准备请求没有通过跟随节点的第一验证处理,则如步骤S506所示,基于没有通过的理由,该跟随节点可能不返回认可消息和/或触发领导节点卸任处理。例如,在一些实施方式中,如果在第一验证处理中确定领导节点的任期号小于跟随节点的任期号或者要提交的区块中的前哈希值不正确的情况下,该跟随节点触发该领导节点的卸任处理。例如,在卸任处理后,该领导节点的状态切换为跟随节点状态,并重新执行选举步骤来选出新的领导节点。
如果领导节点L发送的准备请求通过了跟随节点的第一验证处理,则处理进行到步骤S508处,该跟随节点向领导节点返回认可消息。如图4所示,跟随节点F1和F2通过了第一验证处理,并向领导节点L返回认可消息,而跟随节点F3因为故障、网络宕机或故意作恶而没有向领导节点L返回认可消息。
随后,处理进行到步骤S510处,领导节点L判断是否接收到了满足预定条件的跟随节点返回的认可消息。在一些示例性实施方式中,该预定条件可以为返回认可消息的跟随节点加上领导节点的数量超过区块链中的共识节点的总数量的一半。例如,如图4中所示出的,领导节点L仅接收了来自F1和F2的2条认可消息,加上领导节点自己的数量为3,则已经超过了共识节点总量(4个)的一半(2个),因此,可以视为预定条件被满足。
在另一些替代性实施方式中,在各个节点具有权重的情况下,预定条件可以为返回认可消息的跟随节点的权重值之和大于预定值,该替代性实施方式将在后文中参考图6进行详细说明。
如果领导节点L没有接收到满足预定条件的跟随节点的认可消息,在一些实施方式中,领导节点可以返回至步骤S502处并根据是否需要提交新的区块而决定是否重新开始新的一轮准备步骤。
如果领导节点L接收到了满足预定条件的跟随节点的认可消息,则处理进行到步骤S512处。领导节点向所有的跟随节点发出提交区块请求。
随后,处理进行到步骤S514处,接收到提交区块请求的跟随节点对该提交区块请求进行第二验证处理。在一些实施方式中,该第二验证处理可以是验证该区块是否对应于在准备步骤S504中已经通过第一验证处理的准备请求。
如果在跟随节点处的第二验证处理通过,则处理进行到步骤S516处,跟随节点将验证通过的区块加入到本地区块链账本中,成为新的区块。
在一些实施方式中,例如,如果在跟随节点F1处的第二验证没有通过,则该跟随节点F1可以丢弃来自领导节点的待提交的区块,并随机向区块链中的其他节点(即,F2或F3)寻求区块同步。请注意,F3可能是未响应节点或作恶节点,因此F1可能无法从F3处正确地获取待同步的区块。因此,F1可能会再向F2请求进行区块同步。
下面将结合图4和图6来描述本发明的一个替代性实施例的方法的详细操作,其中在区块链网络中的每一个共识节点具有权重值,并且可以根据各跟随节点的表现而调整其权重值。图6是示出了根据本发明一个示例性实施例的在区块链网络中修改各个节点的权重的示例性流程图。
具体地,在步骤S602处,领导节点L在其任期开始时为自己和各跟随节点(F1至F3)分配相同的默认权重值。
例如,在一些实施方式中,领导节点L的权重值为D0,F1至F3的权重值分别为D1至D3。在任期开始时,D0至D3均等于相同的默认权重值D。在一些实施方式中,D0至D3的总和一直保持等于预定的常数。可以根据需要来设置该常数。
随后,处理进行到步骤S604处,领导节点L记录各跟随节点的权重值,并且根据跟随节点返回认可消息的速度和/或正确性调整各跟随节点的权重值。
在一些实施方式中,跟随节点的权重值的下限值可以被设置为1,该权重值的上限值被设置为小于默认权重值的2倍。也就是说,通过设置这样的数值范围,即使在表现较差的情况下,单个节点的权重值至少可以对权重值的总和产生影响;与之相对,即使在表现极优的情况下,单个节点的权重值对权重值的总和的贡献也不会超过两个节点的初始默认权重值。另外,权重值的变化总量(ΔD)可以基于期望的收敛速度来设置。例如,将该变化总量设置的越大,则收敛速度越快。
另外,在一些实施方式中,在每次提交步骤(如上面参考图2所示出的提交步骤S204)后领导节点可以使所有返回了认可消息的跟随节点的权重值增加,使所有未返回认可消息的跟随节点的权重值减少,其中各权重值增加的总量等于各权重值减少的总量,从而使得各个权重值之和仍等于预定的常数。在一些实施方式中,在每次提交步骤后领导节点使最先返回了认可消息的跟随节点的权重值增加,使所有未返回认可消息的跟随节点(在所有跟随节点均返回认可消息的情况下,使最后一个返回认可消息的跟随节点)的权重值减少。应当理解,上述情况仅是示例。
下面将对各权重值变化的总量的一些不同的示例进行说明,应当理解,这些可能的各权重值变化的总量的示例仅是为了说明,各权重值变化的总量可以是在预先设置的、在权重的下限值至上限值范围内的任何数值。
在一些实施方式中,各权重值增加的总量可以等于区块链中的共识节点的总数量。
例如,以图4中所示出的由领导节点L和跟随节点F1至F3组成的区块链网络为例,ΔD可以为4。这里,可以假设D0、D1、D2和D3的总和的常数为100,其中D0至D3均为25。在执行了提交步骤后,领导节点L使所有返回了认可消息的跟随节点的权重值(即,D1和D2)一共增加4,使所有未返回认可消息的跟随节点的权重值(即,D3)减少4。当存在多个需要增加或减少权重值的节点时,各个节点的权重值的变化量可以为ΔD/(需要增加或减少权重值的节点的个数)。在上面的例子中,F1和F2的权重值D1和D2可以分别增加2。因此,在这一轮提交步骤后,节点F1和F2的权重值D1和D2均变为27,而节点F3的权重值D3变为21。而网络中所有节点的权重值之和仍为事先规定的常数100。
请注意,当各个节点的权重值的变化量为ΔD/(需要增加或减少权重值的节点的个数)时,可能存在无法除尽的情况。这时可以采用分别向上向下取整的处理(可以随机确定哪个节点进行向上取整和向下取整)以获得整数的变化量,同时保证变化量的总和仍为ΔD。
在一些实施方式中,在每次提交步骤后领导节点给所有未返回认可消息的跟随节点的权重值减少相同的量,并且将各权重值减少的总量加到第一个返回认可消息的跟随节点的权重值,其中各个相同的量为所有未返回认可消息的跟随节点的总数量。例如,仍以图4中所示出的由领导节点L和跟随节点F1至F3组成的区块链网络为例,仅有跟随节点F3没有返回认可消息,则此轮权重调整处理中ΔD为1。假设跟随节点F1是第一个返回认可消息的节点,在这一轮提交步骤后,节点F1的权重值D1变为26,而节点F3的权重值D3变为24,F2的权重值D2不变,仍为25。而网络中所有共识节点的权重值之和仍为事先规定的常数100。
请注意,在该实施例中,可以基于未返回认可消息的跟随节点的总数量动态地调整收敛的速度,在例如网络环境较差的情况下,所有未返回认可消息的跟随节点的总数量较大,因此ΔD增大,收敛速度变快。
随后,回到图6,处理进行到步骤S606处,领导节点L根据返回认可消息的跟随节点的权重值之和是否满足预定的成功条件,决定是否进行提交步骤。
在一些实施方式中,预定的成功条件可以是返回认可消息的跟随节点的权重值之和大于预定常数的一半。在一些实施方式中,预定的成功条件也可以是返回认可消息的跟随节点的权重值之和大于跟随节点个数的三分之一乘以权重上限值再加上任一节点的权重值之和。当然,预定的成功条件不限于上述示例,而可以是根据期望的收敛速度的任何合理条件。
通过上述的设置权重并基于权重达成共识的方式,可以进一步提高共识方法的效率。
图7是示出了根据本发明一个示例性实施例的用于在区块链网络中进行共识的装置1000的基本配置的框图。如图7所示,该在区块链网络中进行共识的装置1000包括:选举部件1002、准备部件1004和提交部件1006。
该选举部件1002根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点。
准备部件1004使得领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息,其中,该第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
提交部件1006使得领导节点在接收到满足预定条件的跟随节点的认可消息的情况下向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块。
本领域技术人员应当理解,在区块链网络中进行共识的装置1000所包含的部件可以不限于上述部件1002-1006,而是可以包括用于实现根据本发明实施例的前述方法的其他步骤的部件。装置1000的各个部件可以由硬件、软件、固件或其任意组合来实现。另外,本领域技术人员也应当理解,装置1000的各个部件可以根据需要被组合或分割成子部件。装置1000的上述各个部件不限于上述的各个功能,而是可以实现如前所述的根据本发明实施例的各种方法的相应步骤的功能。
图8示出了可以实现根据本发明的实施例的计算设备2000的示例性配置。计算设备2000是可以应用本发明的上述方面的硬件设备的实例。计算设备2000可以是被配置为执行处理和/或计算的任何机器。计算设备2000可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(PDA)、智能电话、车载计算机或以上组合。前述共识节点、非共识节点或用于在区块链网络中进行共识的装置1000均可以全部或至少部分地由上述计算设备2000或与其相似的设备或系统实现。
如图8所示,计算设备2000可以包括可能经由一个或多个接口与总线2002连接或通信的一个或多个元件。例如,计算设备2000可以包括总线2002、一个或多个处理器2004、一个或多个输入设备2006以及一个或多个输出设备2008。总线2002可以包括但不限于,工业标准架构(Industry Standard Architecture,ISA)总线、微通道架构(Micro ChannelArchitecture,MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外设组件互连(PCI)总线等。一个或多个处理设备2004可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。输入设备2006可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备2008可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。计算设备2000还可以包括或被连接至非暂态存储设备2010,该非暂态存储设备2010可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。非暂态存储设备2010可以与任何接口可拆卸地连接。非暂态存储设备2010可以具有存储于其上的、用于实现前述用于在区块链网络中进行共识的方法和/或步骤的数据/指令/代码。计算设备2000还可以包括通信设备2012,该通信设备2012可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设施等)。
计算设备2000还可以包括工作存储器2014。该工作存储器2014可以是能够存储对于处理器2004有用的指令和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器(RAM)和只读存储器(ROM)。
位于上述工作存储器上的软件元件可以包括但不限于操作系统2016、一个或多个应用程序2018、驱动器和/或其他数据和代码。上述一个或多个应用程序2018可以包括用于执行如上所述的在区块链网络中进行共识的各方法及各步骤的指令。可以通过读取和执行一个或多个应用程序2018的处理器实现前述在区块链网络中进行共识的设备/装置1000的部件/单元/元件。更具体地,例如,前述装置1000中的选举部件1002可以由处理器2004在执行具有用于执行图2的步骤S202的指令的应用程序2018时实现。此外,例如,前述装置1000中的准备部件1004可以由处理器2004在执行具有用于执行步骤S204的指令的应用程序2018时实现。此外,例如,前述装置1000中的提交部件1006可以由处理器2004在执行具有用于执行步骤S206的指令的应用程序2018时实现。前述装置1000中的其它各个部件也可以用类似的方式实现。软件元件的指令的可执行代码或源代码可以存储在非暂态计算机可读存储介质(诸如如上所述的存储设备2010)中,并且可以通过编译和/或安装读入工作存储器2014中。还可以从远程位置下载软件元件的指令的可执行代码或源代码。
应当理解,可以根据特定要求进行变型。例如,可以使用定制的硬件和/或特定元件可以以硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合的方式实现。此外,可以采用与其他计算设备(诸如网络输入/输出设备)的连接。例如,本发明的方法和设备中的一些或全部可以根据本发明通过使用汇编语言编程硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)或逻辑和算法的硬件编程语言(例如VERILOG,VHDL,C++)来实现。
应当进一步理解,计算设备2000的元件可以分布在整个网络上。例如,可以在使用一个处理器执行一些处理的同时,使用其他远程处理器执行其他处理。计算机系统2000的其他元件也可以类似地分布。因此,计算设备2000可以被理解为在多个地点执行处理的分布式计算系统。
可以通过许多方式来实施本发明的方法和设备。例如,可以通过软件、硬件、固件、或其任何组合来实施本发明的方法和设备。上述的方法步骤的次序仅是说明性的,本发明的方法步骤不限于以上具体描述的次序,除非以其它方式明确说明。此外,在一些实施例中,本发明还可以被实施为记录在记录介质中的程序,其包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于实现根据本发明的方法的程序的记录介质。
虽然已通过示例详细展示了本发明的一些具体实施例,但是本领域技术人员应当理解,上述示例仅意图是说明性的而不限制本发明的范围。本领域技术人员应该理解,上述实施例可以在不脱离本发明的范围和实质的情况下被修改。本发明的范围是通过所附的权利要求限定的。
另外,本公开的实施方式还可以包括以下示例:
1、一种在包括多个共识节点的区块链中进行共识的方法,其特征在于包括:
选举步骤,在所述选举步骤中,根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;
准备步骤,在所述准备步骤中,领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及
提交步骤,在所述提交步骤中,在接收到满足预定条件的跟随节点的认可消息的情况下,领导节点向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;
其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
2、根据1所述的方法,其中所述第一验证处理包括验证是否满足以下条件中的一个或多个:
领导节点的任期号不小于跟随节点的任期号,
领导节点的区块高度不低于跟随节点的区块高度,
要提交的区块中的前哈希值正确,
要提交的区块中的事务的梅克尔哈希值正确。
3、根据2所述的方法,其中在所述第一验证处理中确定领导节点的任期号小于跟随节点的任期号或者要提交的区块中的前哈希值不正确的情况下,该跟随节点触发该领导节点的卸任处理。
4、根据1所述的方法,其中所述第二验证处理包括验证所述提交区块请求中的区块是否为在所述准备步骤中验证通过的区块。
5、根据1所述的方法,还包括:在每一个共识节点启动时,对共识节点的程序进行程序包校验处理,在该程序包校验处理通过后,该共识节点才能继续启动。
6、根据1所述的方法,其中跟随节点在本地保存关于所述准备步骤和/或所述提交步骤的记录,所述记录至少包括领导节点的与所述准备请求和/或所述提交区块请求相关的签名。
7、根据1所述的方法,其中所述预定条件为返回认可消息的跟随节点加上领导节点的数量超过区块链中的共识节点的总数量的一半。
8、根据1所述的方法,其中所述预定条件为返回认可消息的跟随节点的权重值之和大于预定值。
9、根据8所述的方法,其中领导节点记录各跟随节点的权重值,并且根据跟随节点返回认可消息的速度和/或正确性调整各跟随节点的权重值。
10、根据9所述的方法,其中在领导节点的任期开始时为各跟随节点分配相同的默认权重值,并且在每次提交步骤后领导节点使所有返回了认可消息的跟随节点的权重值增加,使所有未返回认可消息的跟随节点的权重值减少,其中各权重值增加的总量等于各权重值减少的总量。
11、根据10所述的方法,其中各权重值增加的总量等于区块链中的共识节点的总数量。
12、根据9所述的方法,其中在领导节点的任期开始时为各跟随节点分配相同的默认权重值,并且在每次提交步骤后领导节点给所有未返回认可消息的跟随节点的权重值减少相同的量,并且将各权重值减少的总量加到第一个返回认可消息的跟随节点的权重值。
13、根据12所述的方法,其中所述相同的量为所有未返回认可消息的跟随节点的总数量。
14、根据10-13中的任一项所述的方法,其中各跟随节点的权重值小于默认权重值的2倍。
15、根据1所述的方法,还包括:领导节点向跟随节点周期性地发出心跳信息,所述心跳信息包括关于所述领导节点的区块高度和任期号的信息。
16、根据15所述的方法,还包括:如果跟随节点在预定时间内没有接收到心跳信息,则重新执行选举步骤来选出下一任期的领导节点。
17、根据16所述的方法,其中所述选举步骤包括:
如果跟随节点在预定时间内没有接收到心跳信息,则所述跟随节点变成候选人节点并使得所述跟随节点的任期号加一,
所述候选人节点向其余共识节点发送投票请求,
其余共识节点在接收到任期号大于自身的任期号并且区块高度不低于自身的区块高度的候选人节点的投票请求的情况下,为该候选人节点投票,其中每个共识节点在每个任期中仅能进行一次投票,
在接收到超过区块链中的共识节点的总数量的一半的投票时,候选人节点变成领导节点。
18、根据1所述的方法,还包括:检查区块链中的各共识节点的区块高度,在共识节点的区块高度低于区块链中的最新高度的情况下,该共识节点变为非投票节点,不能参与所述选举步骤、所述准备步骤和所述提交步骤。
19、一种区块链网络,其特征在于包括:
多个共识节点,各共识节点至少能在领导节点和跟随节点的状态之间切换,
多个共识节点根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;
领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及
领导节点在接收到满足预定条件的跟随节点的认可消息的情况下,向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;
其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
20、一种用于在包括多个节点的区块链中进行共识的装置,其特征在于包括:
选举部件,所述选举部件根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;
准备部件,所述准备部件使得领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及
提交部件,所述提交部件使得领导节点在接收到满足预定条件的跟随节点的认可消息的情况下向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;
其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
21、一种用于在包括多个节点的区块链中进行共识的系统,其特征在于包括:
一个或更多个处理器;以及
一个或更多个存储器,被配置为存储一系列计算机可执行指令,
其中所述一系列计算机可执行指令在由所述一个或更多个处理器运行时使得所述一个或更多个处理器执行根据1-18中的任意一个所述的方法。
22、一种非暂态的计算机可读介质,其上存储有计算机可执行指令,所述计算机可执行指令在由一个或更多个处理器运行时使得所述一个或更多个处理器执行根据1-18中的任意一个所述的方法。

Claims (10)

1.一种在包括多个共识节点的区块链中进行共识的方法,其特征在于包括:
选举步骤,在所述选举步骤中,根据Raft算法从多个共识节点中选出一个作为领导节点,并且把其余共识节点变为跟随节点;
准备步骤,在所述准备步骤中,领导节点向所有跟随节点发出提交区块的准备请求,跟随节点中的每一个均对所述提交区块的准备请求进行第一验证处理,并在验证通过后向领导节点返回认可消息;以及
提交步骤,在所述提交步骤中,在接收到满足预定条件的跟随节点的认可消息的情况下,领导节点向所有跟随节点发出提交区块请求,跟随节点中的每一个均对所述提交区块请求进行第二验证处理,并在验证通过后将该区块加入本地区块链账本中成为新区块;
其中,所述第一验证处理包括对领导节点、要提交的区块以及区块内的事务的正确性进行验证。
2.根据权利要求1所述的方法,其中所述第一验证处理包括验证是否满足以下条件中的一个或多个:
领导节点的任期号不小于跟随节点的任期号,
领导节点的区块高度不低于跟随节点的区块高度,
要提交的区块中的前哈希值正确,
要提交的区块中的事务的梅克尔哈希值正确。
3.根据权利要求2所述的方法,其中在所述第一验证处理中确定领导节点的任期号小于跟随节点的任期号或者要提交的区块中的前哈希值不正确的情况下,该跟随节点触发该领导节点的卸任处理。
4.根据权利要求1所述的方法,其中所述第二验证处理包括验证所述提交区块请求中的区块是否为在所述准备步骤中验证通过的区块。
5.根据权利要求1所述的方法,还包括:在每一个共识节点启动时,对共识节点的程序进行程序包校验处理,在该程序包校验处理通过后,该共识节点才能继续启动。
6.根据权利要求1所述的方法,其中跟随节点在本地保存关于所述准备步骤和/或所述提交步骤的记录,所述记录至少包括领导节点的与所述准备请求和/或所述提交区块请求相关的签名。
7.根据权利要求1所述的方法,其中所述预定条件为返回认可消息的跟随节点加上领导节点的数量超过区块链中的共识节点的总数量的一半。
8.根据权利要求1所述的方法,其中所述预定条件为返回认可消息的跟随节点的权重值之和大于预定值。
9.根据权利要求8所述的方法,其中领导节点记录各跟随节点的权重值,并且根据跟随节点返回认可消息的速度和/或正确性调整各跟随节点的权重值。
10.根据权利要求9所述的方法,其中在领导节点的任期开始时为各跟随节点分配相同的默认权重值,并且在每次提交步骤后领导节点使所有返回了认可消息的跟随节点的权重值增加,使所有未返回认可消息的跟随节点的权重值减少,其中各权重值增加的总量等于各权重值减少的总量。
CN201811186202.4A 2018-10-12 2018-10-12 基于Raft算法的区块链共识方法 Active CN109525636B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811186202.4A CN109525636B (zh) 2018-10-12 2018-10-12 基于Raft算法的区块链共识方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811186202.4A CN109525636B (zh) 2018-10-12 2018-10-12 基于Raft算法的区块链共识方法

Publications (2)

Publication Number Publication Date
CN109525636A true CN109525636A (zh) 2019-03-26
CN109525636B CN109525636B (zh) 2021-04-13

Family

ID=65771894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811186202.4A Active CN109525636B (zh) 2018-10-12 2018-10-12 基于Raft算法的区块链共识方法

Country Status (1)

Country Link
CN (1) CN109525636B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947733A (zh) * 2019-03-29 2019-06-28 众安信息技术服务有限公司 数据存储装置与方法
CN110059981A (zh) * 2019-04-29 2019-07-26 威富通科技有限公司 信任度评估方法、装置及终端设备
CN110113388A (zh) * 2019-04-17 2019-08-09 四川大学 一种基于改进型聚类算法的区块链系统共识的方法和装置
CN110365735A (zh) * 2019-05-28 2019-10-22 国网浙江省电力有限公司杭州供电公司 应用于分布式新能源系统的基于raft算法的区块链共识方法
CN110572429A (zh) * 2019-07-30 2019-12-13 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的共识方法、装置、设备及存储介质
CN111291014A (zh) * 2020-02-18 2020-06-16 杭州复杂美科技有限公司 区块链共识方法、设备和存储介质
CN111327699A (zh) * 2020-02-26 2020-06-23 吉林大学 双领导者心跳加权溯源共识方法
CN112187866A (zh) * 2020-09-03 2021-01-05 山东大学 一种基于共享存储的新型区块链共识方法
CN112887763A (zh) * 2019-11-29 2021-06-01 中国电信股份有限公司 信息控制方法、信息控制系统、信息控制装置及存储介质
WO2021196350A1 (zh) * 2020-03-30 2021-10-07 南京中诚区块链研究院有限公司 区块链Raft+PBFT的混合共识网络算法及系统
CN114219477A (zh) * 2021-11-03 2022-03-22 重庆邮电大学 基于链上存储的区块链数据存储扩展方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878071A (zh) * 2017-01-25 2017-06-20 上海钜真金融信息服务有限公司 一种基于Raft算法的区块链共识机制
CN106875165A (zh) * 2017-02-22 2017-06-20 中山大学 一种利用软件定义网络优化的共识算法
CN108182581A (zh) * 2017-12-29 2018-06-19 北京欧链科技有限公司 一种区块链的记账方法及装置
CN108234470A (zh) * 2017-12-28 2018-06-29 江苏通付盾科技有限公司 区块链网络中区块打包方法及系统、电子设备、存储介质
US20180295546A1 (en) * 2017-04-07 2018-10-11 Vapor IO Inc. Distributed handoff-related processing for wireless networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878071A (zh) * 2017-01-25 2017-06-20 上海钜真金融信息服务有限公司 一种基于Raft算法的区块链共识机制
CN106875165A (zh) * 2017-02-22 2017-06-20 中山大学 一种利用软件定义网络优化的共识算法
US20180295546A1 (en) * 2017-04-07 2018-10-11 Vapor IO Inc. Distributed handoff-related processing for wireless networks
CN108234470A (zh) * 2017-12-28 2018-06-29 江苏通付盾科技有限公司 区块链网络中区块打包方法及系统、电子设备、存储介质
CN108182581A (zh) * 2017-12-29 2018-06-19 北京欧链科技有限公司 一种区块链的记账方法及装置

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947733A (zh) * 2019-03-29 2019-06-28 众安信息技术服务有限公司 数据存储装置与方法
CN110113388A (zh) * 2019-04-17 2019-08-09 四川大学 一种基于改进型聚类算法的区块链系统共识的方法和装置
CN110059981A (zh) * 2019-04-29 2019-07-26 威富通科技有限公司 信任度评估方法、装置及终端设备
CN110059981B (zh) * 2019-04-29 2021-06-04 威富通科技有限公司 信任度评估方法、装置及终端设备
CN110365735A (zh) * 2019-05-28 2019-10-22 国网浙江省电力有限公司杭州供电公司 应用于分布式新能源系统的基于raft算法的区块链共识方法
CN110572429A (zh) * 2019-07-30 2019-12-13 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的共识方法、装置、设备及存储介质
CN110572429B (zh) * 2019-07-30 2022-01-07 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的共识方法、装置、设备及存储介质
CN112887763A (zh) * 2019-11-29 2021-06-01 中国电信股份有限公司 信息控制方法、信息控制系统、信息控制装置及存储介质
CN112887763B (zh) * 2019-11-29 2022-12-20 中国电信股份有限公司 信息控制方法、信息控制系统、信息控制装置及存储介质
CN111291014A (zh) * 2020-02-18 2020-06-16 杭州复杂美科技有限公司 区块链共识方法、设备和存储介质
CN111291014B (zh) * 2020-02-18 2023-05-30 杭州复杂美科技有限公司 区块链共识方法、设备和存储介质
CN111327699A (zh) * 2020-02-26 2020-06-23 吉林大学 双领导者心跳加权溯源共识方法
CN111327699B (zh) * 2020-02-26 2021-07-09 吉林大学 双领导者心跳加权溯源共识方法
WO2021196350A1 (zh) * 2020-03-30 2021-10-07 南京中诚区块链研究院有限公司 区块链Raft+PBFT的混合共识网络算法及系统
CN112187866A (zh) * 2020-09-03 2021-01-05 山东大学 一种基于共享存储的新型区块链共识方法
CN112187866B (zh) * 2020-09-03 2021-10-15 山东大学 一种基于共享存储的新型区块链共识方法
CN114219477A (zh) * 2021-11-03 2022-03-22 重庆邮电大学 基于链上存储的区块链数据存储扩展方法
CN114219477B (zh) * 2021-11-03 2022-09-16 重庆邮电大学 基于链上存储的区块链数据存储扩展方法

Also Published As

Publication number Publication date
CN109525636B (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
CN109525636A (zh) 基于Raft算法的区块链共识方法
AU2019248525B2 (en) Cross-blockchain authentication method, apparatus, and electronic device
AU2019248542B2 (en) Cross-blockchain authentication method and apparatus
EP3560144B1 (en) Blockchain data protection based on generic account model and homomorphic encryption
EP3829104A1 (en) Blockchain data protection based on account note model with zero-knowledge proof
EP3566197A2 (en) Blockchain data protection based on generic account model and homomorphic encryption
KR20150096312A (ko) 클라우드 동기화 시스템용 텔레메트리 시스템
US11748081B2 (en) System and method for application release orchestration and deployment
CN113505520A (zh) 用于支持异构联邦学习的方法、装置和系统
US10460262B2 (en) Computer-implemented system and methods for distribution, verification, and redemption of electronic tickets
WO2020211360A1 (zh) Mock测试方法、系统、电子设备及计算机非易失性可读存储介质
CN107426275A (zh) 一种资源传输方法及装置
CN107038025B (zh) 基于soa架构的系统调用方法及装置
JP6066881B2 (ja) 情報処理システム、情報処理装置、情報処理方法及びプログラム
CN109727139A (zh) 保险套餐订制方法、装置、设备及可读存储介质
CN111353841B (zh) 单据数据处理方法、装置及系统
CN112291321A (zh) 业务处理方法、装置及系统
CN111447216B (zh) 用于变更共识节点的方法和装置
US20210117951A1 (en) Method, system, and non-transitory computer-readable record medium to change payment account using messenger
CN111831666A (zh) 基于pbft共识的家具数据存储方法及装置
CN110069395A (zh) 一种模拟异步接口的方法、装置、存储介质及计算机设备
TWI837960B (zh) 基於行動識別驗證之場域服務自動派送系統、方法及其電腦可讀媒體
US20240104249A1 (en) System and method for providing third party access to a system
CN116823269A (zh) 资源调度方法、装置、计算机设备和存储介质
CN114840431A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: No. 1788 and 1800, Century Avenue, free trade Experimental Zone, Pudong New Area, Shanghai

Applicant after: Shanghai insurance exchange, Limited by Share Ltd

Address before: 200120 Shanghai East Road Pudong New Area Financial Information Center 22

Applicant before: Shanghai insurance exchange, Limited by Share Ltd

GR01 Patent grant
GR01 Patent grant