CN111586147B - 区块链的节点同步方法、装置、设备及存储介质 - Google Patents
区块链的节点同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111586147B CN111586147B CN202010363964.8A CN202010363964A CN111586147B CN 111586147 B CN111586147 B CN 111586147B CN 202010363964 A CN202010363964 A CN 202010363964A CN 111586147 B CN111586147 B CN 111586147B
- Authority
- CN
- China
- Prior art keywords
- node
- transaction
- verified
- standby
- nodes
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及区块链技术,提供一种区块链的节点同步方法、装置、设备及存储介质,即基于预设选举算法在同一组织内的节点中选出主节点,通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将处理后的事务信息与事务块发送至备节点,备节点基于主节点的验证结果进行事务信息同步,使得对每个组织的节点只需验证一次事务块,极大减少区块链的网络流量,提升整个区块链网络的性能,节省计算资源。其中,信息可存储于区块链节点中。大部分计算资源可用于服务查询请求,提高整个区块链网络的查询请求吞吐量,并减少请求延时。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链的节点同步方法、装置、设备及计算机可读存储介质。
背景技术
区块链一般被理解为一个分布式账本,它的本质是一个分布式数据库。联盟区块链与普通区块链的根本区别之一是需要提供隐私保护机制,该机制一般是通过密码学中的签名加密和验签解密来实现的。验签,即验证区块签名,不但要验证区块中所有事务签名的有效性,还要验证签名的策略是否满足当前策略。因此,该步骤包含了大量的数学运算,耗时较大。通常情况下,多个事务被打包成块的形式发送给区块链上的节点,由节点解开块,获取其中的事务。然后,节点先对每个事务进行验签,再对所有验签通过的事务做多版本检查。对验签和多版本检查中任意一项不通过的事务都会在块内被标记为无效。最后写入事务信息到磁盘,整个流程采用串行的方式执行。之后,节点接收下一个块,并循环重复上述步骤。当前业内区块链的主要实现方法是将打包好的块发给所有节点,每个节点都要完整的重复上述步骤。如果一个区块链中的节点特别多,将块发送给每个节点不仅会产生巨大的网络流量,严重影响整个区块链网络的性能,而且每个节点都进行验签和多版本检查的步骤会浪费大量的计算资源,影响整个区块链网络查询请求的吞吐量,造成查询请求的延时。
发明内容
本发明的主要目的在于提供一种区块链的节点同步方法、装置、设备及计算机可读存储介质,旨在解决现有区块链网络性能较差以及区块链网络查询请求吞吐量大的技术问题。
为实现上述目的,本发明提供一种区块链的节点同步方法,所述区块链的节点同步方法包括以下步骤:
基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。
可选地,所述基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点的步骤具体包括:
根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重,并将权重最大的节点确定为所述主节点;
将所述同一组织内除所述主节点之外的其他节点设置为所述备节点。
可选地,所述将所述同一组织内除所述主节点之外的其他节点设置为所述备节点的步骤之后还包括:
通过所述备节点监听所述主节点发送的心跳,若所述备节点在预设时间间隔内未接收到所述主节点发送的心跳,则将所述备节点转换为候选节点;
各个候选节点向本节点投上一张选票,并各自向其他候选节点发送选举请求,并接收所述其他候选节点发送的携带自身权重的投票;
基于所述各个候选节点对应的投票,在所述各个候选节点中确定下一主节点,并将其他候选节点作为备节点。
可选地,所述基于各个候选节点对应的投票,在所述候选节点中确定下一主节点,并将其他候选节点作为备节点的步骤之后,还包括:
根据各个主节点的确定顺序,确定各个主节点对应的优先级;
在检测到多个主节点启动时,根据各个启动主节点对应的优先级,进行当前主节点的切换。
可选地,所述通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘的步骤具体包括:
通过所述主节点对事务块中的各个待验证事务进行验签,并对验签通过的事务进行多版本检查;
基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记;
基于所述待验证事务以及对应的有效性标记,生成所述待验证事务对应的事务信息,并将所述事务信息写入所述主节点磁盘。
可选地,所述基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记的步骤包括:
将通过所述验签以及多版本检查的待验证事务添加有效标记,将未通过所述验签或者未通过所述多版本检查的待验证事务添加无效标记。
可选地,所述将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步的步骤具体包括:
将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述主节点验证后的各个待验证事务对应的有效性标记写入所述备节点磁盘,完成所述主节点和备节点的事务信息同步。
此外,为实现上述目的,本发明还提供一种区块链的节点同步装置,所述区块链的节点同步装置包括:
主备节点确定模块,用于基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
验证结果写入模块,用于通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
验证结果同步模块,用于将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。
此外,为实现上述目的,本发明还提供一种区块链的节点同步设备,所述区块链的节点同步设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的区块链的节点同步程序,其中所述区块链的节点同步程序被所述处理器执行时,实现如上述的区块链的节点同步方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有区块链的节点同步程序,其中所述区块链的节点同步程序被处理器执行时,实现如上述的区块链的节点同步方法的步骤。
本发明提供一种区块链的节点同步方法,通过基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。通过上述方式,本发明在同一组织内确定主节点,通过主节点对事务块进行事务处理,并将处理后的事务信息与事务块发送至备节点,备节点基于主节点的验证结果进行事务信息同步,使得对每个组织的节点只需验证一次事务块,极大的减少了区块链的网络流量,提升了整个区块链网络的性能,极大地节省了计算资源。备节点的大部分计算资源可用于服务查询请求,提高了整个区块链网络的查询请求的吞吐量,减少每个查询请求的延时,解决了现有区块链网络性能较差以及区块链网络查询请求吞吐量大的技术问题。
附图说明
图1为本发明实施例方案中涉及的区块链的节点同步设备的硬件结构示意图;
图2为本发明区块链的节点同步方法第一实施例的流程示意图;
图3为本发明区块链的节点同步方法第二实施例的流程示意图;
图4为本发明区块链的节点同步装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的区块链的节点同步方法主要应用于区块链的节点同步设备,该区块链的节点同步设备可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的区块链的节点同步设备的硬件结构示意图。本发明实施例中,区块链的节点同步设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对区块链的节点同步设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及区块链的节点同步程序。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的区块链的节点同步程序,并执行本发明实施例提供的区块链的节点同步方法。
本发明实施例提供了一种区块链的节点同步方法。
参照图2,图2为本发明区块链的节点同步方法第一实施例的流程示意图。
本实施例中,所述区块链的节点同步方法包括以下步骤:
步骤S10,基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
目前业内区块链的主要实现方法是将打包好的块发给所有节点,每个节点都要完整的进行验签以及多版本检查等事务处理步骤。如果一个区块链中的节点特别多,将块发送给每个节点不仅会产生巨大的网络流量,严重影响整个区块链网络的性能,而且每个节点都进行验签和多版本检查的步骤会浪费大量的计算资源,影响整个区块链网络查询请求的吞吐量,造成查询请求的延时。为了解决上述问题,本发明在同一组织内确定主节点,通过主节点对事务块进行事务处理,并将处理后的事务信息与事务块发送至备节点,备节点基于主节点的验证结果进行事务信息同步,使得对每个组织的节点只需验证一次事务块,极大的减少了区块链的网络流量,提升了整个区块链网络的性能,极大地节省了计算资源。备节点的大部分计算资源可用于服务查询请求,提高了整个区块链网络的查询请求的吞吐量,减少每个查询请求的延时。具体地,在区块链网络中,往往多个节点会属于同一个组织,同一个组织内的节点都在同一个证书链上,所以属于同一个组织的节点之间是相互信任的。因此,一个组织中只要有一个节点完成了上述的步骤,就可以将结果直接分享给同一组织中的其他节点,其他节点并不需要重复进行验签和多版本检查的步骤。在现有的区块链网络中,同一个组织内的所有节点的地位都是对等的,因此所有节点都要重复验签和多版本检查的步骤。本发明的主要思想是在同一组织中,将节点分为主节点master节点和备节点slave节点两种,通过预设选举算法,选举出master节点,master节点只有一个,同一组织内除所述主节点之外的其他节点全都是slave节点。
步骤S20,通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
本实施例中,同一组织中master节点负责接收新的块,并对接收到的块进行验签和多版本检查。由master节点解开块,获取其中的各个待验证事务。然后,master节点对每个待验证事务进行相应的事务处理。具体地,事务处理包括验签以及多版本检查。根据事务处理结果,将各个待验证事务进行有效性标记,即标记为有效事务或者标记为无效事务。然后基于各个待验证事务对应的标记,生成各个待验证事务的事务信息,并将所述事务信息写入master节点磁盘,完成master节点对事务块的事务处理。
其中,所述步骤S20具体包括:
通过所述主节点对事务块中的各个待验证事务进行验签,并对验签通过的事务进行多版本检查;
基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记;
基于所述待验证事务以及对应的有效性标记,生成所述待验证事务对应的事务信息,并将所述事务信息写入所述主节点磁盘。
其中,所述基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记的步骤包括:
将通过所述验签以及多版本检查的待验证事务添加有效标记,将未通过所述验签或者未通过所述多版本检查的待验证事务添加无效标记。
本实施例中,通过master节点首先对各个待验证事务进行验签,再对所有验签通过的事务做多版本检查。将验签和多版本检查中任意一项不通过的事务都会在块内被标记为无效,即添加无效标识,如将标识位记为0。例如,如果一笔交易被标记为有效,则该交易中所携带的数据将会被应用到区块链状态数据库中。而无效的交易则会直接被忽略,不对区块链状态数据库做任何操作。比如,当前区块链状态数据库中有一条数据是a=1。有一笔交易的内容是将a的值改为3(a=3)。如果该笔交易经过验签和多版本检查后被标记为有效,则a=3将会被应用到区块链状态数据库中。之后,在区块链状态数据库中查询a的值,结果为3。如果该笔交易被标记为无效,那么该交易直接会被忽略,之后在区块链状态数据库中查询a的值,结果还是1。
步骤S30,将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。
本实施例中,将带有每个事务有效性标记的事务块发送给同一组织内其他的slave节点。slave节点在接受到master节点发来的块时,直接根据块中带有的每个事务的有效性标记将事务信息写入备节点磁盘,即包括以下步骤:
1、将收到的块写盘,块中含有每笔交易的有效性标记信息;
2、根据每笔交易的有效性来修改区块链状态数据库,并不进行验签和多版本检查。
同时,slave和master节点可以自由切换,避免了因为master节点的失效导致整个组织的节点无法正常工作。
其中,写入磁盘的其实是有两层意思:
1备节点收到的是块,那么备节点会将块以文件的形式写入磁盘(硬盘或其他存储设备),块中含有所有的交易,包括有效交易和无效交易;
2在备节点收到的块中,每笔交易的有效性已经由主节点进行了标记,备节点直接根据该标记将有效的交易应用到区块链状态数据库中。由于区块链状态数据库也是存储在磁盘上的,所以这里也会因为写入数据库而产生写入硬盘的动作。
本实施例提供一种区块链的节点同步方法,通过基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。通过上述方式,本发明在同一组织内确定主节点,通过主节点对事务块进行事务处理,并将处理后的事务信息与事务块发送至备节点,备节点基于主节点的验证结果进行事务信息同步,使得对每个组织的节点只需验证一次事务块,极大的减少了区块链的网络流量,提升了整个区块链网络的性能,极大地节省了计算资源。备节点的大部分计算资源可用于服务查询请求,提高了整个区块链网络的查询请求的吞吐量,减少每个查询请求的延时,解决了现有区块链网络性能较差以及区块链网络查询请求吞吐量大的技术问题。
参照图3,图3为本发明区块链的节点同步方法第二实施例的流程示意图。
基于上述图2所示实施例,本实施例中,所述步骤S10具体包括:
步骤S11,根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重,并将权重最大的节点确定为所述主节点;
步骤S12,将所述同一组织内除所述主节点之外的其他节点设置为所述备节点。
本实施例中,参与选举的节点往往属于同一个组织内,而在一个组织内节点的地位有时不是完全相同的。比如有些节点的机器性能比较高,优先选择该节点作为主节点,因为主节点需要验证块数据有效性,并向其它备节点发送块。所以主节点的负载会比较高,更适合由一个性能较好的节点来承担。根据各个节点的机器性能值以及对应的权重映射关系,设置各个节点的节点权重。具体实施例中,在检测到各个节点的机器性能值发生变化时,动态调整各个节点的节点权重。即在每个节点启动时,为每个节点赋予一定的权值,这个权值可以根据具体的情况来设置,如在机器性能值大于某阈值时,权重值设置为0.5,低于某阈值时,权重值设置为0.1,等。对一个节点成为leader节点的期望越高,那么该节点的权值就可以设置的越大。其中,每个节点分配的权值基于各个节点对应的权重,使各个权值之和不容易产生重复。初始时,将权重最大的节点设置为主节点。然后将所述同一组织内除所述主节点之外的其他节点设置为所述备节点。
进一步地,所述步骤S12之后,还包括:
通过所述备节点监听所述主节点发送的心跳,若所述备节点在预设时间间隔内未接收到所述主节点发送的心跳,则将所述备节点转换为候选节点;
各个候选节点向本节点投上一张选票,并各自向其他候选节点发送选举请求,并接收所述其他候选节点发送的携带自身权重的投票;
基于所述各个候选节点对应的投票,在所述各个候选节点中确定下一主节点,并将其他候选节点作为备节点。
本实施例中,为了及时检测异常的主节点,防止异常主节点导致区块链的事务处理异常。将备节点初始化为跟随者节点Follower节点状态,将主节点初始化为领导者节点Leader节点,并通过Follower节点监听领导者节点Leader节点发送的心跳。若Follower节点(Node a)首先感知不到来自Leader节点发送的心跳,就会将自身的状态转换为Candidate。这里有一个选举超时时间为随机分配的150ms~300ms之间,选举超时后,Follower节点就会转换为Candidate节点并开始新的选举任期Term。具体地,在确定leader节点后,将该节点所属的同一组织内的其他节点的状态设置为跟随节点Follower状态。并实时检测是否接收到Leader节点发送的心跳。若接收到心跳,即表示主节点正常工作,若接收不到心跳,即表示主节点发生异常,不能正常工作。同一组织内的其他节点在未收到Leader节点发送的心跳时,将自身状态由follow节点设置为候选节点Candidate节点,即由备用节点转换成候选节点。各个Candidate状态的备用节点首先会给自己投上一张选票(Voted For a),并向其他节点发送选举请求(Vote For me),要求选举自己为Leader。其他节点将携带自身权重的投票信息发送至发起选举请求的节点。当一个节点向其他节点投票时都会附带上自己的权值(例如权重为0.7的节点投票为0.7票)。在一个选举任期内,所有收到过投票的节点会比较收到投票的权值的总和,总和最大的当选leader,即确定为下一Leader节点。具体地,各个节点在接收到其他节点发送的选举请求时,如果接收到Candidate Vote请求的其他节点在这个选举任期(Term=1)还没有进行过投票,那么它们就会给发送请求的Candidate进行投票响应,并且重置本节点的选举超时时间设置。如果Candidate节点得到大多数节点的选票,那么它就会成为本届任期内新的Leader节点。其他节点在得知主节点已经被选举出后,将自动成为备节点。此时Leader节点与各个Follower节点之间就会通过发送heartbeats来感知彼此的状态,直到某个Follower节点率先感知不到Leader节点的心跳,变成Candidate状态后重新发起新一届选举为止。由此基于Raft算法结合加权算法选举出主节点。
进一步地,所述基于各个候选节点对应的投票,在所述候选节点中确定下一主节点,并将其他候选节点作为备节点的步骤之后,还包括:
根据各个主节点的确定顺序,确定各个主节点对应的优先级;
在检测到多个主节点启动时,根据各个启动主节点对应的优先级,进行当前主节点的切换。
本实施例中,当第一个leader被选举出来的时候,它会被赋予一个优先级为1的标识。如果这个leader挂掉了,那么又选举出了一个新的leader,那么这个leader会被赋予优先级2。如果过了一段时间优先级为1的leader又启动了,那么所有节点都会重新去连接优先级为1的这个节点,并且把该节点作为leader。由此实现了一个leader的根据节点优先级自动切换主节点的功能。
此外,本发明实施例还提供一种区块链的节点同步装置。
参照图4,图4为本发明区块链的节点同步装置第一实施例的功能模块示意图。
本实施例中,所述区块链的节点同步装置包括:
主备节点确定模块10,用于基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
验证结果写入模块20,用于通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
验证结果同步模块30,用于将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步。
进一步地,所述验证结果写入模块20具体包括:
处理单元,用于通过所述主节点对事务块中的各个待验证事务进行验签,并对验签通过的事务进行多版本检查;
标记单元,用于基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记;
写入单元,用于基于所述待验证事务以及对应的有效性标记,生成所述待验证事务对应的事务信息,并将所述事务信息写入所述主节点磁盘。
进一步地,所述标记单元还用于:
将通过所述验签以及多版本检查的待验证事务添加有效标记,将未通过所述验签或者未通过所述多版本检查的待验证事务添加无效标记。
进一步地,所述主备节点确定模块10具体包括:
主节点确定单元,用于根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重,并将权重最大的节点确定为所述主节点;
备节点确定单元,用于将所述同一组织内除所述主节点之外的其他节点设置为所述备节点。
进一步地,所述主备节点确定模块10还用于:
通过所述备节点监听所述主节点发送的心跳,若所述备节点在预设时间间隔内未接收到所述主节点发送的心跳,则将所述备节点转换为候选节点;
各个候选节点向本节点投上一张选票,并各自向其他候选节点发送选举请求,并接收所述其他候选节点发送的携带自身权重的投票;
基于所述各个候选节点对应的投票,在所述各个候选节点中确定下一主节点,并将其他候选节点作为备节点。
进一步地,所述主备节点确定模块10还用于:
根据各个主节点的确定顺序,确定各个主节点对应的优先级;
在检测到多个主节点启动时,根据各个启动主节点对应的优先级,进行当前主节点的切换。
其中,上述区块链的节点同步装置中各个模块与上述区块链的节点同步方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
此外,本发明实施例还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有区块链的节点同步程序,其中所述区块链的节点同步程序被处理器执行时,实现如上述的区块链的节点同步方法的步骤。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
其中,区块链的节点同步程序被执行时所实现的方法可参照本发明区块链的节点同步方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种区块链的节点同步方法,其特征在于,所述区块链的节点同步方法包括以下步骤:
基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步;
其中,所述基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点的步骤,具体包括:
根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重,并将权重最大的节点确定为所述主节点;
将所述同一组织内除所述主节点之外的其他节点设置为所述备节点;
所述根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重之后,还包括:
在检测到各个节点的机器性能值发生变化时,动态调整各个节点的节点权重。
2.如权利要求1所述的区块链的节点同步方法,其特征在于,所述将所述同一组织内除所述主节点之外的其他节点设置为所述备节点的步骤之后还包括:
通过所述备节点监听所述主节点发送的心跳,若所述备节点在预设时间间隔内未接收到所述主节点发送的心跳,则将所述备节点转换为候选节点;
各个候选节点向本节点投上一张选票,并各自向其他候选节点发送选举请求,并接收所述其他候选节点发送的携带自身权重的投票;
基于所述各个候选节点对应的投票,在所述各个候选节点中确定下一主节点,并将其他候选节点作为备节点。
3.如权利要求2所述的区块链的节点同步方法,其特征在于,所述基于各个候选节点对应的投票,在所述候选节点中确定下一主节点,并将其他候选节点作为备节点的步骤之后,还包括:
根据各个主节点的确定顺序,确定各个主节点对应的优先级;
在检测到多个主节点启动时,根据各个启动主节点对应的优先级,进行当前主节点的切换。
4.如权利要求1所述的区块链的节点同步方法,其特征在于,所述通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘的步骤具体包括:
通过所述主节点对事务块中的各个待验证事务进行验签,并对验签通过的事务进行多版本检查;
基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记;
基于所述待验证事务以及对应的有效性标记,生成所述待验证事务对应的事务信息,并将所述事务信息写入所述主节点磁盘。
5.如权利要求4所述的区块链的节点同步方法,其特征在于,所述基于所述待验证事务对应的验签结果以及多版本检查结果,将所述待验证事务添加对应有效性标记的步骤包括:
将通过所述验签以及多版本检查的待验证事务添加有效标记,将未通过所述验签或者未通过所述多版本检查的待验证事务添加无效标记。
6.如权利要求1至5任意一项所述的区块链的节点同步方法,其特征在于,所述将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步的步骤具体包括:
将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述主节点验证后的各个待验证事务对应的有效性标记写入所述备节点磁盘,完成所述主节点和备节点的事务信息同步。
7.一种区块链的节点同步装置,其特征在于,所述区块链的节点同步装置包括:
主备节点确定模块,用于基于预设选举算法在同一组织内的节点中选出主节点,并将所述同一组织内除所述主节点之外的其他节点作为备节点;
验证结果写入模块,用于通过所述主节点对事务块中的各个待验证事务进行事务处理,基于所述待验证事务对应的事务处理结果对所述各个待验证事务进行有效性标记,生成所述各个待验证事务对应的事务信息,并将所述事务信息写入主节点磁盘;
验证结果同步模块,用于将所述事务块以及所述主节点磁盘中的事务信息发送至所述备节点,以便所述备节点将所述事务块中的各个待验证事务对应的事务信息写入备节点磁盘,完成所述主节点和备节点的事务信息同步;
其中,所述主备节点确定模块,还用于根据所述同一组织内各个节点的机器性能值以及对应的权重映射关系,确定各个节点对应的节点权重,并将权重最大的节点确定为所述主节点;将所述同一组织内除所述主节点之外的其他节点设置为所述备节点;
所述主备节点确定模块,还用于在检测到各个节点的机器性能值发生变化时,动态调整各个节点的节点权重。
8.一种区块链的节点同步设备,其特征在于,所述区块链的节点同步设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的区块链的节点同步程序,其中所述区块链的节点同步程序被所述处理器执行时,实现如权利要求1至6中任一项所述的区块链的节点同步方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有区块链的节点同步程序,其中所述区块链的节点同步程序被处理器执行时,实现如权利要求1至6中任一项所述的区块链的节点同步方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010363964.8A CN111586147B (zh) | 2020-04-30 | 2020-04-30 | 区块链的节点同步方法、装置、设备及存储介质 |
PCT/CN2020/098929 WO2021217849A1 (zh) | 2020-04-30 | 2020-06-29 | 区块链的节点同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010363964.8A CN111586147B (zh) | 2020-04-30 | 2020-04-30 | 区块链的节点同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111586147A CN111586147A (zh) | 2020-08-25 |
CN111586147B true CN111586147B (zh) | 2021-09-28 |
Family
ID=72126247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010363964.8A Active CN111586147B (zh) | 2020-04-30 | 2020-04-30 | 区块链的节点同步方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111586147B (zh) |
WO (1) | WO2021217849A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988203B (zh) * | 2020-09-03 | 2022-08-23 | 深圳壹账通智能科技有限公司 | 节点选举方法、装置及存储介质 |
CN112202834B (zh) * | 2020-09-03 | 2024-04-23 | 金证财富南京科技有限公司 | 一种数据处理方法、数据处理装置及节点服务器 |
CN112804089B (zh) * | 2020-12-31 | 2023-07-25 | 北京百度网讯科技有限公司 | 联盟网络的运行实现方法、装置、设备及存储介质 |
CN113783921A (zh) * | 2021-01-27 | 2021-12-10 | 北京京东振世信息技术有限公司 | 创建缓存组件的方法和装置 |
CN114500525B (zh) * | 2021-12-24 | 2024-04-26 | 天翼云科技有限公司 | 分布式系统中节点更新的方法、装置、计算机设备及介质 |
CN114420277A (zh) * | 2022-01-25 | 2022-04-29 | 河海大学 | 一种基于改进Raft算法的区块链医院病床管理系统 |
CN114448769B (zh) * | 2022-04-02 | 2022-07-01 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的节点竞选投票方法及装置 |
CN115150273B (zh) * | 2022-06-30 | 2024-05-28 | 联想(北京)有限公司 | 一种升级处理方法及装置 |
CN115835368B (zh) * | 2023-02-24 | 2023-06-02 | 深圳锦沃科技有限公司 | 一种去中心化的多基站时间槽同步方法、系统及存储介质 |
CN116260707B (zh) * | 2023-05-15 | 2023-10-10 | 安徽中科晶格技术有限公司 | 基于共识的区块链节点灾备方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108122165A (zh) * | 2017-12-15 | 2018-06-05 | 北京中电普华信息技术有限公司 | 一种区块链共识方法及系统 |
CN108289129A (zh) * | 2018-02-26 | 2018-07-17 | 深圳智乾区块链科技有限公司 | 区块链生态环境创建方法、系统及计算机可读存储介质 |
CN109614206A (zh) * | 2018-10-25 | 2019-04-12 | 深圳壹账通智能科技有限公司 | 区块链事务处理的装置、方法及存储介质 |
KR20190092362A (ko) * | 2019-07-31 | 2019-08-07 | 네이버 주식회사 | 데이터베이스 샤딩 환경에서의 데이터 복제 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10200197B1 (en) * | 2017-12-18 | 2019-02-05 | Nec Corporation | Scalable crash fault-tolerance consensus protocol with efficient message aggregation |
CN108134706B (zh) * | 2018-01-02 | 2020-08-18 | 中国工商银行股份有限公司 | 区块链多活高可用系统、计算机设备以及方法 |
CN108537063A (zh) * | 2018-02-26 | 2018-09-14 | 阿里巴巴集团控股有限公司 | 一种数据存储的方法、装置及设备 |
CN109859047A (zh) * | 2019-01-31 | 2019-06-07 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法和区块链更新系统 |
CN110061856A (zh) * | 2019-03-07 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种基于区块链的通信方法、装置及电子设备 |
-
2020
- 2020-04-30 CN CN202010363964.8A patent/CN111586147B/zh active Active
- 2020-06-29 WO PCT/CN2020/098929 patent/WO2021217849A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108122165A (zh) * | 2017-12-15 | 2018-06-05 | 北京中电普华信息技术有限公司 | 一种区块链共识方法及系统 |
CN108289129A (zh) * | 2018-02-26 | 2018-07-17 | 深圳智乾区块链科技有限公司 | 区块链生态环境创建方法、系统及计算机可读存储介质 |
CN109614206A (zh) * | 2018-10-25 | 2019-04-12 | 深圳壹账通智能科技有限公司 | 区块链事务处理的装置、方法及存储介质 |
KR20190092362A (ko) * | 2019-07-31 | 2019-08-07 | 네이버 주식회사 | 데이터베이스 샤딩 환경에서의 데이터 복제 |
Also Published As
Publication number | Publication date |
---|---|
WO2021217849A1 (zh) | 2021-11-04 |
CN111586147A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111586147B (zh) | 区块链的节点同步方法、装置、设备及存储介质 | |
EP3652886B1 (en) | Blockchain | |
Shraer et al. | Venus: Verification for untrusted cloud storage | |
Xiao et al. | Achieving accountable MapReduce in cloud computing | |
US7487348B2 (en) | System for authenticating and screening grid jobs on a computing grid | |
WO2022166637A1 (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
US8938648B2 (en) | Multi-entity test case execution workflow | |
CN103077345B (zh) | 基于虚拟机的软件授权方法及系统 | |
CN112422368A (zh) | 基于clickhouse的数据库集群监控方法及系统 | |
CN111159143A (zh) | 一种基于区块链测评系统及其方法 | |
CN101129043A (zh) | 用于将客户机连接到网络的方法、系统和程序产品 | |
Zhu et al. | A security protection framework for cloud computing | |
CN109818965B (zh) | 个人身份验证装置及方法 | |
CN111782456A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN111832018A (zh) | 病毒检测方法、装置、计算机装置及存储介质 | |
WO2022141024A1 (zh) | 基于区块链技术的业务交易方法、系统及存储介质 | |
CN111899018B (zh) | 订单数据处理方法、装置、服务器及存储介质 | |
CN108600156A (zh) | 一种服务器及安全认证方法 | |
CN102868594B (zh) | 一种消息处理方法和装置 | |
US20240354878A1 (en) | Method and Apparatus for Data Verification | |
CN111988202B (zh) | 节点切换方法、装置及存储介质 | |
CN111756548A (zh) | 节点共识机制优化方法、系统、设备及存储介质 | |
CN112084827B (zh) | 数据处理方法及装置 | |
US12026286B2 (en) | Executing containers during idle states |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |