一种区块链的节点同步方法及装置与流程

文档序号:16129331发布日期:2018-12-01 00:08阅读:1020来源:国知局
本发明涉及计算机应用和区块链
技术领域
:,尤其涉及一种区块链的节点同步方法及装置。
背景技术
:目前,最主要的区块链平台包括比特币平台和以太坊平台。其中,以太坊平台将一代加密数字货币扩展为可编程货币,支持第三方开发者在其平台中开发智能合约应用及发行数字代币(token),从而极大地扩展了区块链的应用场景。目前,以太坊平台已成为了区块链业界最为流行的公链系统。区块链的一个重要特点就是在每个节点均保存整个区块链的区块信息,因此,需要对整个平台的所有节点的区块数据进行同步更新。在以太坊平台中,每隔10秒产生一个新的区块,相较于比特币平台每10分钟产生一个区块而言,对区块数据的更新效率的要求更高。当前以太坊平台的节点数量约在10万的数量级且在不断增长中,同时,交易量也随着区块链技术的普及而日益增长,从而导致每个区块的容量在可允许范围内不断增加,这给区块链的节点间的高效同步带来了极大的挑战。当前,以太坊系统网络层采用了基于dht(distributedhashtable,分布式哈希表)的kademeliap2p通信协议。dht是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个dht网络的寻址和存储。在该协议中,每个节点维护的路由表由17个buckets(桶)构成,每个bucket里包含了16个节点。路由表节点的总量不超过17*16个。节点在同步的过程中,会依次获取路由表中各个节点的区块数据中的区块链的td(totaldifficulty总难度)值,td值越高,代表节点所包含的区块链高度越高,即区块个数更多。之后根据各个节点的td值,从td值最大的节点处获取新的区块数据完成同步。在以太坊的通讯协议中,默认情况下,节点的路由表是根据节点id确定的,当节点的id一定时,节点的路由表大致相同。从而,在当前节点的相邻节点的网络状态不佳的情况下,如经常断网或者网络吞吐量有限的时候,经常会发生节点同步失败。而一旦同步失败,会使得当前节点的交易状态并非最新状态,从而带来极大的安全问题。因此需要对节点同步策略加以改进。技术实现要素:本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。改进区块链的节点同步策略,提供一种区块链的节点同步方法及装置。为了达到上述目的,根据本发明第一方面的实施例提出了一种区块链的节点同步方法,其包括:获取多个与待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,其中,所述待同步节点的异或节点是指:节点标识为所述待同步节点的节点标识的异或值的节点从所述候选节点中选择第一预定义数量的节点作为新增节点;根据所述新增节点的信息更新所述待同步节点的路由表,得到更新后的路由表;根据所述更新后的路由表对所述待同步节点进行同步。在一些实施例中,所述获取多个与待同步节点相临近的节点的信息,以及多个与待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,包括:向所述待同步节点的路由表中的各个节点发送查找节点请求,其中,所述查找节点请求包括:请求目标节点返回其路由表中,距离所述待同步节点最近的m个节点的信息,以及请求目标节点返回其路由表中,距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数;获取所述路由表中的各个节点返回的信息;根据所述路由表中的各个节点返回的信息,确定候选节点。在一些实施例中,向待同步节点的路由表中的各个节点发送查找节点请求,还包括:在开始发送查找节点请求后,进行计时;当计时结果达到第一预定义时长时,停止发送查找节点请求。在一些实施例中,所述获取多个与待同步节点相临近的节点的信息,以及多个与待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,包括:从所述待同步节点存储的,包含区块链系统的所有节点的全局路由表中,获取所有节点的信息,其中,所述全局路由表包括:区块链网络所有节点的节点标识、节点网际协议地址以及节点的当前状态信息;根据所述所有节点的信息,确定所有节点中距离所述待同步节点最近的m个节点的信息,以及距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数;将所述距离所述待同步节点最近的m个节点和距离所述待同步节点的异或节点最近的m个节点作为候选节点。在一些实施例中,所述方法还包括:每隔第二预定义时长,对所述全局路由表进行更新,获取最新的节点信息。在一些实施例中,所述从所述候选节点中选择第一预定义数量的节点作为新增节点,包括:根据各个所述候选节点中存储的区块链的总难度值,选择存储的区块链的总难度值最高的第一预定义数量的节点作为新增节点。在一些实施例中,所述根据更新后的路由表对待同步节点进行同步,包括:获取所述更新后的路由表的所有节点中存储的区块链的总难度值;将所述存储的区块链的总难度值最高的节点作为目标同步节点;根据所述目标同步节点对待同步节点的区块链数据进行同步。使用本发明的区块链的节点更新方法,相对于现有的节点更新方式,可以获取更多的节点信息,从更多的节点中选择最理想的节点来进行同步和进行路由表的更新,使同步的效果达到局部最优。从而能保证节点可以更快、更稳定地获取当前被确认或者分叉的交易,保证了账本记录的安全性和可靠性。同时,也使得节点路由表得以优化。为了达到上述目的,根据本发明第二方面的实施例提供了一种区块链的节点同步装置,其包括:候选节点获取模块,用于获取多个与待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,其中,所述待同步节点的异或节点是指:节点标识为所述待同步节点的节点标识的异或值的节点新增节点选择模块,从所述候选节点中选择第一预定义数量的节点作为新增节点;路由表更新模块,用于根据所述新增节点的信息更新所述待同步节点的路由表,得到更新后的路由表;节点同步模块,用于根据所述更新后的路由表对所述待同步节点进行同步。在一些实施例中,所述候选节点获取模块包括:节点发现单元,用于向所述待同步节点的路由表中的各个节点发送查找节点请求,其中,所述查找节点请求包括:请求目标节点返回其路由表中,距离所述待同步节点最近的m个节点的信息,以及请求目标节点返回其路由表中,距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数;信息接收单元,用于获取所述路由表中的各个节点返回的信息;候选节点确定单元,用于根据所述路由表中的各个节点返回的信息,确定候选节点。在一些实施例中,所述节点发现单元还用于:在开始发送查找节点请求后,进行计时;当计时结果达到第一预定义时长时,停止发送查找节点请求。在一些实施例中,所述区块链的节点同步装置还包括全局路由表,所述全局路由表包含区块链系统的所有节点,且存储有:区块链网络所有节点的节点标识、节点网际协议地址以及节点的当前状态信息;所述候选节点获取模块,包括:全局节点获取单元,用于从所述全局路由表中,获取所有节点的信息,临近节点计算单元,用于根据所述所有节点的信息,确定所述所有节点中距离所述待同步节点最近的m个节点的信息,以及距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数;候选节点确定单元,用于将所述距离所述待同步节点最近的m个节点和距离所述待同步节点的异或节点最近的m个节点确定为候选节点。在一些实施例中,所述的区块链的节点同步装置,还包括:全局路由表更新模块,用于每隔第二预定义时长,对所述全局路由表进行更新,获取最新的节点信息。在一些实施例中,新增节点选择模块所述从所述候选节点中选择第一预定义数量的节点作为新增节点,包括:根据各个所述候选节点中存储的区块链的总难度值,选择存储的区块链的总难度值最高的第一预定义数量的节点作为新增节点。在一些实施例中,所述节点同步模块根据更新后的路由表对待同步节点进行同步,包括:获取所述更新后的路由表的所有节点中存储的区块链的总难度值;将所述存储的区块链的总难度值最高的节点作为目标同步节点;根据所述目标同步节点对待同步节点的区块链数据进行同步。使用本发明的区块链的节点更新装置,相对于现有的节点更新方式,可以获取更多的节点信息,从更多的节点中选择最理想的节点来进行同步和进行路由表的更新,使同步的效果达到局部最优。从而能保证节点可以更快、更稳定地获取当前被确认或者分叉的交易,保证了账本记录的安全性和可靠性。同时,也使得节点路由表得以优化。为了实现上述目的,本发明第三方面实施例提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本发明第一方面所述的区块链的节点同步方法。为了实现上述目的,本发明第四方面实施例提供了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,实现根据本发明第一方面所述的区块链的节点同步方法。为了实现上述目的,本发明第五方面实施例提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现根据本发明第一方面所述的区块链的节点同步方法。根据本发明第三到五方面的非临时性计算机可读存储介质,计算机程序产品和计算设备具有与根据本发明第一和第二方面的区块链的节点同步方法和装置类似的有益效果,在此不再赘述。附图说明本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1是区块链系统的网络层通信方式示意图;图2是根据本发明实施例的区块链的节点同步方法的流程示意图;图3是根据本发明的实施例的路由表节点查询的返回结果示意图;图4是据本发明的实施例的候选节点选择示意图;图5是根据本发明实施例的区块链节点同步装置的结构框图;图6是根据本发明实施例的计算设备的结构示意图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。图1是区块链系统的网络通信方式示意图。其中各个节点200通过互联网连接。一般来说,区块链系统采用p2p网络技术连接各对等节点进行组网,从而形成去中心化的网络结构。例如,以太坊的区块链系统在网络层采用了基于dht(distributedhashtable,分布式哈希表)的kademeliap2p通信协议,实现节点之间的通信。dht协议中,每一个节点(node)都有一个全局的唯一标识“节点id”(ondeid)。作为去中心化的分布式网络结构,网络在无服务器的情况下,默认设置中,每个节点会维护自身的一个小范围路由表,根据节点的路由表进行节点同步和数据传输。例如,在以太坊的kademelia协议的设置中,每个节点维护的路由表由17个buckets(桶)构成,每个bucket里包含了16个节点。路由表节点的总量不超过17*16个。节点在同步的过程中,会依次获取路由表中各个节点的区块数据中的区块链的td(totaldifficulty总难度)值,td值越高,代表节点所包含的区块链高度越高,即区块个数更多。之后根据各个节点的td值,将td值最大的节点作为目标节点,从目标节点获取新的区块数据完成同步。当节点要初始化路由表时,会向根节点(bootnode)发起查询自身节点的请求,例如使用指令findenode(selfid,bootnode)。每当节点接收到findenode请求,会返回给询问发起节点离查询节点id最近的指定个数(例如,m=16*17个)节点的信息。即在初始化阶段,节点可以从根节点中发现离自身最近的m个节点,并将所述m个节点作为路由表中的节点。在kademelia协议中,两个节点之间的距离定义为:根据节点的id,采用xor异或计算两个节点id的异或值,并转换为一个无符号整数。例如,对于节点id分别为a和b的两个,节点距离可以描述为:distance(a,b)=|axorb|,并且距离越小表示两个节点越接近。因此,一旦节点id确定,据此计算的临近节点构成的路由表将很少变化。而如果当前节点的相邻节点的网络状态不佳时,如经常断网或者网络吞吐量有限时候,经常出现同步失败问题。一旦同步失败,会使得当前节点的交易状态并非最新状态,从而带来极大的安全问题。针对现有节点同步方式在同步过程中存在的不稳定和效率低的问题,本发明提出了一种基于扩大查询的节点范围,动态更新路由表的区块链同步方法。通过获取距离当前节点或者当前节点的异或节点最近的节点,从中选择合适的节点来更新路由表,如此,从更多的节点中选择最佳的节点用于同步,从而实现同步节点选择的局部最优。下面参考附图对本发明实施例的区块链同步方法和装置进行详细的说明。在区块链的一个新节点启动时,该节点会连接区块链的初始根节点(bootnodes),从初始根节点获取一个初始化路由表。例如,以太坊区块链的新节点启动时,初始根节点可采用太坊官方提供的节点,如节点:"enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303")。具体地,根据kademelia协议规定,节点在初始化路由表的时候,会向bootnode发起查询自身节点的请求。例如,使用findenode(selfid,bootnode)命令。而当目标节点接收到findenode请求时,会返回给发起询问的查询节点离所述查询节点id最近的指定数量的节点的信息。即在初始化阶段,节点可以从bootnode中发现离自身最近的若干个节点。一般这个节点数量可以是10个、15个等等。路由表在初始化后,由各个节点自己维护,可以不断地向其中加入好的节点或去除坏的节点。具体的方式参见现有技术中区块链的相关文献,在此不再赘述。初始化之后,每次节点需要同步时,会从自身的路由表的节点中,选择td值(节点存储的区块链的总难度值)最大的节点,作为目标节点,根据目标节点进行区块链信息的同步。根据kademelia协议,节点默认的路由表所含的节点数最多为16*17=272个,且节点id一定时,路由表中的节点变化很小。而随着区块链系统节点数量的增加,例如以太坊区块链节点数已经达到10万的数量级,还在增加中,仅查询路由表中的节点的td值来进行节点同步,将给同步效率带来的局限,无法及时获得最新被确认交易或者是分叉的交易。因此,本发明对路由表的更新策略和同步节点的选择机制进行了改进。从更多的节点集合中获取td值最大的节点进行同步。图2是根据本发明实施例的区块链的节点同步方法的流程示意图。其中,区块链的节点同步方法包括步骤s110到s140。在步骤s110,获取多个与待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,其中,所述待同步节点的异或节点是指:节点标识为所述待同步节点的节点标识的异或值的节点。其中,所述临近的节点,是从kademelia协议和dht的体系中,两个节点之间的距离的定义角度来考虑的。节点之间的距离越小,则表示两个节点越接近。在区块链领域,论及节点的距离时,一般均是采用根据上述的根据节点id的异或运算结果确定的节点之间的距离。因此,在本公开中,若无特殊说明,则所有的节点之间的距离,均是采用kademelia协议和dht的体系中关于节点距离的定义,即按照节点id异或运算确定的距离。在一些实施例中,所述多个与所述待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,可以通过待同步节点的路由表中的各个节点来获取。具体地,可以向所述待同步节点的路由表中的各个节点发送查找节点请求,其中,所述查找节点请求包括:请求目标节点返回其路由表中,距离所述待同步节点最近的m个节点的信息,以及请求目标节点返回其路由表中,距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数。例如,使用命令:findenode(selfid,node)&findenode(0xff…ff^selfid,node)来查询节点。关于目标节点返回的距离最近的节点数m,可以采用kademelia协议的默认值,或者该协议也提供了相应的命令,由用户自定义,本发明对此没有限制。以现有的以太坊网络为例,m可以取10~100这个数量级的数值,以获得较好的效果。随着网络节点数和其它运行情况的改变,m可以按需调节。节点同步是按照一定周期进行的,因此,每次同步中,用于本步骤的时间也是有限的。所以,在开始发送查找节点请求后,可以进行计时;当计时结果达到第一预定义时长时,停止发送查找节点请求。之后,获取所述路由表中的各个节点返回的信息,根据返回的信息,确定候选节点。由于每个被查询的路由表的节点将返回2m个节点的信息,因此,一般来说,获取的返回节点总数,将远大于本地路由表中的节点上限,即272个。图3是根据本发明的实施例的路由表节点查询的返回结果示意图。其中,纵坐标是返回的节点数,横坐标是时间,单位秒。从图3可见,在161秒时,返回的节点已经超过1000个。这些节点可以作为候选节点,对候选节点的进一步处理,将在下文结合步骤s120进行详细说明。除了通过查询路由表的节点,在一些实施例中,所述多个与所述待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,可以通过从所述待同步节点存储的,包含区块链系统的所有节点的全局路由表来实现。具体地,可从所述待同步节点存储的,包含区块链系统的所有节点的全局路由表中,获取所有节点的信息。其中,所述全局路由表包括:区块链网络所有节点的节点标识、节点网际协议地址以及节点的当前状态信息。根据所述所有节点的信息,确定所有节点中距离所述待同步节点最近的m个节点的信息,以及距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数。将所述距离待同步节点最近的m个节点和距离待同步节点的异或节点最近的m个节点作为候选节点。所述全局路由表可以由待同步节点自己维护。为了保证其数据的及时性和有效性,可以每隔第二预定义时长,对所述全局路由表进行更新,获取最新的节点信息。存储和维护全局路由表,会给节点带来额外的存储和运算成本,但是从全局路由表获取临近节点只需简单的布尔运算,用存储和计算能力换来同步的稳定性,减少同步慢等异常情况。并且由于是从全局路由表中获得待同步节点(及其异或节点)的临近节点,相比于查询节点路由表获得的返回数据,更容易获得最优解和稳定的更新,并且可以省去等待返回数据的时间。具体采用何种方式实现,可以根据节点的存储能力、算力,以及对于更新效率和成本的综合考虑来选择。在步骤s120,从所述候选节点中选择第一预定义数量的节点作为新增节点。在步骤s110可以获取大量的候选节点,但是,如果根据所有的候选节点进行节点同步,则会带来内存和网络端口、带宽的消耗,因此需要进行剪枝,从中选择一部分的节点作为路由表的新增节点。图4是据本发明的实施例的候选节点选择示意图。其中,示出了节点获取的候选节点的节点信息的视图。包每个节点的节点标识(_id),ip地址(ip),节点名称(name),协议类型(protocol),以及节点存储的区块链的总难度值(td)。可根据路由表中每个节点的区块链高度,保留高度最高的若干个节点在路由表中。由于区块链的高度与区块链的总难度是正相关的(区块链的总难度值等于区块链中所有区块的难度之和),区块高度越高,td值越大。因此,可根据各个候选节点中存储的区块链的总难度值,选择存储的区块链的总难度值最高的第一预定义数量的节点作为新增节点。在步骤s130,根据所述新增节点的信息更新所述待同步节点的路由表,得到更新后的路由表。获取新增节点后,可以根据新增节点对待同步节点的路由表进行更新。路由表的具体更新方式,可以根据相关技术中kademelia协议和dht中关于路由表其中的buckets更新的相关规定来具体实现,本发明对此不加限制。在步骤s140,根据所述更新后的路由表对所述待同步节点进行同步。其中,最直接的方式,即是根据路由表中各个节点的td值,来选择用于同步的目标节点。获取所述更新后的路由表的所有节点中存储的区块链的总难度值;将所述存储的区块链的总难度值最高的节点作为目标同步节点;根据所述目标同步节点对待同步节点的区块链数据进行同步。在一些,实施例中,也可以综合其它相关因素来选择用于同步的节点。例如,可对获取待同步节点的路由表中的各个节点的数据吞吐量历史数据、同步成功率历史数据以及存储的区块链的总难度,根据所述数据吞吐量历史数据、同步成功率历史数据和区块链的总难度值确定路由表中各个节点的可信度;根据所述各个节点的可信度,选择用于同步的目标节点,根据目标节点存储的区块链数据对待同步节点进行同步。使用本发明的区块链的节点更新方法,相对于现有的节点更新方式,可以获取更多的节点信息,从更多的节点中选择最理想的节点来进行同步和进行路由表的更新,使同步的效果达到局部最优。从而能保证节点可以更快、更稳定地获取当前被确认或者分叉的交易,保证了账本记录的安全性和可靠性。同时,也使得节点路由表得以优化。为了实现上述第一方面实施例中的方法,本发明第二方面的实施例提出了一种区块链的节点同步装置。所述装置的实现可包括一个或多个计算设备,所述计算设备包括处理器和存储器,所述存储器上存储有包括可在所述处理器上运行的计算机程序指令的应用程序。所述应用程序可以划分为多个程序模块,用于系统各个组成部分的相应功能。其中,程序的模块的划分是逻辑上的而非物理上的,每个程序模块可以运行在一个或多个计算设备上,一个计算设备上也可以运行一个或一个以上的程序模块。以下对本发明的系统/装置按照程序模块的功能逻辑划分进行详细说明。图5是根据本发明实施例的区块链的节点同步装置结构框图。根据本发明的区块链的节点同步装置100可以包括候选节点获取模块110,新增节点选择模块120,路由表更新模块130和节点同步模块140。其中,所述区块链的节点同步装置100可以采用包括处理器和存储器的计算设备实现,所述存储器中存储有可被所述处理器执行的程序模块,各个程序模块被执行时,控制所述计算设备实现相应的功能。例如,根据本发明的装置100可以包括候选节点获取模块110,新增节点选择模块120,路由表更新模块130和节点同步模块140可以实现为这样的程序模块。候选节点获取模块110,用于获取多个与待同步节点相临近的节点的信息,以及多个与所述待同步节点的异或节点相临近的节点的信息,根据获取的节点的信息确定候选节点,其中,所述待同步节点的异或节点是指:节点标识为所述待同步节点的节点标识的异或值的节点。在一些实施例中,所述候选节点获取模块可包括:节点发现单元、信息接收单元,以及候选节点确定单元。节点发现单元,用于向所述待同步节点的路由表中的各个节点发送查找节点请求,其中,所述查找节点请求包括:请求目标节点返回其路由表中,距离所述待同步节点最近的m个节点的信息,以及请求目标节点返回其路由表中,距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数。节点发现单元可在开始发送查找节点请求后,进行计时;当计时结果达到第一预定义时长时,停止发送查找节点请求。信息接收单元,用于获取所述路由表中的各个节点返回的信息。候选节点确定单元,用于根据所述路由表中的各个节点返回的信息,确定候选节点。在另一些实施例中,所述区块链的节点同步装置还包括全局路由表,所述全局路由表包含区块链系统的所有节点,且存储有:区块链网络所有节点的节点标识、节点网际协议地址以及节点的当前状态信息。所述候选节点获取模块,包括:全局节点获取单元,临近节点计算单元,以及候选节点确定单元。全局节点获取单元,用于从所述全局路由表中,获取所有节点的信息。临近节点计算单元,用于根据所述所有节点的信息,确定所有节点中距离所述待同步节点最近的m个节点的信息,以及距离所述待同步节点的异或节点最近的m个节点的信息;m为预定义的正整数。候选节点确定单元,用于将所述距离所述待同步节点最近的m个节点和距离所述待同步节点的异或节点最近的m个节点确定为候选节点。所述节点同步装置还可以包括全局路由表更新模块,用于每隔第二预定义时长,对所述全局路由表进行更新,获取最新的节点信息。新增节点选择模块120,从所述候选节点中选择第一预定义数量的节点作为新增节点。其中,所述新增节点选择模块所述从所述候选节点中选择第一预定义数量的节点作为新增节点,可包括:根据各个候选节点中存储的区块链的总难度值,选择存储的区块链的总难度值最高的第一预定义数量的节点作为新增节点。路由表更新模块130,用于根据所述新增节点的信息更新所述待同步节点的路由表,得到更新后的路由表。节点同步模块140,用于根据所述更新后的路由表对所述待同步节点进行同步。所述节点同步模块根据更新后的路由表对待同步节点进行同步,可包括:获取所述更新后的路由表的所有节点中存储的区块链的总难度值;将所述存储的区块链的总难度值最高的节点作为目标同步节点;根据所述目标同步节点对待同步节点的区块链数据进行同步。本发明区块链的节点同步装置中的各个模块的功能和作用的实现过程具体详情可参见上述方法中对应步骤的实现过程。对于装置实施例而言,由于其基本对应于方法实施例,前述对本发明的方法实施例的解释说明也适用于本发明的装置实施例。为避免冗余,在装置实施例中将不会对所有细节进行重复,相关未尽之处可参见上述结合图1到图4对本发明区块链的节点同步方法实施例的相关描述。使用本发明的区块链的节点更新装置,相对于现有的节点更新方式,可以获取更多的节点信息,从更多的节点中选择最理想的节点来进行同步和进行路由表的更新,使同步的效果达到局部最优。从而能保证节点可以更快、更稳定地获取当前被确认或者分叉的交易,保证了账本记录的安全性和可靠性。同时,也使得节点路由表得以优化。本发明第三方面的实施例提出了一种非临时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令在处理器上运行时,实现如本发明第一方面实施例所述的区块链的节点同步方法。该存储介质可以作为设备的一部分设置在其上;或者当该设备可以被服务器远程控制时,该存储介质可以设置在对该设备进行控制的远程服务器上。用于实现本发明方法的计算机指令的可以采用一个或多个计算机可读的介质的任意组合来承载。所谓非临时性计算机可读介质可以包括任何计算机可读介质,除了临时性地传播中的信号本身。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。本发明第四方面的实施例提供了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,实现根据本发明第一方面实施例所述的区块链的节点同步方法。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。本发明第五方面实施例提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现根据本发明第一方面所述的区块链的节点同步方法。图6示出了适于用来实现本公开实施方式的示例性计算设备的框图。图6显示的计算设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图6所示,计算设备12可以通用计算设备的形式实现。计算设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture;以下简称:isa)总线,微通道体系结构(microchannelarchitecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation;以下简称:vesa)局域总线以及外围组件互连(peripheralcomponentinterconnection;以下简称:pci)总线。计算设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory;以下简称:ram)30和/或高速缓存存储器32。计算设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性的计算机可读存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compactdiscreadonlymemory;以下简称:cd-rom)、数字多功能只读光盘(digitalvideodiscreadonlymemory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。计算设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(localareanetwork;以下简称:lan),广域网(wideareanetwork;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算设备12的其它模块通信。要说明的是,尽管图中未示出,可以结合计算设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。根据本发明第三到五方面的非临时性计算机可读存储介质,计算机程序产品和计算设备,可以参照根据本发明第一方面实施例具体描述的内容实现,并具有与根据本发明第一方面的区块链的节点同步方法类似的有益效果,在此不再赘述。需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,例如两个,三个等,除非另有明确具体的限定。本
技术领域
:的普通技术人员可以理解实现上述实施例的方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。在本说明书的描述中,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属
技术领域
:的技术人员所理解。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一个实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1