CN111480157A - 用于在区块链网络中添加节点的系统和方法 - Google Patents

用于在区块链网络中添加节点的系统和方法 Download PDF

Info

Publication number
CN111480157A
CN111480157A CN201980003678.6A CN201980003678A CN111480157A CN 111480157 A CN111480157 A CN 111480157A CN 201980003678 A CN201980003678 A CN 201980003678A CN 111480157 A CN111480157 A CN 111480157A
Authority
CN
China
Prior art keywords
node
consensus
nodes
blockchain
transaction
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
CN201980003678.6A
Other languages
English (en)
Other versions
CN111480157B (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.)
Ant Chain Technology Co ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN111480157A publication Critical patent/CN111480157A/zh
Application granted granted Critical
Publication of CN111480157B publication Critical patent/CN111480157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3239Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Retry When Errors Occur (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

提供了用于在区块链网络中添加节点的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。方法之一包括:区块链网络的当前共识节点获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;响应于对第一交易的共识验证成功,执行第一交易,并基于区块链网络中多个当前共识节点的编号在节点列表中对节点编号;以及施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。

Description

用于在区块链网络中添加节点的系统和方法
相关申请的交叉引用
本申请要求于2019年9月5日向中华人民共和国国家知识产权局(SIPO)提交的申请号为CN201910838736.9的中国申请的优先权和权益,其全部内容通过引用包含于此。
技术领域
本申请总体上涉及用于在区块链网络中添加节点的系统和方法。
背景技术
区块链技术可以构建在传输网络(例如,点对点网络)上。传输网络中的网络节点可以基于链式数据结构来认证和存储数据,并基于分布式共识算法来生成和更新数据。在一些情况下,可能需要添加这种区块链网络的节点。因此,期望提供一种用于在区块链网络中添加节点的方法。
用于添加节点的现有技术经常导致对区块链的正常运行的中断。在一个示例中,用于在区块链网络中添加节点的当前方法需要停止整个区块链系统以添加节点,并且需要在添加之后重启系统。结果,整个系统必须经历停机时间。在另一示例中,用于在区块链网络中添加节点的当前方法需要删除未激活节点,并且然后将节点重新添加为激活共识节点。结果,已删除并稍后添加的节点必须先与区块链网络断开连接,然后再添加回去。
发明内容
本文的各种实施例包括但不限于用于在区块链网络中添加节点的系统、方法和非暂态计算机可读介质。
根据一些实施例,一种计算机实现的用于在区块链网络中添加节点的方法,包括:区块链网络的当前共识节点获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;响应于对第一交易的共识验证成功,执行第一交易,并基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号;以及施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。在一些实施例中,待添加节点可以是在节点添加之前的区块链网络的未激活共识节点,并且通过节点添加,节点成为区块链网络的激活共识节点。在一些实施例中,待添加节点在节点添加之前可能不是区块链网络的一部分,并且通过节点添加,节点加入到区块链网络中成为激活共识节点。
在一些实施例中,第一交易被配置为调用部署在由区块链网络维护的区块链中的区块链合约。
在一些实施例中,区块链合约包括创始合约或系统合约。
在一些实施例中,当前共识节点获得第一交易包括:从客户端设备或控制器的命令控制台获得第一交易。
在一些实施例中,当前共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点IP地址和共识节点端口号;并且,在节点列表中对多个共识节点顺序编号。
在一些实施例中,节点列表处于由区块链网络维护的区块链的世界状态。
在一些实施例中,基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号,包括:基于节点列表中的多个共识节点的编号,将节点标识添加到节点列表的尾部,并对节点顺序编号;或者根据节点属性在节点列表中将多个共识节点和所述节点重新排序。
在一些实施例中,施行视图改变包括响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;节点列表中共识节点标识与当前视图中的共识节点标识不一致。
在一些实施例中,施行视图改变包括:响应于接收到由节点广播的、用于发起视图改变的消息,而发起视图改变。
在一些实施例中,在节点列表中对节点编号之后并在施行视图改变之前,方法还包括:从节点获得包括用于激活节点的第二请求的第二交易;对第二交易施行共识验证;以及响应于对第二交易的共识验证成功,执行用于激活节点的第二交易。
在一些实施例中,施行视图改变包括响应于检测到以下任何条件而发起视图改变:节点列表中激活共识节点的数量与当前视图中激活共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中激活共识节点的标识不一致。
在一些实施例中,视图改变中的副本数是包括节点的共识节点的总数。
根据一些实施例,一种用于在区块链网络中添加节点的系统,在区块链网络的当前共识节点中实施,并且包括一个或多个处理器以及一个或多个计算机可读存储器,一个或多个计算机可读存储器耦接至一个或多个处理器并且其上存储有指令,所述指令可以由一个或多个处理器执行以施行包括以下的操作:获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;以及响应于对第一交易的共识验证成功,执行第一交易并基于区块链网络中多个当前共识节点的编号在节点列表中对节点编号;以及施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。
根据其他实施例,一种非暂态计算机可读存储介质,在区块链网络的当前共识节点中实施,并配置有可由一个或多个处理器执行以使得一个或多个处理器施行包括以下操作的指令:获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;响应于对第一交易的共识验证成功,执行第一交易,并基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号;以及施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。
根据又一些其他实施例,一种用于在区块链网络中添加节点的装置,在区块链网络的当前共识节点中实施,并且包括:获得模块,用于获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;执行模块,用于响应于对第一交易的共识验证成功,执行第一交易,并基于区块链网络中多个当前共识节点的编号在节点列表中对节点编号;以及施行模块,用于施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。
根据一些实施例,一种用于计算机实现的用于在区块链网络中添加节点的方法,包括:待添加到区块链网络中的节点同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并且包括多个当前共识节点;响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个;以及在将第二交易添加到区块链之后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝。
在一些实施例中,在所述同步区块链之前,方法还包括:将包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第一交易施行共识验证,并响应于对第一交易的共识验证成功而将第一交易添加到区块链中。
在一些实施例中,在所述同步区块链之前,方法还包括:多个当前共识节点之一将包括用于将节点添加为区块链的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第一交易施行共识验证,并响应于对第一交易的共识验证成功而将第一交易添加到区块链中。
在一些实施例中,同步所述区块链包括:将一个或多个同步请求分别发送给多个当前共识节点中的一个或多个,以获得区块链中的数据。
在一些实施例中,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个,包括:将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第二交易施行共识验证,并响应于对第二交易的共识验证成功而执行用于激活节点的第二交易。
在一些实施例中,方法还包括:在多个当前共识节点针对区块链施行视图改变后,将第二本地区块链拷贝与区块链同步以获得第三本地区块链拷贝。
在一些实施例中,方法还包括:作为区块链网络的新共识节点而参与共识验证。
在一些实施例中,将节点添加为区块链网络的新共识节点的处理不会对区块链网络的操作造成任何中断。
在一些实施例中,方法还包括:通过检查点消息来确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已完成。
在一些实施例中,方法还包括:向多个当前共识节点中的至少一些发送查询当前最大区块号的请求,并且通过发现从多个当前共识节点中的至少一些返回的相同的最大区块号与最大本地区块号一致来确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已经完成。
在一些实施例中,将节点添加为区块链网络的新共识节点的第一请求包括:将节点从区块链网络的未激活共识节点改变为区块链网络的激活共识节点的请求。
在一些实施例中,将节点添加为区块链网络的新共识节点的第一请求包括:将节点包括到区块链网络中作为新共识节点的请求。
根据其他实施例,一种用于在区块链网络中添加节点的系统,包括一个或多个处理器以及一个或多个计算机可读存储器,一个或多个计算机可读存储器耦接至一个或多个处理器并且其上存储有可由一个或多个处理器执行以施行前述实施例中任一个的方法的指令。
根据又一些实施例,一种非暂态计算机可读存储介质,配置有可由一个或多个处理器执行以使得一个或多个处理器施行前述实施例中任一个的方法的指令。
根据再一些实施例,一种用于在区块链网络中添加节点的装置,包括用于施行前述实施例中任一个的方法的多个模块。
根据一些实施例,一种用于在区块链网络中添加节点的系统,在待添加到区块链网络中的节点中实施,并且包括一个或多个处理器和一个或多个计算机可读存储器,一个或多个计算机可读存储器耦接至一个或多个处理器并且其上存储有可由一个或多个处理器执行以施行以下操作的指令:同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并且包括多个当前共识节点;响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个;以及在将第二交易添加到区块链之后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝。
根据其他实施例,一种非暂态计算机可读存储介质,在待添加到区块链网络中的节点中实施,并配置有可由一个或多个处理器执行以使得一个或多个处理器施行包括以下操作的指令:同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并包括多个当前共识节点;响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个;以及在将第二交易添加到区块链之后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝。
根据又一些其他实施例,一种用于在区块链网络中添加节点的装置,在待添加到区块链网络中的节点中实施,并且包括:第一同步模块,同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并包括多个当前共识节点;发送模块,响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个;以及第二同步模块,在将第二交易添加到区块链之后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝。
本文公开的实施例具有一种或多种技术效果。在一些实施例中,在区块链网络中添加节点增加了区块链网络(例如,实用拜占庭容错(PBFT)系统)中的共识节点的总数,这增加了区块链网络对于恶意或故障(例如,异常、离线)节点的容忍度,因为PBFT系统可容忍的恶意或故障节点的最大数量f等于(n-1)/3向下四舍五入到最接近的整数。在一个实施例中,故障状态可能是由于例如配置故障、机器故障、网络故障、软件故障等导致的。因此,在区块链网络中添加节点可提高区块链网络的鲁棒性和可靠性。在一些实施例中,通过动态地执行用于添加节点的第一交易和用于激活节点的第二交易,可以将节点作为新共识节点添加到现有共识节点池中而不必中断区块链网络的运行。在一个实施例中,在节点添加处理期间避免了系统停机时间,并且区块链网络维持其正常运行。在一些实施例中,通过在执行第一交易和第二交易之前、之间和之后的多次同步,新添加的节点能够在短时间内获得与由现有共识节点所保存的节点列表相同的节点列表拷贝并同步至相同的区块链数据。在一个实施例中,通过视图改变,包括添加的节点的所有共识节点均获得包括所有共识节点编号的节点列表的相同拷贝。因此,添加的节点能够与现有的共识节点一起尽快地为共识验证做出贡献,并且避免浪费计算资源。
本文公开的系统、方法和非暂态计算机可读介质的这些和其他特征,以及结构的相关元件的功能和操作方法以及零件的组合及制造的经济性,在参考附图考虑以下描述和所附权利要求时将变得更加明显,所有这些附图、描述和权利要求均形成本文的一部分,其中,相似的附图标记指代各个附图中的相应部分。然而,应明确地理解,附图仅是出于说明和描述的目的,而并非旨在进行限制。
附图说明
图1示出了根据各种实施例的用于创建区块链合约的图。
图2示出了根据各种实施例的用于调用区块链合约的图。
图3示出了根据各种实施例的用于创建和调用区块链合约的图。
图4示出了用于实用拜占庭容错(PBFT)算法的流程图。
图5示出了用于在执行PBFT算法的视图改变之后进行恢复的流程图。
图6示出了用于执行PBFT算法的视图改变的流程图。
图7示出了根据各种实施例的用于在区块链网络中添加节点的流程图。
图8示出了根据各种实施例的用于在区块链网络中添加节点的方法的流程图。
图9A和图9B示出了根据各种实施例的用于在区块链网络中添加节点的方法的流程图。
图10示出了根据各种实施例的用于实施区块链网络的框图。
图11A示出了根据一些实施例的用于在区块链网络中添加节点的装置的框图。
图11B示出了根据一些实施例的用于在区块链网络中添加节点的装置的框图。
图12示出了其中可以实施本文描述的任何实施例的示例性计算机系统的框图。
具体实施方式
区块链可分为三种类型:公有区块链、私有区块链、联盟区块链。此外,在三种类型的区块链之间可能存在各种组合,例如私有区块链+联盟区块链、联盟区块链+公有区块链等。其中,公有区块链是最去中心化的(decentralized)。对于由比特币和以太坊表示的公有区块链,公有区块链的参与者(区块链节点,或简称为节点)可以从区块链中读取数据记录、参与交易并竞争新区块的记账(bookkeeping)权等。此外,每个参与者可以自由加入和退出区块链网络以及施行相关操作。然而,对于私有区块链,区块链网络的数据写入权限可由某个实体或组织所控制,而数据读取权限由实体或组织确定。因此,私有区块链可被认为是弱中心化系统,其中参与的节点受约束并且数量受限制。联盟区块链介于公有区块链与私有区块链之间,并且可以实现“部分去中心化”。联盟区块链的每个节点可以对应于实体或组织。参与者可以通过授权加入联盟区块链网络,从而形成具有共同利益的联盟,并共同维护区块链网络的运行。对于上述各种类型的区块链中的任何一种,可能存在在区块链网络中动态添加节点的需求。
在一些实施例中,具有一定级别投票权的节点可以被称为共识节点,其形成区块链网络并通过共识协议维持其运行。例如,共识节点可以承担对区块链交易(或简称交易)施行共识验证的责任。相比之下,未激活节点(其可能是也可能不是区块链网络的一部分)不参与这种共识验证。通过共识验证,共识节点可以就将新生成的区块添加到区块链中达成共识(协议)。新生成的区块可以包括由共识节点进行共识验证的一个或多个交易。共识节点还可以对区块链做出其他共识决策,例如,为区块链设置服务费。
在一些实施例中,共识节点可以包括两种类型:激活的和未激活的。激活共识节点可以参与共识验证,并且可以以顺序编号存储在本地节点列表中。未激活共识节点可能不参与共识验证,因此不会在本地节点列表中与激活共识节点一起编号。
公有区块链、私有区块链和联盟区块链中的每一个可以提供智能合约。可以通过区块链交易将智能合约部署在区块链中,然后由另一区块链交易来调用。例如,以太坊支持用户创建和调用复杂算法。作为可编程的区块链,以太坊的核心在于以太坊虚拟机(EVM)。每个以太坊节点可以运行EVM。EVM是图灵完备的,这意味着甚至可以通过它们来实施复杂的算法。可以在EVM中执行智能合约的部署和调用。
如图1中所示,Bob可以将包括智能合约创建的区块链交易发送到以太坊网络。区块链节点1的EVM可以执行区块链交易以生成智能合约的相应实例。在图1中,“0x6f8ae93…”表示智能合约的地址。区块链交易的“数据(data)”字段可以存储字节码。区块链交易的“至(to)”字段可以是空(null)的区块链账户。在区块链节点通过共识机制达成共识后,智能合约被成功创建并部署在由区块链网络维护的区块链中,未来的用户可以调用部署的智能合约。
创建智能合约后,将在区块链中创建与智能合约相对应的合约账户,并且合约账户具有特定的地址。合约代码和账户数据将被存储在合约账户下。智能合约的行为由合约代码控制,并且合约帐户存储智能合约的状态。换句话说,智能合约使能在区块链中创建包括合约代码和账户存储的虚拟账户。
如图2中所示,仍以以太坊为例,Bob将包括用于调用智能合约的信息的区块链交易发送到以太坊网络。区块链节点1的EVM可以执行区块链交易以生成智能合约的相应实例。对于图2中的区块链交易,“从(from)”字段可以包括调用智能合约的区块链账户的地址,“至”字段中的“0x6f8ae93…”可以表示要被调用的智能合约的地址,“值(value)”字段可以表示以太币的值,“数据”字段可以存储用于调用智能合约的方法和参数。调用智能合约后,区块链账户所持有的以太币余额可能会改变。此外,某个用户客户端可以通过区块链节点(例如,图2中的区块链节点6)来查看余额。
智能合约可以根据规定的方式在区块链网络的每个区块链节点中独立执行。所有执行记录和数据可以存储在区块链中。因此,在执行这样的区块链交易之后,防篡改并且永久的交易证明被保存到区块链中。
图3示出了智能合约的创建和调用。在以太坊中创建智能合约涉及诸如编写智能合约、编译为字节码以及部署在区块链中等步骤。在以太坊中调用智能合约可以指发起指向已部署的智能合约的地址的区块链交易,以使合约代码在以太坊网络中每个节点的EVM中执行。
除了用户创建智能合约之外,还可以在区块链的创始区块(genesis block)中由系统配置智能合约。这种类型的合约可以称为创始合约。在创始合约中,可以配置区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的帐户可以创建或修改系统级智能合约(简称“系统合约”)。除了EVM之外,不同的区块链网络可以采用不同的虚拟机,本文不做限制。
区块链技术与传统的去中心化技术之间的一个区别是在每个节点上进行记账,或称为分布式记账,而不是传统的集中式记账。在各种区块链网络中,可以实施共识算法(即上述共识机制),以确保在进行记账的节点之间的记录一致性。当节点生成新区块时,如果新区块被其他节点接受,则其他节点将记录相同的新区块。其他节点确认新区块的处理是共识机制。共识机制是这样的机制:区块链节点就区块信息达成全网共识,以确保将新区块正确地添加到区块链中。当前,主流共识机制包括:工作量证明(POW)、权益证明(POS)、委托权益证明(DPOS)、实用拜占庭容错(PBFT)算法、HoneyBadger BFT算法等。
在PBFT算法的一个示例中,进行了一些结合PBFT动态地添加节点的已知尝试。例如,“动态的实用拜占庭容错”(https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8433150)讨论了,为了基于PBFT在区块链网络中动态地添加新节点,需要证书颁发机构(CA)节点作为安全服务提供者来参与添加新节点,但CA节点不参与共识验证。再例如,“Solida:基于可重构拜占庭共识的区块链协议”(https://eprint.iacr.org/2017/1118.pdf)提出了一种基于比特币POW和PBFT的节点添加与删除算法,算法基于POW投票选出主节点。但是,已知POW会消耗大量的中央处理器(CPU)资源。下面以PBFT为例介绍共识机制。
图4示出了传统的PBFT算法的流程图。算法由米格尔·卡斯特罗(Miguel Castro)和芭芭拉·利斯科夫(Barbara Liskov)于1999年提出,解决了PBFT的低效率问题,将复杂度从指数级降低到多项式级,使PBFT在实际系统中的应用变得可行。论文发表在第三届操作系统设计与实现研讨会(1999)论文集上。算法假定,如果多达f个备份副本(即节点)是恶意的或故障的,则总共有3f+1个或更多的副本可以保证异步系统内的安全性和活性。为确保所有副本的数据一致并满足容错要求,需要一定数量的副本(例如包括分布式系统中大多数节点的集合)来形成法定数量(Quorum)。例如,如果副本总数n为3f+1,则Quorum为2f+1。换句话说,基于PBFT的区块链网络对恶意或故障(例如,异常、离线)节点的容忍度,PBFT系统可以容忍的恶意或故障节点的最大数量f表示,为(n-1)/3下舍入到最接近的整数,其中n是副本总数。因此,对于包括四个节点的分布式系统,它们中的任何三个都可以形成Quorum。
此外,所有副本都经过称为视图(view)的一系列配置(succession ofconfigurations)。在视图中,一个副本是主节点,其他副本是备份节点。视图的主节点是副本p,使得p=v mod|R|,其中v是视图编号,视图被连续编号,并且|R|是副本数。当主节点故障时,需要触发视图改变协议以在系统故障时做出调整,来改变主节点。
PBFT算法如下。
1.客户端设备c向主节点0(副本0)发送请求;
2.主节点0向每个备份节点广播请求;
3.所有副本中的每一个执行请求,并将相应的结果发送到客户端设备c;
4.客户端设备c分别从f+1个不同副本中收集相同的结果,作为操作的最终结果。
以下讨论了PBFT(结合著名的拜占庭将军问题)的示例。在此,假设n=4且f=1,即总共有四个节点,其中故障节点的数量是1。假设节点编号分别为0、1、2和3,并且故障节点为节点3。处理如下。
1.(请求阶段)客户端设备c将请求发送到主节点0;
2.(预准备阶段)主节点0接收来自客户端设备c的请求(或来自客户端设备组的请求),对请求排序(在客户端设备组的情况下),并将请求打包为消息m。然后,主节点0向节点1、2和3(即备份节点1、2和3,也称为副本或节点1、2和3)广播预准备消息。预准备消息包括消息m。
3.(准备阶段)在接收到预准备消息之后,如果节点1、2和3成功验证了消息m,则节点1、2和3中的每个节点将重新广播消息m。例如,节点1将向节点0、2和3广播准备消息;节点2将向节点0、1和3广播准备消息,节点3可能会经历停机时间并且无法广播。此外,每个节点接收由其他节点广播的准备消息。每个节点可以将自身广播的准备消息(指示自身认可的准备消息)和接收到的准备消息(指示其他节点认可的准备消息)添加到本地日志中。如果节点接收到同一消息的Quorum-1个确认(具有预准备消息和Quorum-1个准备消息,则本地日志将具有Quorum个确认),则节点转换到准备阶段。
4.(提交阶段)已进入准备阶段的每个参与的共识节点向其他共识节点广播提交消息,并将自身广播的提交消息(指示自身认可的提交消息)添加到本地日志中。然后,每个节点接收其他节点广播的提交消息。如果节点接收到Quorum-1个有效的提交消息,则节点将提交消息添加到本地日志中(具有自身广播的提交消息和Quorum-1个提交消息,则本地日志将具有Quorum个提交消息)并转换到提交状态。
5.(回复阶段)参与共识验证的所有节点中的每个节点在其本地虚拟机中顺序执行预准备消息的消息m中的请求或一组有序请求,然后将回复发送到客户端设备c。
如果客户端设备c接收到f+1个相同的回复消息,则这指示客户端设备c提出的请求已达成全网共识。否则,客户端设备c可能需要确定是否将请求重新发送到主节点0。
以上关于图4的处理和描述是传统的PBFT算法。处理可以由客户端设备发起,使得客户端设备发起的请求消息中的一个或多个交易经历共识验证,并在共识验证结束时将共识验证的结果返回到客户端设备。
在联盟区块链场景中,可以由任何节点发起共识验证(例如,上图4的预准备、准备和提交处理)。在联盟区块链场景中,客户端设备是可选的。如果不包括客户端设备,则图4的请求和回复阶段变为可选,并且主节点可以在获得一定数量的区块链交易后发起PBFT共识验证。如果包括客户端设备,则共识验证可以不由客户端设备发起,而是可以由主节点在主节点获得一定数量的区块链交易后发起。即,图4中的预准备阶段可能不由请求阶段直接触发。
如果主节点行为恶意或故障(例如,异常、离线),并且未能广播客户端设备的请求,则客户端设备可以配置超时机制。如果发生超时,则客户端设备可以将请求广播到所有副本。如果副本检测到主节点行为恶意或故障(例如异常、离线),则副本可以发起视图改变协议阶段以改变主节点。
此外,主节点提出的错误提议可能会导致预准备、准备和提交三个阶段的共识验证失败。替代地,在准备和提交阶段,可能无法达成一致的Quorum,这也无法完成共识验证。在这些情况下,也可以发起视图改变以改变主节点。
在视图改变协议阶段,需要解决先前节点与其他节点之间的异步问题,以使节点在视图改变(VC)之后恢复。例如,如图5中所示,在视图改变之前的视图v处,主节点副本0已经提交并执行了与<v,n,d>相对应的提议(propose)m5(例如,消息m5),其中v是视图编号,n是节点总数,并且d是提议m5的消息摘要。然而,副本1可能由于网络延迟而没有提交提议m5,并且仍然处于预准备阶段。副本2(和副本3)也可以处于对提议m5的预准备阶段。此后,副本0经历停机时间。因此,不同的节点处于不同的状态。改变主节点后,副本0可以通过重启来恢复。主节点可能已改变为副本1,并且副本1-3需要在消息处理进度上赶上副本0。因此,新的主节点副本1需要重新发送处于准备状态的提议m5以供副本1-3执行并与副本0的状态同步。否则,在新的视图v+1处,副本1-3可能会完成新消息m6的三个阶段的共识验证,但只有副本0已经执行了m5,而副本1-3尚未执行m5。即,在新视图v+1处,副本1-3对新消息m6的执行从与副本0不同的状态启动。这可能导致不同节点的虚拟机之间出现不一致,并导致分叉。另外,在上述处理中,如果副本0针对m5处于准备状态,也就是说,如果副本0尚未在其虚拟机上执行m5,而其他副本在处理上落后于副本0,则副本0的准备状态可以被删除而不影响整个系统的一致性。
视图改变协议阶段可以包括视图改变协议处理和新视图协议处理。执行完两个协议处理后,完成主节点的改变。主节点改变后,视图编号将减1,改变为v+1。根据p=(v+1)%n,图4的主节点副本0改变为副本1。
例如,如图6中所示,检测到主节点恶意或故障(例如,异常、离线)的备份节点可以将消息<视图改变,v+1,n,C,P,i>广播到其他备份节点。如图6中所示,副本1检测到原始主节点副本0行为恶意或故障(例如,异常、离线),则副本1向副本0、副本2和副本3发送消息<视图改变,v+1,n,C,P,i>。类似地,副本2向副本0、副本1和副本3发送消息<视图改变,v+1,n,C,P,i>,并且副本3向副本0、副本1和副本2发送消息<视图改变,v+1,n,C,P,i>。
对于广播消息,“视图改变”是协议标识,指示协议是视图改变协议。下一个视图编号是v+1,并且“n”是最新的稳定检查点的数量,“C”是已验证的2f+1个检查点消息的集合。“P”是可选的,并且如果存在,则指示对于发送视图改变消息(对应于准备状态中的每个<v,n,d>,预准备消息和包括2f个不同节点的签名)的备份节点已达到准备状态的一个或多个消息的集合。
在例如图6中的副本1的新的主节点p=(v+1)mod|R|接收到2f个有效的视图改变消息后,新的主节点向其他节点广播消息<新视图,v+1,V,O,p>。“新视图”是协议标识,指示协议是新的视图协议。下一个视图编号是v+1。“V”包括视图改变消息和新的主节点从2f个不同节点接收到的签名,以及由新的主节点自身已发送或待发送的针对v+1的视图改变消息。“O”是由主节点重新发送的未执行的预准备消息集,而“p”是当前节点(区块链网络的现有节点,例如现有/当前共识节点)的签名。预准备消息集的选择规则包括:
1.从V获得具有最小编号min-s的稳定检查点,从V获得具有最大编号max-s的准备消息。
2.在min-s与max-s之间,如果存在消息集P,则创建消息<<预准备,v+1,n,d>,m>。否则,创建空的预准备消息<<预准备,v+1,n,d(null)>,m(null)>,其中m(null)是空消息,d(null)是空消息的摘要。
当备份节点从主节点接收到新的视图消息时,备份节点验证V和O中的签名和视图改变消息。如果有效,则备份节点进入v+1状态并启动处理O中的预准备消息。
在联盟区块链的示例中,在联盟区块链场景中,节点可能对应于一个或多个帐户。类似地,节点可能不对应任何帐户,而仅充当共识节点。另外,联盟区块链可以包括可以如上所述生成的创始合约或系统合约。创始合约/系统合约可以配置联盟区块链的共识节点列表(节点列表,或简称列表),例如,配置共识节点的公钥集,并根据预定顺序排列集中的公钥。联盟区块链的每个共识节点可以根据创始合约中的共识节点列表在本地存储本地节点列表。在本地节点列表中,每个共识节点可以根据创始合约/系统合约中指定的顺序,根据对应的公钥来排列共识节点。因此,每个共识节点的本地列表都包含以相同的顺序排列的相同的共识节点。另外,在创始合约/系统合约中,可以添加用于共识节点的方法和参数配置。因此,基于创始合约/系统合约,每个节点可以通过改变本地节点列表中的节点来完成节点添加的操作。
当账户发起添加共识节点的请求时,请求例如是交易请求,第一当前共识节点可以接收请求。例如,请求可以是客户端设备提出的节点添加请求,从而触发节点添加处理。替代地,请求可以是第一当前共识节点从控制器的命令控制台接收到的节点添加请求,从而触发节点添加处理。控制器可以由控制相应节点的管理员例如通过图形化或代码化指令来操作。对于例如PBFT的具有主节点的共识算法,第一当前共识节点可以是主节点。第一当前共识节点可以直接从客户端设备或控制器、或者从转发交易请求的其他共识节点来获得交易请求。对于诸如HoneyBadger BFT之类的无主节点的共识算法,不存在主节点,则第一当前共识节点是多个共识节点之一。
图7示出了根据各种实施例的用于在区块链网络中添加节点的流程图。以下呈现的操作旨在说明。取决于实施方式,示例性步骤可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。图7提供了添加节点(节点X)作为在包括多个当前共识节点的区块链网络的新共识节点的示例。区块链网络维护区块链。可以将节点X添加为基于PBFT的区块链网络的主节点或备份节点。
在区块链网络中添加节点可以至少包括以下实施例。在一些实施例中,节点X可以是在节点添加之前的区块链网络的未激活共识节点,并且通过节点添加,节点X变为区块链网络的激活共识节点。未激活共识节点可能不参与共识验证,因此可能是非共识节点。在一些实施例中,节点X在添加节点之前可能不是区块链网络的一部分,并且通过节点添加,节点X加入区块链网络以成为激活共识节点。激活共识节点可以参与共识验证。
图7示出两个平行的时间轴,顶部时间轴承载节点X的本地区块链拷贝的时间依赖状态,并且底部时间轴承载当前共识节点(节点Y)之一的本地区块链拷贝的时间依赖状态。每个当前共识节点可以施行由节点Y所施行的步骤。在轴之间,存在消息通信和数据同步方面的各种交互。在一些实施例中,每个当前共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点IP地址和共识节点端口号。在一个实施例中,节点列表处于由区块链网络维护的区块链的世界状态。
沿着顶部轴,节点X经历了从作为区块链网络的未激活共识节点或不作为区块链网络的共识节点,通过恢复阶段(在此期间,节点X还不是激活共识节点,并且无法施行共识验证),至达到正常阶段(在此期间,节点X与当前共识节点相同,并且可以施行共识验证)。沿着底部轴,节点Y经历了从正常阶段(照常施行共识验证),到视图改变阶段(同步共识节点状态),然后回到正常阶段。同样,沿着顶部轴和底部轴,当添加一个或多个新区块时,区块链会改变其状态,因此,区块链状态会从B_0更新为B_change、B_act和B_newest。每个轴上的“区块”框表示由节点X或节点Y所看见或所存储的区块链。
在一些实施例中,在步骤701,管理账户、外部账户或替代账户可以发起第一交易“添加节点(AddNode)”以在区块链网络中添加节点X。第一交易可以由节点X、节点Y或耦接到区块链网络的外部设备发起,并广播到所有当前共识节点。节点Y可以从客户端设备或控制器的命令控制台来获得第一交易。此时,节点X可以在B_0保留原始本地区块链拷贝,也可以没有本地区块链拷贝。节点Y以及其他当前共识节点可以对第一交易施行共识验证。
在一些实施例中,节点X可以将包括用于将节点X添加为区块链网络的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个以供多个当前共识节点对第一交易施行共识验证,以及响应于对第一交易的共识验证成功而将第一交易添加到区块链中。
在一些实施例中,多个当前共识节点之一可以将包括用于将节点X添加为区块链网络的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个以供多个当前共识节点对第一交易施行共识验证,并响应于对第一交易的共识验证成功而将第一交易添加到区块链。
在一些实施例中,将节点X添加为区块链网络的新共识节点的第一请求包括:将节点X从区块链网络的未激活共识节点改变为区块链网络的激活共识节点的请求,或者将节点X包括在区块链网络中作为新共识节点的请求。
响应于对第一交易的共识验证成功,节点Y可以执行第一交易。由此,将第一交易添加到区块链,并且节点Y的本地区块链拷贝位于B_change。附着到“区块”的阴影框表示在将第一交易添加到区块链之前可能存在的时滞。另外,节点Y可以基于区块链网络的多个当前共识节点的编号在节点列表中对节点X编号。例如,节点Y可以基于节点列表中多个共识节点的现有编号将节点X的标识添加到节点Y的节点列表的尾部,并对节点X顺序编号。又例如,节点Y可以在节点列表中根据节点属性将多个共识节点与节点X一起重新排序。在一个实施例中,在节点添加之前,节点列表指示区块链网络包括节点A(编号0)、节点B(编号1)、节点C(编号2)和节点Y(编号3);并且在添加节点之后,节点列表指示区块链网络包括节点B(编号0)、节点A(编号1)、节点C(编号2)、节点Y(编号3)和节点X(编号4)。
在步骤702,节点X可以同步包括第一区块链并且在B_change处的区块链。例如,节点X可以分别向多个当前共识节点(例如,节点Y)中的一个或多个发送一个或多个同步请求,以获得区块链中的数据从而下载或更新本地区块链拷贝。在一个实施例中,节点X可以向节点Y发送同步请求以获得区块链中的所有数据。在另一实施例中,节点X可以向不同的当前共识节点发送不同的同步请求,以获得区块链中的不同数据。例如,如果区块链的数据当前存储在100个区块中,则节点X可以向节点Y发送同步请求以获得前70个区块中的数据,并向节点Z(另一当前共识节点)发送不同的同步请求以获得后30个区块中的数据,因此节点X可以总共获得所有100个区块中的数据。
如所述的,节点X可能在B_0处具有原始本地区块链拷贝,也可能没有本地区块链拷贝。在一些实施例中,如果节点X在B_0处具有原始本地区块链拷贝,则节点X可以同步区块链以更新原始本地区块链拷贝(B_0),从而获得第一本地区块链拷贝(B_change)。在一些实施例中,如果节点X没有本地区块链拷贝,则节点X可以同步区块链以下载或以其他方式获得第一本地区块链拷贝(B_change)。因此,节点X在B_change处获得节点X的第一本地区块链副本。节点Y可以获得包括用于将节点X添加为区块链网络的新共识节点的第一请求的第一交易。第一交易可以被配置为调用部署在由区块链网络维护的区块链中的区块链合约(例如,创始合约、系统合约)。
然后,根据第一本地区块链副本,节点X可以确定第一本地区块链副本包括将节点X添加为区块链网络的新共识节点的第一请求,并因此发起第二交易“激活节点(ActivateNode)”。节点X可以将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点(例如,节点Y)中的一个或多个。节点Y可以从节点X获得包括用于激活节点X的第二请求的第二交易。节点Y以及其他当前共识节点可以对第二交易施行共识验证。
在步骤703,节点X可以将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第二交易施行共识验证,并响应于对第二交易的共识验证成功,而执行用于激活节点X的第二交易。
随着共识验证成功,第二交易被添加到区块链,并且因此节点Y的本地区块链拷贝被更新为B_act。附着到“区块”的阴影框表示在将第二交易添加到区块链之前的可能的时滞。响应于对第二交易的共识验证成功,节点Y可以执行用于激活节点的第二交易。
在步骤704,在将第二交易添加到区块链之后,节点X可以将其第一本地区块链拷贝与包括第二区块链并且位于B_act处的区块链同步。因此,节点X的第一本地区块链拷贝被更新为节点X的B_act处的第二本地区块链拷贝。
在步骤705,当前共识节点(例如,节点Y)可以发起视图改变,通过视图改变,节点Y的本地区块链拷贝被更新到B_newest。在一些实施例中,节点Y可以响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中共识节点标识与当前视图中共识节点标识不一致。在一些实施例中,节点Y可以响应于接收到由节点X广播的、用于发起视图改变的消息来发起视图改变。节点Y可以响应于检测到以下任何条件而发起视图改变:节点列表中激活共识节点的数量与当前视图中激活共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中激活共识节点的标识不一致。
节点Y可以施行视图改变以使节点X作为区块链网络的新共识节点参与未来的共识验证。若非立即进入视图改变,而是当前视图的主节点发起下一轮共识验证,那么共识验证可能会暂时失败,但是最终所有共识节点可以在执行视图改变后恢复。
在一些实施例中,视图改变中的副本数是包括节点X的共识节点的总数。也就是说,视图改变的n为1+当前共识节点数。
在步骤706,在多个当前共识节点针对区块链施行视图改变之后,节点X可以将其第二本地区块链拷贝与位于B_newest处的区块链同步。因此,节点X的第二本地区块链拷贝被更新为节点X的B_newest处的第三本地区块链拷贝。
因此,节点X确定自身已经被激活为共识节点,并且可以作为区块链网络的新共识节点参与共识验证。即,包括节点X和节点Y的共识节点可以施行下一轮共识验证。
在一些实施例中,节点X可以(1)通过检查点消息确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已完成;或(2)向多个当前共识节点中的至少一些发送用于查询当前最大区块号(例如,区块高度)的请求,并通过发现从多个当前共识节点中的至少一些返回的相同的最大区块号与最大的本地区块号一致来确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已完成。
这样,在节点添加期间不会中断区块链运行。在节点添加处理期间仍然可以施行共识验证。无需停止区块链系统即可实现节点添加,从而消除了系统停机时间并减少了用于引入新节点的同步时间。
图8示出了根据各种实施例的用于在区块链网络中添加节点的方法800的流程图。在一些实施例中,区块链网络可以基于联盟区块链。在一些实施例中,区块链网络可以基于PBFT。
S801包括:区块链网络的第一当前共识节点获得用于添加节点的交易请求,并对用于添加节点的交易请求发起共识验证;共识验证成功后,当前共识节点执行用于添加节点的交易并基于当前共识节点的编号在本地节点列表中对节点编号。
在一些实施例中,交易请求可以是用于调用合约的交易请求。在交易请求中,可以指定被调用的智能合约的地址、调用方法和输入参数。例如,被调用的合约可以是上述创始合约/系统合约,调用方法可以是用于添加节点的方法,以及输入参数可以包括待添加节点的以下中的一个或多个:标识、IP地址和端口号。
在一些实施例中,第一当前共识节点可以通过接收用于添加节点的交易请求来触发节点添加处理。例如,如上所述,第一当前共识节点可以通过从客户端设备接收用于添加节点的交易请求来触发节点添加处理,或者第一当前共识节点可以通过从控制器的命令控制台接收用于添加节点的交易请求来触发节点添加处理。控制器可由控制相应节点的管理员例如通过图形化或代码化的指令来操作。替代地,第一共识节点可以从待添加节点接收待添加节点的相关信息,以触发添加节点处理。
在一些实施例中,将用于添加节点的交易请求传播到基于底层点对点(P2P)网络的区块链网络中的各个共识节点。在第一当前共识节点接收到用于添加节点的交易请求后,第一当前共识节点可以作为与具有主节点的共识算法关联的主节点、或者作为与不具有主节点的共识算法关联的共识节点,发起共识验证处理。以例如PBFT的具有主节点的共识算法为例,第一当前共识节点可以是主节点,并且可以针对用于添加节点的交易请求发起共识验证处理,即主要包括上图4中的预准备、准备以及提交处理。替代地,第一当前共识节点可以是备份节点,其接收并将交易请求转发给主节点以发起共识验证处理。
在一些实施例中,在完成共识验证之后,区块链网络中的节点在本地具有针对待添加节点的交易请求中的消息内容,并且达成共识。此外,如果用于添加节点的交易请求中的消息内容与其他消息一起形成共识结果,则用于添加节点的交易请求中的消息内容在不同节点上具有相同的消息序列,即,至少Quorum的共识节点已经针对节点添加请求中的消息的内容和与消息相关联的顺序达成共识。就节点添加请求中的消息的内容和与消息相关联的顺序达成共识的意义在于,如果包含在预准备消息中的消息至少包括两个节点添加消息,例如分别添加节点m和节点n,则可以通过主节点来固定消息的内容和与消息相关联的顺序以用于共识验证。随后,节点m和节点n在不同共识节点的本地节点列表中将具有相同的序号。也就是说,将不会出现这种情况:在共识节点的本地节点列表中,节点m的编号为4,节点n的编号为5;而在另一共识节点的本地节点列表中,节点n的编号为4,而节点m的编号为5。
在一些实施例中,在S801之后,如前所述,至少Quorum的共识节点已针对包括节点添加的交易请求中的消息的内容达成共识。此外,当前的共识节点可以在本地执行相应的合约。例如,当前的共识节点可以调用上述创始合约/系统合约,在诸如EVM的虚拟机中执行创始合约/系统合约的调用中指定的方法,并输入相应的参数。在一个示例中,输入参数可以包括例如待添加节点的标识、待添加节点的IP地址、待添加节点的端口号等。在执行合约期间,当前共识节点可以基于本地节点列表中的当前共识节点将待添加节点的标识添加到列表的尾部,并对其顺序编号。这样,至少由Quorum的当前共识节点维护的共识节点列表具有要以相同方式顺序添加的节点的相关信息。
在一些实施例中,如上所述,当前共识节点可以在本地维护共识节点列表,即上述本地节点列表,其记录当前区块链网络中所有共识节点的基本信息。在一个示例中,基本信息可以包括例如以下中的一项或多项:共识节点标识、IP地址、端口号等。其中,可以在本地节点列表中对共识节点顺序编号。共识节点可以具有标识(ID),其可以是唯一地标识节点的标识,例如节点的公钥、IP地址+端口号等。在某些区块链项目中,共识节点列表可以在逻辑上存在于世界状态。以以太坊、纺布克(Fabric)和联盟区块链为例,每个节点在本地维护世界状态,其中所有账户的最新状态可用。例如,在以太坊中,节点可以基于区块中的状态树、交易树和收据树的内容来维护所有帐户的最新状态。
在一些实施例中,由于共识节点已经施行了数个共识,因此理论上,在当前共识节点之间已经维护了共识节点列表的一致性。例如,当前共识节点a、b、c和d的各自世界状态中存储有本地节点列表,并且存储在各个节点a、b、c和d的本地节点列表中的当前共识节点为四个节点a、b、c和d,并且顺序为a-b-c-d。然后,a、b、c和d的编号分别为0、1、2和3。这样,对于添加的节点m,每个当前共识节点基于在本地维护的共识节点列表来施行S801,并且当前共识节点的本地节点列表中的节点包括节点a、b、c、d和m,总共五个节点,并且对节点m配置了相同的序号(例如4)。
在一些实施例中,在执行合约期间,除了上述当前共识节点基于本地节点列表中的当前节点,将待添加节点的标识添加到列表的尾部、并对节点顺序编号之外,当前共识节点可以按照指定属性对包括待添加节点的所有共识节点进行重新排序。例如,当前共识节点在诸如EVM的虚拟机中执行在创始合约/系统合约中指定的方法,该方法定义了根据属性对本地节点列表中的所有节点进行重新排序。例如,当前节点a、b、c和d的各自世界状态中存储有本地节点列表,而存储在各个节点a、b、c和d的本地节点列表中的当前共识节点是a、b、c、d四个节点,并且顺序为a-b-c-d。然后,a、b、c和d的编号分别为0、1、2和3。这样,对于添加的节点m,每个当前共识节点基于在本地维护的共识节点列表来施行S801,并且当前共识节点在本地节点列表中的节点包括a、b、c、d、m,总共五个节点。例如,创始合约/系统合约中的方法是根据指定的属性公钥对包括待添加节点的所有共识节点重新排序,即,将公钥作为字符串来排序。例如,随着从最高位以及持续到最低位的比较,重新排序后的结果为a-b-m-c-d。因此,a、b、m、c和d的编号分别为0、1、2、3和4。可以看出,新添加的节点m的编号为2,并且当前节点c和d的编号分别从2变为3和从3变为4。
S803包括待添加节点同步区块链中的区块数据。
在一些实施例中,照此,待添加节点加入到区块链网络中并成为其中的一个节点。如果待添加节点加入到区块链网络中并成为共识节点,即,后续参与共识验证处理,则待添加节点可能需要获得区块链的所有区块数据以及包括区块链网络中的所有共识节点的列表。当待添加节点获得区块链的所有区块数据时,可以在本地状态机中按从创始区块到最新区块的顺序执行每个交易,从而更新本地世界状态。由于待添加节点执行的从创始区块到最新区块的交易与由其他共识节点执行的从创始区块到最新区块的交易相同,因此待添加节点的世界状态可以与其他共识节点的世界状态保持一致。这样,待添加节点成为共识节点后,待添加节点可以与其他当前节点一样处于相同的初始状态以施行后续的交易,并将其世界状态与其他当前节点的世界状态保持一致。
在一些实施例中,为了获得区块链的所有区块数据,待添加节点可以向一些或所有当前节点广播同步请求以从当前节点获得区块。在一个实施例中,待添加节点可以向当前节点发送同步请求,以从当前节点获得所有区块数据。
此外,在某些实施例中,为了实现高效率,类似于P2P传播原理,待添加节点可以向不同的当前节点广播用于获得不同区块的同步请求,并且同步请求的总和为要获得的所有区块。例如,共有从0到9十个区块,并且待添加节点可以向当前节点1请求获得区块0-3,向当前节点2请求获得区块4-6,以及向当前节点3请求获得区块7-10。这样,在待添加节点从不同的当前节点获得了不同的区块之后,可以组成所有区块。
在一些实施例中,所有区块一般包括从创始区块到新生成的区块的每个区块。待添加节点可以使用检查点消息来确定是否完成了区块的同步。
在一些实施例中,在前述PBFT三个阶段处理中,当副本发送消息或接收由其他节点发送的消息(包括预准备、准备、提交消息)时,每个副本在副本的本地存储器的消息日志中进行记录。随着PBFT的进行,日志将占用大量存储空间。因此,为了节省存储器空间,需要施行垃圾回收,即,当副本完成提议的执行时清除日志。一种方式是,每当副本执行提议时,副本就会向其他节点广播,以就是否可以清除日志而达成全网共识。每个副本在接收到广播后也向其他副本广播。如果收到Quorum的不同节点的确认,则这些节点将删除本地日志中与提议对应的消息记录。另一种方式是,如果副本执行K个提议,并向其他节点广播以就是否可以清除日志达成全网共识。每个副本在接收到广播后也向其他副本广播。如果接收到Quorum的不同节点的确认,则这些节点将删除本地日志中与K个提议相对应的消息记录。以上删除日志消息是格式为<检查点(CHECKPOINT),n,d,i>的检查点消息。其中n是当前节点期望保留的最小序号,d是期望保留的消息摘要,而i是发出检查点消息的副本编号。副本发出的检查点消息和接收到的检查点消息均记录到消息日志中。如果副本i从不同节点接收到Quorum-1个有效的检查点消息和副本自身发送的检查点消息,则日志中针对<n,d>的检查点消息达到了Quorum,然后清除n之前的所有消息(包括预准备、准备、提交消息,还可以包括检查点消息)。
在一些实施例中,可以通过使用检查点消息来确定上述待添加节点是否已经完成了区块数据的同步。在一个示例中,待添加节点可以接收不同节点发送的Quorum-1个有效的检查点消息,其中n与待添加节点同步区块链数据的最大的n一致,可以确定完成了区块数据的同步。
此外,在一些实施例中,检查点消息还可以直接指示当前的最新区块号。待添加节点可以接收到不同节点发送的Quorum-1个有效的检查点消息,其中指定的当前最新区块号与待添加节点已同步到的区块中的最大区块号一致,可以确定所有区块的同步已完成。
在一些实施例中,待添加节点可以替代地向其他节点发送查询当前最大区块号的请求,并通过发现从大多数节点反馈回来的相同的最大区块号与最大的本地区块号一致来确定完成了区块数据的同步。
在一些实施例中,S801与S803没有严格的顺序,并且可以异步地或并行地执行。
S805包括当前共识节点来施行视图改变。
在S801,当前共识节点执行用于添加节点的交易后,当前共识节点可以更新本地节点列表。在当前视图中,参与共识验证的原始节点及其顺序没有改变。这样,当前共识节点施行了添加节点的交易后,它们可以检测到本地共识节点列表中共识节点的数量与当前视图中共识节点的数量不一致,或者检测到本地共识节点列表中的共识节点标识与当前视图中共识节点标识不一致。因此,当前共识节点可以发起视图改变。
在一些实施例中,待添加节点已经同步区块链的区块链数据后,节点可以向区块链网络广播用于发起视图改变的消息,指示待添加节点已经完成同步,具有加入到区块链网络并充当共识节点的能力,并请求发起视图改变。因此,当前共识节点可以在接收到消息后发起视图改变处理。
在一些实施例中,视图改变处理中的R(即视图改变处理中的副本数)是包括待添加节点的共识节点的总数,即,本地节点列表中包括待添加节点的节点数。
在一些实施例中,类似于前述,当前共识节点可以向其他副本节点广播消息<视图改变,v+1,n,C,P,i>,其中n是最新的稳定检查点的数量,C是2f+1个经验证的检查点消息的集合,以及P是当前副本节点尚未完成处理的预准备和准备消息集。
在一些实施例中,假设当前节点包括节点0、1、2和3,并且待添加节点是节点4。节点0是例如PBFT中的主节点,而节点1、2和3是例如PBFT中的备份节点。可以通过p=(v)mod|R|来计算新的主节点编号。例如,如果p=1,则新的主节点是节点b。这里,R是的本地节点列表中包括待添加节点的节点数。例如,总共有四个当前共识节点,分别编号为0、1、2和3。每个当前共识节点在本地节点列表中记录了四个节点0、1、2和3的编号。在这种情况下,R=4。在执行S801至S805的示例中,每个当前共识节点可以基于本地节点列表中已经存在的节点的编号对待添加节点顺序编号,即,可以将待添加节点顺序编号为4。在这种情况下,R变为5。如上所述,视图改变处理中的视图编号增加,即,从v增加到v+1。
在一些实施例中,当在S801中调用创始合约/系统合约时,调用的方法为添加节点的方法。共识验证完成后,当前共识节点执行用于添加节点的交易,并基于本地节点列表中已有的共识节点的编号对待添加节点进行编号。可以在本地节点列表中将添加的节点初始化为默认的未激活状态(例如,处于未激活状态)。此外,待添加节点可以尝试通过发起交易请求来激活其自身,并且当前共识节点也可以在达成共识之后通过执行相应的交易来将新添加的节点从未激活状态改变为激活状态。
这样,在S803与S805之间,方法还包括:待添加节点同步区块链中的区块数据后,待添加节点向区块链网络发送用于激活节点的交易请求,并且当前共识节点施行共识验证后,执行用于激活节点的交易请求。
在一些实施例中,在待添加节点完成所有区块数据的同步之后,可以将用于激活节点的交易请求发送到区块链网络。在一个示例中,待添加节点可以通过其自身的账户向区块链网络发送用于激活节点的交易请求。类似于前述的用于添加节点的交易请求,用于激活节点的交易请求也可以是调用合约的交易。相应地,用于激活节点的方法可能已经存在于创始合约/系统合约中。用于激活节点的交易请求可以指示调用的创始合约/系统合约中的方法,并且可以包括诸如节点标识、节点IP地址、节点端口号等的参数。
在一些实施例中,类似地,可以将用于激活节点的交易请求传播到基于底层点对点(P2P)网络的区块链网络中的每个共识节点。当前共识节点可以发起对用于激活节点的交易请求的共识验证。以诸如PBFT的具有主节点的共识算法为例,第一当前共识节点可以是主节点,并且可以发起对用于包括用于激活节点的交易请求的交易请求的共识验证处理,即,主要包括上图4中的预准备、准备和提交处理。
在一些实施例中,在完成共识验证之后,区块链网络中的至少Quorum的共识节点在本地具有用于添加节点的交易请求中的消息内容,并且达成了共识。此外,当前共识节点可以在本地调用相应的合约以执行。例如,当前共识节点可以调用上述创始合约/系统合约,在诸如EVM的虚拟机中执行在调用的创始合约/系统合约中指定的方法,并输入相应的参数。在一个示例中,输入的参数包括上述节点标识、节点IP地址、节点端口号等。在合约执行期间,当前共识节点在本地节点列表中将处于未激活状态的节点的状态配置为激活。另外,当前共识节点检测到本地共识节点列表中的激活共识节点的数量与当前视图中的激活共识节点的数量不一致,或者检测到本地共识节点列表中激活共识节点的标识与当前视图中激活共识节点的标识不一致。因此,当前共识节点可以发起视图改变。
在一些实施例中,用于激活节点的交易请求将在通过共识验证之后形成新的区块(区块还可包括除用于激活节点的交易以外的交易)。在共识验证之后,新生成的区块至少存在于Quorum的当前共识节点上,并且不存在于新激活节点(即,刚添加的节点)中。这是因为刚激活节点在激活之前没有参与共识验证。因此,在S801之后,待添加节点可以继续向一些或所有当前节点发送同步请求,从而从当前节点获得区块。这样,待添加节点可以获得包含用于激活节点的交易请求的区块。
S807包括:在视图改变完成之后,节点参与共识验证。
在一些实施例中,在视图改变完成之后,包括待添加节点的每个共识节点在本地具有相同的节点编号列表并且具有相同的区块数据,从而待添加节点可以参与共识验证,即,与当前共识节点共同施行共识验证。这样,节点添加处理完成。
方法800可以进一步分解为由维护区块链的区块链网络的当前共识节点来施行的方法900(图9A)和由待添加到区块链网络中的节点来施行的方法910(图9B)。
图9A和图9B示出了根据各种实施例的用于在区块链网络中添加节点的方法的流程图。图9A示出了由维护区块链的区块链网络的当前共识节点来施行的步骤,并且步骤可以被称为方法900。图9B示出了由待添加到区块链网络中的节点来施行的步骤,并且步骤可以被称为方法910。
在区块链网络中添加节点可以至少包括以下实施例。在一些实施例中,待添加节点可以是节点添加之前的区块链网络的未激活共识节点,并且通过节点添加,未激活共识节点成为区块链网络的激活共识节点(即,区块链网络的新共识节点)。未激活共识节点可能不参与共识验证,并且因此可能是非共识节点。在一些实施例中,待添加节点在节点添加之前可能不是区块链网络的一部分,并且通过节点添加,节点加入到区块链网络中成为激活共识节点。激活共识节点可以参与共识验证。
参考图9A,方法900可以由用于在区块链网络中添加例如区块链网络的当前共识节点(例如,图1-3的区块链节点、图7或图10的当前共识节点)的节点的设备、装置或系统来施行。当前共识节点可以是在节点添加之前的现有共识节点。当前共识节点可以是基于PBFT的区块链网络的主节点或备份节点。可以由包括各种硬件机器和/或软件的系统或设备(例如,计算机、服务器)来实施当前共识节点。例如,系统或设备可以包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器),计算机可读存储介质耦接到一个或多个处理器并且配置有可由一个或多个处理器执行以使得系统或设备(例如,处理器)施行方法900的指令。
下面呈现的方法900的操作旨在说明。取决于实施方式,方法900可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。下面例如方框S903-S905的一个或多个步骤可以是可选的。方法900的更多细节可以参考图1至图8和图10以及相关的描述。参考图1至图8和图10描述的用于在区块链网络中添加节点的步骤被包括在方法900中。
方框S901包括:区块链网络的当前共识节点获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易。在一些实施例中,第一交易被配置为调用部署在由区块链网络维护的区块链中的区块链合约。在一些实施例中,区块链合约包括创始合约或系统合约。
在一些实施例中,当前共识节点获得第一交易包括:从客户端设备或控制器的命令控制台获得第一交易。
方框S902包括:响应于第一交易的共识验证成功而执行第一交易,并基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号。在一些实施例中,当前共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点IP地址和共识节点端口号;并且在节点列表中对多个共识节点顺序编号。在一些实施例中,节点列表处于由区块链网络维护的区块链的世界状态。
在一些实施例中,基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号包括:基于节点列表中的多个共识节点的编号,将节点的标识添加到节点列表的尾部,并对节点顺序编号;或者根据节点属性在节点列表中将多个共识节点和所述节点重新排序。
方框S903包括:从节点获得包括用于激活节点的第二请求的第二交易。
方框S904包括:对第二交易施行共识验证。
方框S905包括:响应于对第二交易的共识验证成功,执行用于激活节点的第二交易。
方框S906包括:施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。在一些实施例中,视图改变中的副本数是包括该节点的共识节点的总数。
在一些实施例中,施行视图改变包括响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中共识节点标识与当前视图中共识节点标识不一致。
在一些实施例中,施行视图改变包括:响应于接收到由节点广播的、用于发起视图改变的消息,而发起视图改变。
在一些实施例中,施行视图改变包括响应于检测到以下任何条件而发起视图改变:节点列表中激活共识节点的数量与当前视图中激活共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中的激活共识节点的标识不一致。
参考图9B,可以由用于在区块链网络中添加例如待添加到区块链网络中的节点(例如,图7或图10的待添加节点)的节点的设备、装置或系统来施行方法910。可以添加节点以使其成为基于PBFT的区块链网络的主节点或备份节点。
可以由包括各种硬件机器和/或软件的系统或设备(例如,计算机、服务器)来实施待添加节点。例如,系统或设备可包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器),计算机可读存储介质耦接到一个或多个处理器并且配置有可由一个或多个处理器执行以使得系统或设备(例如,处理器)施行方法910的指令。
下面呈现的方法910的操作旨在说明。取决于实施方式,方法910可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。下面例如方框S914-S915的一个或多个步骤可以是可选的。方法910的更多细节可以参考图1至图8和图10以及相关的描述。参考图1至图8和图10描述的在区块链网络中添加节点的步骤被包括在方法910中。
方框S911包括:待添加到区块链网络中的节点同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并且包括多个当前共识节点。在一些实施例中,所述同步区块链包括:将一个或多个同步请求分别发送到多个当前共识节点中的一个或多个,以获得区块链中的数据。
在一些实施例中,在所述同步区块链之前,方法还包括:将包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第一交易施行共识验证,并响应于对第一交易的共识验证成功而将第一交易添加到区块链。
在一些实施例中,在所述同步区块链之前,方法还包括:多个当前共识节点之一将包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易发送到多个当前共识节点中的一个或多个,以供多个当前共识节点对第一交易施行共识验证,并响应于对第一交易的共识验证成功而将第一交易添加到区块链。
方框S912包括:响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,向多个当前共识节点中的一个或多个发送包括用于激活节点的第二请求的第二交易。在一些实施例中,向多个当前共识节点中的一个或多个发送包括用于激活节点的第二请求的第二交易包括:向多个当前共识节点中的一个或多个发送包括用于激活节点的第二请求的第二交易,以供多个当前共识节点对第二交易施行共识验证,并响应于对第二交易的共识验证成功而执行用于激活节点的第二交易。
在一些实施例中,将节点添加为区块链网络的新共识节点的第一请求包括:将节点从区块链网络的未激活共识节点改变为区块链网络的激活共识节点的请求。
在一些实施例中,将节点添加为区块链网络的新共识节点的第一请求包括:将节点包括到区块链网络中作为新共识节点的请求。
方框S913包括:在将第二交易添加到区块链中之后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝。
方框S914包括:在多个当前共识节点针对区块链施行视图改变后,将第二本地区块链拷贝与区块链同步以获得第三本地区块链拷贝。
方框S915包括:作为区块链网络的新共识节点,参与共识验证。在一些实施例中,将节点添加为区块链网络的新共识节点的处理不会中断区块链网络的运行。
在一些实施例中,方法进一步包括:通过检查点消息来确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已经完成。
在一些实施例中,方法进一步包括:向多个当前共识节点中的至少一些当前共识节点发送用于查询当前最大区块号的请求,并通过发现从多个当前共识节点中的至少一些当前共识节点返回的相同的最大区块号与最大的本地区块号相一致来确定第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已完成。
图10示出了根据各种实施例的用于实施区块链网络的框图。如所示的,在节点添加之前,区块链网络可以包括多个当前共识节点1003(例如,1003a、1003b、1003c、1003d),并且待添加节点1002将被添加到区块链网络中。当前共识节点中的任何一个可以是用于接收第一交易的第一当前共识节点。这里,节点1003a被指定为第一当前共识节点。在节点添加完成之后,区块链网络可以包括节点1002、1003a、1003b、1003c和1003d,所有都作为共识节点。在一些实施例中,区块链网络可以基于PBFT,并且在每个视图中,其节点之一可以是主节点而剩余的节点是备份节点。
在一些实施例中,区块链系统包括待添加节点1002和多个当前共识节点1003。第一当前共识节点1003a被配置为获得用于添加节点1002的交易请求并对用于将节点1002添加到区块链网络的交易请求发起共识验证。在共识验证成功后,当前共识节点1003各自被配置为执行添加节点1002的交易,并基于当前共识节点的编号在本地节点列表中对节点1002编号。待添加节点1002被配置为同步区块链中的区块数据。当前共识节点1003被配置为用于施行视图改变。节点1002被配置为在视图改变完成之后,参与针对区块链的共识验证。
在一些实施例中,用于添加节点的交易请求包括用于调用合约的交易请求。在一些实施例中,所调用的合约包括创始合约或系统合约。在一些实施例中,第一当前共识节点1003a获得用于添加节点的交易请求包括:第一当前共识节点1003a从客户端设备获得用于添加节点的交易请求;或者第一当前共识节点1003a从控制器的命令控制台获得用于添加节点的交易请求。
在一些实施例中,当前共识节点1003各自被配置为在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点IP地址和共识节点端口号,其中,在节点列表中对共识节点顺序编号。在一个实施例中,由共识节点在本地维护的节点列表处于世界状态。
在一些实施例中,为了执行用于添加节点的交易并基于本地节点列表中的当前共识节点的编号对节点编号,当前共识节点1003各自被配置为执行用于添加节点的交易,并基于本地节点列表中的当前共识节点将待添加节点的标识添加到列表的尾部,并对待添加节点顺序编号;或被配置为执行用于添加节点的交易,并根据指定的属性对包括待添加节点的所有共识节点重新排序。
在一些实施例中,为了同步区块链中的区块数据,待添加节点1002被配置为向当前节点发送同步请求以从当前节点获得所有区块数据;或配置为向不同的当前节点发送同步请求以获得不同的区块。
在一些实施例中,待添加节点1002被配置为通过检查点消息来确定同步区块数据已经完成;或配置为向其他节点发送用于查询当前最大区块号的请求,并通过发现从大多数节点反馈的相同的最大区块号与最大本地区块号一致来确定同步区块数据已完成。
在一些实施例中,任何当前共识节点1003可以被配置为响应于检测到以下任何条件而发起视图改变:本地共识节点列表中共识节点的数量与当前视图中共识节点的数量不一致;以及本地共识节点列表中共识节点标识与当前视图中共识节点标识不一致。
在一些实施例中,任何当前共识节点1003可以被配置为响应于接收到由待添加节点广播的、用于发起视图改变的消息而发起视图改变。
在一些实施例中,待添加节点1002同步区块链中的区块数据后,待添加节点1002被配置为向区块链网络发送用于激活节点的交易请求,并且当前共识节点1003被配置为在施行共识验证之后执行用于激活节点的交易请求。
在一些实施例中,任何当前共识节点1003可以被配置为响应于检测到以下任何条件而发起视图改变:本地共识节点列表中激活共识节点的数量与当前视图中激活共识节点的数量不一致;以及本地共识节点列表中激活共识节点的标识与当前视图中激活共识节点的标识不一致。
在一些实施例中,视图改变中的副本数是包括待添加节点的共识节点的总数。
图11A示出了根据一些实施例的用于在区块链网络中添加节点的装置1100的框图。装置1100可以是节点(例如,图1-3的区块链节点、图7或图10的当前共识节点)的一个或多个组件的实施示例。节点可以是基于PBFT的区块链网络的主节点或备份节点。方法800和方法900的一个或多个步骤可以由装置1100实施。
装置1100可以在包括一个或多个处理器和一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器)的计算机系统或设备中实施,一个或多个非暂态计算机可读存储介质耦接到一个或多个处理器并且配置有可由一个或多个处理器执行以使得系统或设备(例如,处理器)施行上述方法(例如,方法800或900)的步骤的指令。装置1100可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,装置1100可以包括:第一获得模块1101,获得包括用于将节点添加为区块链网络的新共识节点的第一请求的第一交易;第一执行模块1102,响应于对第一交易的共识验证成功,执行第一交易并基于区块链网络中的多个当前共识节点的编号在节点列表中对节点编号;第二获得模块1103,从节点获得包括用于激活节点的第二请求的第二交易;第一施行模块1104,对第二交易施行共识验证;第二执行模块1105,响应于对第二交易的共识验证成功,执行用于激活节点的第二交易;以及第二施行模块1106,施行视图改变以使节点作为区块链网络的新共识节点参与未来的共识验证。一个或多个模块(例如,第二获得模块1103、第一施行模块1104、第二执行模块1105)是可选的。
图11B示出了根据一些实施例的用于在区块链网络中添加节点的装置1110的框图。装置1110可以是待添加到区块链网络中的节点(例如,图7或图10的待添加节点)的一个或多个组件的实施的示例。可以添加节点以使其变为基于PBFT的区块链网络的主节点或备份节点。方法800和方法910的一个或多个步骤可以由装置1110实施。
装置1110可以在包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器)的计算机系统或设备中实施,一个或多个非暂态计算机可读存储介质耦接至一个或多个处理器并配置有可由一个或多个处理器执行以使系统或设备(例如,处理器)施行上述方法(例如,方法800或910)的步骤的指令。装置1110可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,装置1110可以包括:第一同步模块1111,同步区块链以获得第一本地区块链拷贝,其中,区块链网络维护区块链并且包括多个当前共识节点;发送模块1112,响应于确定第一本地区块链拷贝包括将节点添加为区块链网络的新共识节点的第一请求,将包括用于激活节点的第二请求的第二交易发送到多个当前共识节点中的一个或多个;第二同步模块1113,在将第二交易添加到区块链后,将第一本地区块链拷贝与区块链同步以获得第二本地区块链拷贝;以及第三同步模块1114,在多个当前共识节点针对区块链施行视图改变后,将第二本地区块链拷贝与区块链同步以获得第三本地区块链拷贝;以及参与模块1115,作为区块链网络的新共识节点参与共识验证。一个或多个模块(例如,第三同步模块1114、参与模块1115)是可选的。
这里描述的技术可由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或包含硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常可由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,施行存储器管理,提供文件系统、网络、I/O服务,以及提供用户接口功能,例如图形用户界面(“GUI”)等。这里描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备或者一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,这里描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备施行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。
图12示出了其中可以实施本文描述的任何实施例的计算机系统的框图。系统1200可以在图1-7、图10、图11A和图11B中所示的环境、系统或设备的任何组件中实施。可以通过计算机系统1200的一个或多个实施方式来施行图8、图9A和图9B所示的一个或多个方法。
计算机系统1200可以包括总线1202或用于通信信息的其他通信机制、与总线1202耦接的用于处理信息的一个或多个硬件处理器1204。硬件处理器1204可以是例如一个或多个通用微处理器。
计算机系统1200还可包括耦接到总线1202的、用于存储信息和可由处理器1204执行的指令的主存储器1206,例如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器1206还可以用于在可由(多个)处理器1204执行的指令的执行期间存储临时变量或其他中间信息。当存储在可由(多个)处理器1204访问的存储介质中时,这样的指令将计算机系统1200呈现到为被定制以施行指令中指定的操作的专用机器中。计算机系统1200可以进一步包括只读存储器(ROM)1208或耦接到总线1202的用于存储用于处理器1204的静态信息和指令的其他静态存储设备。可以提供例如磁盘、光盘、USB拇指驱动器(闪存驱动器)等的存储设备1210并将其耦接到总线1202以存储信息和指令。
计算机系统1200可使用定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑,其与计算机系统结合而使得计算机系统1200成为专用机器或将计算机系统1200编程成为专用机器,来实现本文描述的技术。根据一个实施例,本文描述的操作、方法和过程由计算机系统1200响应于处理器1204执行主存储器1206中包含的一个或多个指令的一个或多个序列来施行。这些指令可以从诸如存储设备1210的另一存储介质读取到主存储器1206中。执行主存储器1206中包含的指令序列可使得处理器1204施行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。
主存储器1206、ROM 1208和/或存储设备1210可包括非暂时性存储介质。这里使用的术语“非暂时性介质”和类似术语是指存储促使机器以特定方式操作的数据和/或指令的介质,所述介质不包括暂时性信号。这种非暂时性介质可以包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,诸如存储设备1210。易失性介质包括动态存储器,诸如主存储器1206。常规形式的非暂时性介质包括,例如,软磁盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式磁带以及它们的网络版本。
计算机系统1200可包括耦接到总线1202的网络接口1218。网络接口1218可为连接到一个或多个本地网络的一个或多个网络链接提供双向数据通信耦合。例如,网络接口1218可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或者向相应类型的电话线提供数据通信连接的调制解调器。作为另一示例,网络接口1218可以是局域网(LAN)卡以提供数据通信连接至兼容的LAN(或与WAN通信的WAN组件)。还可以实现无线链路。在任何这种实施中,网络接口1218可发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
计算机系统1200可通过网络、网络链接和网络接口1218来发送消息和接收包括程序代码的数据。因特网示例中,服务器可通过因特网、ISP、本地网络和网络接口1218来传送应用程序的请求代码。
接收到的代码可在接收时由处理器1204执行,和/或存储在存储设备1210或其他非易失性存储器中,用于以后执行。
前面部分中描述的每个处理、方法和算法可以体现在由包括计算机硬件的一个或多个计算机系统或者计算机处理器执行的代码模块中并且被其完全或部分自动化地实现。处理和算法可以部分或全部地在专用电路中实现。
上述各种特征和处理可彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合都旨在落入本文的范围内。另外,在一些实施方式中可以省略某些方法或处理框。本文描述的方法和处理也不限于任何特定顺序,与其相关的框或状态可以以适当的其他顺序执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以在单个框或状态中组合。框或状态的示例可以串行、并行或以某种其他方式执行。可以将框或状态可以添加到所公开的实施例或从所公开的实施例中移除。这里描述的系统和组件的示例可以与所描述的不同地被配置。例如,与所公开的实施例相比,可以添加、移除或重新布置元件。
本文描述的方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或被永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的引擎,所述处理器实现的引擎用于执行本文描述的一个或多个操作或功能。
类似地,这里描述的方法可以至少部分地由处理器实现,其中特定处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现的引擎执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能,或作为“软件即服务”(SaaS)操作。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)经由一个或多个适当的接口(例如,应用程序接口(API))被访问。
某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且跨多个机器被部署。在一些实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置。
在本文中,多个实例可以实现作为单个实例所描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,但是可以同时执行一个或多个独立的操作,并且不需要以所示的顺序执行所述操作。在配置中作为独立组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文中的主题的范围内。
尽管已经参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围限定。此外,这里使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用于将一个元件与另一元件区分开。此外,术语“一”、“一个”和“多个”在本文中并不表示对数量的限制,而是表示存在至少一个所述的物品。另外,在本文中,“或”是包括性的而不是排他性的,除非另外明确指出或通过上下文另外指出。因此,在本文中,“A或B”表示“A、B或两者”,除非另外明确指出或通过上下文另外指出。而且,“和”既是连词又是数个,除非另外明确指出或通过上下文另外指出。因此,在本文中,“A和B”是指“A和B,共同地或分别地”,除非另外明确指出或通过上下文另外指出。

Claims (30)

1.一种计算机实现的用于在区块链网络中添加节点的方法,包括:
所述区块链网络中的当前共识节点获得包括用于将所述节点添加为所述区块链网络的新共识节点的第一请求的第一交易;
响应于对所述第一交易的共识验证成功,执行所述第一交易,并基于所述区块链网络中的多个当前共识节点的编号在节点列表中对所述节点编号;以及
施行视图改变以使所述节点作为所述区块链网络的所述新共识节点参与未来的共识验证。
2.根据权利要求1所述的方法,其中,所述第一交易被配置为调用部署在由所述区块链网络维护的区块链中的区块链合约。
3.根据权利要求2所述的方法,其中,所述区块链合约包括创始合约或系统合约。
4.根据权利要求1-3中任一项所述的方法,其中,所述当前共识节点获得所述第一交易包括:
从客户端设备或控制器的命令控制台获得所述第一交易。
5.根据权利要求1-4中任一项所述的方法,其中:
所述当前共识节点在本地维护所述节点列表,所述节点列表包括以下一项或多项:共识节点标识、共识节点IP地址和共识节点端口号;以及
在所述节点列表中对所述多个共识节点顺序编号。
6.根据权利要求1-5中任一项所述的方法,其中,所述节点列表处于由所述区块链网络维护的区块链的世界状态。
7.根据权利要求1-6中任一项所述的方法,其中,基于所述区块链网络中的多个当前共识节点的编号在节点列表中对所述节点编号,包括:
基于所述节点列表中的所述多个共识节点的编号,将所述节点的标识添加至所述节点列表的尾部,并对所述节点顺序编号;或者
根据节点属性,在所述节点列表中将所述多个共识节点和所述节点重新排序。
8.根据权利要求1-7中任一项所述的方法,其中,所述施行视图改变包括响应于检测到以下任何条件而发起所述视图改变:
所述节点列表中共识节点的数量与当前视图中共识节点的数量不一致;以及
所述节点列表中共识节点标识与所述当前视图中共识节点标识不一致。
9.根据权利要求1-8中任一项所述的方法,其中,所述施行视图改变包括:响应于接收到由所述节点广播的、用于发起视图改变的消息,而发起所述视图改变。
10.根据权利要求1-9中任一项所述的方法,在节点列表中对所述节点编号之后并在所述施行视图改变之前,还包括:
从所述节点获得包括用于激活所述节点的第二请求的第二交易;
施行对所述第二交易的共识验证;以及
响应于对所述第二交易的共识验证成功,执行用于激活所述节点的所述第二交易。
11.根据权利要求10所述的方法,其中,所述施行视图改变包括响应于检测到以下任何条件而发起所述视图改变:
所述节点列表中激活共识节点的数量与当前视图中激活共识节点的数量不一致;以及
所述节点列表中激活共识节点的标识与所述当前视图中激活共识节点的标识不一致。
12.根据权利要求1-11中任一项所述的方法,其中,所述视图改变中的副本数为包括所述节点的共识节点的总数。
13.一种用于在区块链网络中添加节点的系统,包括:
一个或多个处理器;和
一个或多个计算机可读存储器,其耦接到所述一个或多个处理器并且其上存储有指令,所述指令能够由所述一个或多个处理器执行以施行权利要求1-12中任一项所述的方法。
14.一种用于在区块链网络中添加节点的装置,包括用于施行权利要求1-12中任一项所述方法的多个模块。
15.一种非暂态计算机可读存储介质,其配置有能够由一个或多个处理器执行以使得所述一个或多个处理器施行权利要求1-12中任一项所述方法的指令。
16.一种计算机实现的用于在区块链网络中添加节点的方法,包括:
待添加到所述区块链网络中的所述节点同步区块链以获得第一本地区块链拷贝,其中,所述区块链网络维护所述区块链并且包括多个当前共识节点;
响应于确定所述第一本地区块链拷贝包括用于将所述节点添加为所述区块链网络的新共识节点的第一请求,将包括用于激活所述节点的第二请求的第二交易发送到所述多个当前共识节点中的一个或多个;以及
在将所述第二交易添加到所述区块链后,将所述第一本地区块链拷贝与所述区块链同步以获得第二本地区块链拷贝。
17.根据权利要求16所述的方法,在所述同步区块链之前,还包括:
将包括用于将所述节点添加为所述区块链网络的所述新共识节点的所述第一请求的第一交易发送到所述多个当前共识节点中的一个或多个,以供所述多个当前共识节点施行对所述第一交易的共识验证,并响应于对所述第一交易的共识验证成功而将所述第一交易添加到所述区块链中。
18.根据权利要求16所述的方法,在所述同步区块链之前,还包括:
所述多个当前共识节点之一将包括用于将所述节点添加为所述区块链网络的所述新共识节点的所述第一请求的第一交易发送到所述多个当前共识节点中的一个或多个,以供所述多个当前共识节点施行对所述第一交易的共识验证,并响应于对所述第一交易的共识验证成功而将所述第一交易添加到所述区块链中。
19.根据权利要求16-18中任一项所述的方法,其中,所述同步区块链包括:
将一个或多个同步请求分别发送到所述多个当前共识节点中的一个或多个,以获得所述区块链中的数据。
20.根据权利要求16-19中任一项所述的方法,其中,将包括用于激活所述节点的第二请求的第二交易发送到所述多个当前共识节点中的一个或多个,包括:
将包括用于激活所述节点的所述第二请求的所述第二交易发送到所述多个当前共识节点中的一个或多个,以供所述多个当前共识节点施行对所述第二交易的共识验证,并响应于对所述第二交易的共识验证成功而执行用于激活所述节点的所述第二交易。
21.根据权利要求16-20中任一项所述的方法,还包括:
在所述多个当前共识节点针对所述区块链施行视图改变后,将所述第二本地区块链拷贝与所述区块链同步以获得第三本地区块链拷贝。
22.根据权利要求21所述的方法,还包括:
作为所述区块链网络的所述新共识节点参与共识验证。
23.根据权利要求21-22中任一项所述的方法,还包括:通过检查点消息来确定所述第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已完成。
24.根据权利要求21-22中任一项所述的方法,还包括:向所述多个当前共识节点中的至少一些发送用于查询当前最大区块号的请求,并且通过发现从所述多个当前共识节点中的所述至少一些返回的相同的最大区块号与最大本地区块号一致来确定所述第一本地区块链拷贝、第二本地区块链拷贝或第二本地区块链拷贝的同步已经完成。
25.根据权利要求16-24中任一项所述的方法,其中:
将所述节点添加为所述区块链网络的所述新共识节点的处理不会对所述区块链网络的运行造成任何中断。
26.根据权利要求16-25中任一项所述的方法,其中,将所述节点添加为所述区块链网络的所述新共识节点的所述第一请求,包括:
将所述节点从所述区块链网络的未激活共识节点改变为所述区块链网络的激活共识节点的请求。
27.根据权利要求16-25中任一项所述的方法,其中,将所述节点添加为所述区块链网络的所述新共识节点的所述第一请求,包括:
将所述节点包括在所述区块链网络中作为所述新共识节点的请求。
28.一种用于在区块链网络中添加节点的系统,包括:
一个或多个处理器;和
一个或多个计算机可读存储器,其耦接到所述一个或多个处理器并且其上存储有指令,所述指令能够由所述一个或多个处理器执行以施行权利要求16-27中任一项所述的方法。
29.一种用于在区块链网络中添加节点的装置,包括用于施行权利要求16-27中任一项所述方法的多个模块。
30.一种非暂态计算机可读存储介质,配置有能够由一个或多个处理器执行以使得所述一个或多个处理器施行权利要求16-27中任一项所述方法的指令。
CN201980003678.6A 2019-09-05 2019-09-30 用于在区块链网络中添加节点的系统和方法 Active CN111480157B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910838736.9A CN110727731B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统
CN201910838736.9 2019-09-05
PCT/CN2019/109416 WO2020011284A2 (en) 2019-09-05 2019-09-30 System and method for adding node in blockchain network

Publications (2)

Publication Number Publication Date
CN111480157A true CN111480157A (zh) 2020-07-31
CN111480157B CN111480157B (zh) 2023-07-28

Family

ID=69143330

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202210134719.9A Active CN114401150B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统
CN201910838736.9A Active CN110727731B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统
CN201980003678.6A Active CN111480157B (zh) 2019-09-05 2019-09-30 用于在区块链网络中添加节点的系统和方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202210134719.9A Active CN114401150B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统
CN201910838736.9A Active CN110727731B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统

Country Status (6)

Country Link
US (2) US10693957B2 (zh)
EP (1) EP3688618B1 (zh)
CN (3) CN114401150B (zh)
SG (1) SG11202003887XA (zh)
TW (1) TWI743881B (zh)
WO (2) WO2020011284A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112040015A (zh) * 2020-11-06 2020-12-04 腾讯科技(深圳)有限公司 一种共识节点列表生成方法及相关装置
CN112837162A (zh) * 2021-03-12 2021-05-25 中国工商银行股份有限公司 一种基于区块链的数据交互方法、节点及系统
CN113179286A (zh) * 2021-06-30 2021-07-27 发明之家(北京)科技有限公司 一种区块链的数据监管方法和系统
CN114358938A (zh) * 2021-12-31 2022-04-15 杭州复杂美科技有限公司 交易、区块的广播方法、设备和存储介质
CN114760198A (zh) * 2022-01-17 2022-07-15 清华大学 一种基于区块链网络的共识方法、装置及系统

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3596888B1 (en) 2019-03-18 2022-08-03 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
AU2019203861B2 (en) * 2019-03-18 2020-07-02 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
CN114401150B (zh) * 2019-09-05 2023-10-20 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
CN110609872B (zh) * 2019-09-20 2021-03-05 北京海益同展信息科技有限公司 用于同步节点数据的方法和装置
JP6852776B1 (ja) * 2019-11-26 2021-03-31 ダイキン工業株式会社 ブロックチェーンシステム、プログラム及びネットワーク接続装置
CN114418574A (zh) * 2020-01-17 2022-04-29 厦门潭宏信息科技有限公司 一种共识和资源传输方法、设备及存储介质
CN111369358B (zh) * 2020-02-10 2023-09-12 杭州溪塔科技有限公司 一种区块链共识方法、装置和电子设备
JP2023517049A (ja) * 2020-03-04 2023-04-21 リュビデックス,エルエルシー 暗号データ入力ブロックチェーンデータ構造
CN111404928B (zh) * 2020-03-13 2021-07-06 电子科技大学 一种适用于实时交易场景的区块链节点共识方法
CN111046110B (zh) * 2020-03-16 2020-06-26 支付宝(杭州)信息技术有限公司 用于区块链系统的节点管理的方法、节点和计算设备
CN111447087B (zh) * 2020-03-23 2023-04-07 北京众享比特科技有限公司 一种动态组网的区块链配置方法
CN111444210B (zh) * 2020-03-26 2021-11-05 腾讯科技(深圳)有限公司 区块链共识节点管理方法、装置、设备以及存储介质
CN111461886B (zh) * 2020-04-01 2022-02-01 杭州溪塔科技有限公司 区块链上不依赖智能合约的系统配置的管理方法和装置
CN111507717B (zh) * 2020-04-20 2022-08-12 腾讯科技(深圳)有限公司 数据处理方法、装置、区块节点及计算机可读存储介质
CN111209346B (zh) * 2020-04-24 2020-07-28 腾讯科技(深圳)有限公司 一种区块链数据归档方法、装置和计算机可读存储介质
CN111596937B (zh) * 2020-05-14 2023-09-15 北京众享比特科技有限公司 一种区块链中节点的新特征同步生效的实现方法和系统
CN111786812B (zh) * 2020-05-27 2023-06-20 金蝶软件(中国)有限公司 节点管理方法、装置、计算机设备和存储介质
CN111382456B (zh) * 2020-06-01 2020-10-23 腾讯科技(深圳)有限公司 提案消息处理方法、装置、设备以及存储介质
CN111600965B (zh) * 2020-06-05 2023-10-27 支付宝(杭州)信息技术有限公司 区块链中的共识方法和系统
CN111698315B (zh) * 2020-06-09 2021-10-15 腾讯科技(深圳)有限公司 针对区块的数据处理方法、数据处理装置及计算机设备
CN112039964B (zh) * 2020-08-24 2022-01-04 大连理工大学 一种基于区块链的节点信誉共识方法
CN111930847B (zh) * 2020-09-16 2021-01-08 深圳壹账通智能科技有限公司 基于区块链的数据处理方法、装置及存储介质
CN112286945A (zh) * 2020-09-21 2021-01-29 杭州趣链科技有限公司 基于pbft算法的配置变更方法、系统、设备及介质
CN112202581A (zh) * 2020-09-24 2021-01-08 成都质数斯达克科技有限公司 群组加入方法、装置以及电子设备
CN112968967B (zh) * 2020-09-25 2023-05-19 支付宝(杭州)信息技术有限公司 区块同步方法及装置
CN112291318B (zh) * 2020-10-20 2022-11-11 杭州云象网络技术有限公司 一种区块链网络节点添加方法、系统、存储介质和装置
CN112182113B (zh) * 2020-10-23 2024-06-25 网易(杭州)网络有限公司 区块链共识方法、系统、电子设备及存储介质
CN112381649B (zh) * 2020-11-17 2024-06-18 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置及设备
CN112600874B (zh) * 2020-11-24 2023-03-31 成都质数斯达克科技有限公司 节点加入方法、装置、电子设备及可读存储介质
CN112564895B (zh) * 2020-11-26 2022-10-21 中国船舶工业系统工程研究院 基于区块链的无人艇集群可信组网方法、系统及存储介质
CN112200680B (zh) * 2020-12-03 2021-03-05 腾讯科技(深圳)有限公司 区块链节点管理方法、装置、计算机以及可读存储介质
CN112668998B (zh) * 2020-12-23 2023-12-19 树根互联股份有限公司 流程实现方法、装置、系统、电子设备和可读存储介质
CN112865959B (zh) * 2020-12-30 2022-05-31 杭州趣链科技有限公司 分布式节点设备的共识方法、节点设备及分布式网络
CN112804091B (zh) * 2020-12-31 2023-07-25 北京百度网讯科技有限公司 联盟网络的运行实现方法、装置、设备及存储介质
CN113760897A (zh) * 2021-01-19 2021-12-07 北京沃东天骏信息技术有限公司 数据重分片方法、装置、计算机系统和计算机可读存储介质
US20220318122A1 (en) * 2021-04-05 2022-10-06 Mastercard International Incorporated Method and system for blockchain performance testing
CN113160972B (zh) * 2021-04-15 2023-03-24 阜外华中心血管病医院 基于“互联网+”技术的症状群管理个性化推荐平台
CN113157805B (zh) * 2021-04-16 2024-05-03 西安瓜大网络科技有限公司 一种事务定序共识方法和系统
CN112991067B (zh) * 2021-04-28 2021-08-03 支付宝(杭州)信息技术有限公司 一种区块链共识方法、装置和系统
CN112988878B (zh) * 2021-05-06 2021-08-13 腾讯科技(深圳)有限公司 基于区块链的区域热力图处理方法、装置和计算机设备
US11983161B2 (en) 2021-06-23 2024-05-14 Bank Of America Corporation System for mitigating data loss in an edge computing environment using machine learning and distributed ledger techniques
CN113206893B (zh) * 2021-07-05 2021-09-14 支付宝(杭州)信息技术有限公司 区块同步、节点加入区块链网络的方法
CN113486118B (zh) * 2021-07-21 2023-09-22 银清科技有限公司 共识节点选取方法及装置
CN113765671B (zh) * 2021-08-06 2024-07-26 深圳前海微众银行股份有限公司 一种区块链节点热重启的方法及装置
CN113836232A (zh) * 2021-09-24 2021-12-24 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN115859343A (zh) * 2021-09-24 2023-03-28 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置以及可读存储介质
KR20230090027A (ko) * 2021-12-14 2023-06-21 한국전자통신연구원 블록체인 네트워크에서의 합의 노드 정보 동기화 장치 및 방법
CN114363349B (zh) * 2021-12-31 2024-04-02 支付宝(杭州)信息技术有限公司 区块链子网的启动方法及装置
CN114047899B (zh) * 2022-01-12 2022-03-18 南京金宁汇科技有限公司 一种区块链的视图同步方法及系统
CN114064343B (zh) * 2022-01-13 2022-04-08 北京溪塔科技有限公司 一种区块链的异常处置方法及装置
CN114070733B (zh) * 2022-01-17 2023-01-31 清华大学 一种基于区块链网络的共识方法、装置及系统
US20230334040A1 (en) * 2022-04-14 2023-10-19 Kabushiki Kaisha Toshiba Methods and systems for storing data using a distributed ledger
CN115314374B (zh) * 2022-07-06 2024-02-06 京东科技信息技术有限公司 区块链节点的部署方法、设备、存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107579848A (zh) * 2017-08-30 2018-01-12 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
CN109242685A (zh) * 2018-08-29 2019-01-18 众安信息技术服务有限公司 基于区块链的共识和验证方法及装置
CN109859047A (zh) * 2019-01-31 2019-06-07 北京瑞卓喜投科技发展有限公司 一种区块链更新方法和区块链更新系统
US20190207751A1 (en) * 2018-01-04 2019-07-04 Bank Of America Corporation Blockchain enterprise data management

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594624B1 (en) 1999-06-22 2003-07-15 The United States Of America As Represented By The National Security Agency Method of identifying all minimum-cost cutsets in a network
US20140149715A1 (en) 2012-11-28 2014-05-29 Los Alamos National Security, Llc Scalable and programmable computer systems
US9372892B1 (en) 2015-12-28 2016-06-21 International Business Machines Corporation Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database
US10720232B2 (en) 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10360191B2 (en) * 2016-10-07 2019-07-23 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
US10158527B2 (en) 2016-10-28 2018-12-18 International Business Machines Corporation Changing an existing blockchain trust configuration
EP3593482B1 (en) 2017-03-06 2022-01-19 Nokia Technologies Oy Secure de-centralized domain name system
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
US10521604B2 (en) 2017-03-17 2019-12-31 Labyrinth Research Llc Unified control of privacy-impacting devices
CN107040594B (zh) * 2017-04-12 2020-04-10 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
US10896169B2 (en) 2017-05-12 2021-01-19 International Business Machines Corporation Distributed system, computer program product and method
CN107395665B (zh) * 2017-05-22 2020-04-24 创新先进技术有限公司 一种区块链业务受理及业务共识方法及装置
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
US11281644B2 (en) 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
US20190052453A1 (en) * 2017-08-14 2019-02-14 Honeywell International Inc. Apparatus and method for using blockchains with secure custody transfer data, sealing data, and other data associated with material transfers
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
US10528551B2 (en) 2017-09-29 2020-01-07 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
US10567156B2 (en) 2017-11-30 2020-02-18 Bank Of America Corporation Blockchain-based unexpected data detection
US11159537B2 (en) 2017-11-30 2021-10-26 Bank Of America Corporation Multicomputer processing for data authentication and event execution using a blockchain approach
US10949511B2 (en) 2017-11-30 2021-03-16 Bank Of America Corporation Multicomputer processing for data authentication using a blockchain approach
US11243945B2 (en) 2017-12-11 2022-02-08 International Business Machines Corporation Distributed database having blockchain attributes
CN108182635A (zh) * 2017-12-18 2018-06-19 深圳前海微众银行股份有限公司 区块链共识方法、系统和计算机可读存储介质
US10896418B2 (en) * 2017-12-29 2021-01-19 Ebay Inc. Secure management of data files using a blockchain
US11296863B2 (en) 2018-01-04 2022-04-05 Bank Of America Corporation Blockchain enterprise data management
CA3088610A1 (en) * 2018-01-17 2019-07-25 Geeq Corporation Blockchain methods, nodes, systems and products
US10542046B2 (en) * 2018-06-07 2020-01-21 Unifyvault LLC Systems and methods for blockchain security data intelligence
US10713133B2 (en) 2018-06-11 2020-07-14 Vmware, Inc. Linear view-change BFT
CA3046020A1 (en) * 2018-06-14 2019-12-14 Zero31Skytech Inc. Apparatus, system and method to limit access to open networks by requiring the consensus of pre-existing nodes to admit candidate nodes
US10992455B2 (en) 2018-08-14 2021-04-27 International Business Machines Corporation Consensus based ad-hoc group creation
CN109327528B (zh) * 2018-10-31 2020-10-20 创新先进技术有限公司 一种基于区块链的节点管理方法和装置
BR112019008172B1 (pt) * 2018-11-07 2022-01-25 Advanced New Technologies Co., Ltd Método implementado por computador para facilitar um processo de consenso em uma rede de protocolo de confiança baseada na tolerância a falhas bizantinas práticas, meio de armazenamento não transitório legível por computador e sistema
WO2019072285A2 (en) 2018-11-30 2019-04-18 Alibaba Group Holding Limited PLATFORM FOR ATOMIC TRANSFER OF INTELLIGENT RESOURCES IN BLOCK CHAIN NETWORKS
SG11201903527QA (en) 2018-11-30 2019-05-30 Alibaba Group Holding Ltd Platform for atomic transfer of smart assets within blockchain networks
CN109784916A (zh) * 2018-12-12 2019-05-21 广东工业大学 一种改进pbft的以太坊共识机制应用于联盟链的方法
CN109829724A (zh) * 2018-12-27 2019-05-31 链极智能科技(上海)有限公司 一种基于区块链的溯源系统
CN109918261B (zh) * 2019-01-25 2022-11-22 中国联合网络通信集团有限公司 故障监听方法、装置、设备及计算机可读存储介质
CN109842681B (zh) * 2019-01-31 2021-06-29 广东绍林科技开发有限公司 一种兼顾集中式与分布式特色的数据管理系统及方法
JP6731123B1 (ja) * 2019-03-18 2020-07-29 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 合意システムのダウンタイムの回復
AU2019203865B2 (en) 2019-03-18 2021-01-21 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
CN114401150B (zh) * 2019-09-05 2023-10-20 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107579848A (zh) * 2017-08-30 2018-01-12 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
US20190207751A1 (en) * 2018-01-04 2019-07-04 Bank Of America Corporation Blockchain enterprise data management
CN109242685A (zh) * 2018-08-29 2019-01-18 众安信息技术服务有限公司 基于区块链的共识和验证方法及装置
CN109859047A (zh) * 2019-01-31 2019-06-07 北京瑞卓喜投科技发展有限公司 一种区块链更新方法和区块链更新系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112040015A (zh) * 2020-11-06 2020-12-04 腾讯科技(深圳)有限公司 一种共识节点列表生成方法及相关装置
CN112040015B (zh) * 2020-11-06 2021-02-12 腾讯科技(深圳)有限公司 一种共识节点列表生成方法及相关装置
CN112837162A (zh) * 2021-03-12 2021-05-25 中国工商银行股份有限公司 一种基于区块链的数据交互方法、节点及系统
CN113179286A (zh) * 2021-06-30 2021-07-27 发明之家(北京)科技有限公司 一种区块链的数据监管方法和系统
CN114358938A (zh) * 2021-12-31 2022-04-15 杭州复杂美科技有限公司 交易、区块的广播方法、设备和存储介质
CN114760198A (zh) * 2022-01-17 2022-07-15 清华大学 一种基于区块链网络的共识方法、装置及系统
WO2023134160A1 (zh) * 2022-01-17 2023-07-20 清华大学 一种基于区块链网络的共识方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
EP3688618B1 (en) 2021-11-03
CN114401150A (zh) 2022-04-26
SG11202003887XA (en) 2020-05-28
WO2021042885A1 (zh) 2021-03-11
US10693957B2 (en) 2020-06-23
CN111480157B (zh) 2023-07-28
CN110727731A (zh) 2020-01-24
US10693958B2 (en) 2020-06-23
EP3688618A2 (en) 2020-08-05
US20200120157A1 (en) 2020-04-16
WO2020011284A3 (en) 2020-06-25
TWI743881B (zh) 2021-10-21
CN110727731B (zh) 2021-12-21
EP3688618A4 (en) 2020-12-16
WO2020011284A2 (en) 2020-01-16
TW202118274A (zh) 2021-05-01
CN114401150B (zh) 2023-10-20
US20200153899A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
CN111480157B (zh) 用于在区块链网络中添加节点的系统和方法
CN111183625B (zh) 用于在区块链网络中删除节点的系统和方法
CN110785966B (zh) 用于结束视图更改协议的系统和方法
JP2020522778A (ja) ビュー変更プロトコルを終了するためのシステムおよび方法
KR20200112633A (ko) 합의 시스템 다운타임 복구
US11657035B2 (en) Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system
CN108234302A (zh) 保持网络装置用的分布式操作系统中的一致性
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
Wels Guaranteed-TX: The exploration of a guaranteed cross-shard transaction execution protocol for Ethereum 2.0.
Bashir Classical Consensus
Saramago et al. Byzantine Collision-Fast Consensus Protocols
CN118802433A (zh) 面向物联网环境的通信系统及基于共识团机制的选举方法
Bashir Early Protocols
Bashir Distributed Consensus

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
TA01 Transfer of patent application right

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40034420

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240920

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Ant Chain Technology Co.,Ltd.

Country or region after: Singapore

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands