CN112287031A - 区块链***的数据同步方法、装置、可读介质及电子设备 - Google Patents
区块链***的数据同步方法、装置、可读介质及电子设备 Download PDFInfo
- Publication number
- CN112287031A CN112287031A CN202011473334.2A CN202011473334A CN112287031A CN 112287031 A CN112287031 A CN 112287031A CN 202011473334 A CN202011473334 A CN 202011473334A CN 112287031 A CN112287031 A CN 112287031A
- Authority
- CN
- China
- Prior art keywords
- nodes
- synchronized
- block
- node
- height
- 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
Links
Images
Classifications
-
- 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
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施例提供了一种区块链***的数据同步方法、装置、可读介质及电子设备,该方法包括:获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。本申请实施例的技术方案有效解决了数据同步的冷启动问题,使得区块链***的数据同步过程更加灵活与稳定。
Description
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种区块链***的数据同步方法、装置、可读介质及电子设备。
背景技术
随着区块链技术的不断发展,在区块链平台上,各个节点之间相互连接,且各个节点之间可以相互拉取区块数据,然而各个节点之间拉取区块数据都是按照区块高度的顺序依次进行拉取,这样的方式存在一定缺陷。
发明内容
本申请的实施例提供了一种区块链***的数据同步方法、装置、可读介质及电子设备,进而在一定程度上有效解决了数据同步的冷启动问题,使得区块链***的数据同步过程更加灵活与稳定。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种区块链***的数据同步方法,包括:获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。
根据本申请实施例的一个方面,提供了一种区块链***的数据同步装置,包括:第一获取单元,配置为获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;统计单元,配置为根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;第一确定单元,配置为根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;第一同步单元,配置为按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。
在本申请的一些实施例中,基于前述方案,所述第一确定单元配置为:基于所述待同步区块的同步优先级与所述待同步区块对应的节点数量之间的反相关关系,确定所述多个待同步区块高度的同步顺序。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第二获取单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则获取所述多个节点之外的目标节点对应的缓冲映射表;第一重新确定单元,配置为根据所述多个节点分别对应的缓冲映射表以及所述目标节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,基于前述方案,所述第二获取单元还配置为:获取除所述多个节点之外的第一节点对应的缓冲映射表;根据所述第一节点对应的缓冲映射表,确定所述第一节点是否存储了所述目标待同步区块高度的区块体数据;若确定所述第一节点未存储所述目标待同步区块高度的区块体数据,则重新获取其它节点对应的缓冲映射表,直至确定出所述目标节点为止,其中所述目标节点中存储了所述目标待同步区块高度的区块体数据。
在本申请的一些实施例中,基于前述方案,所述第一重新确定单元还配置为:在重新确定所述各个待同步区块高度对应的节点数量之后,若重新确定出的所述目标待同步区块高度对应的节点数量依然为零,则重新获取除所述多个节点以及所述目标节点之外的第二节点对应的缓冲映射表;根据所述多个节点分别对应的缓冲映射表以及所述第二节点对应的缓冲映射表,再次重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第三获取单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;第二重新确定单元,配置为根据所述多个节点分别对应的缓冲映射表以及所述指定节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第二确定单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则根据除所述目标待同步区块高度以外的其它待同步区块高度对应的节点数量,确定所述其它待同步区块高度的同步顺序;第二同步单元,配置为按照所述其它待同步区块高度的同步顺序,对所述其它待同步区块高度分别对应的区块体数据进行同步。
在本申请的一些实施例中,基于前述方案,所述区块链***包括业务节点子网络和记账节点子网络,所述装置设置在所述业务节点子网络中的目标业务节点中,所述相关联的多个节点为所述业务节点子网络中与所述目标业务节点相关联的多个业务节点,所述装置还包括:第四获取单元,配置为从所述记账节点子网络中获取所述目标待同步区块高度对应的区块体数据。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第五获取单元,配置为获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;第六获取单元,配置为从所述指定节点中获取所述目标待同步区块高度对应的区块体数据。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第七获取单元,配置为获取能够连接到的节点分别对应的缓冲映射表的大小;根据所述能够连接到的节点分别对应的缓冲映射表的大小,选择单元,配置为从所述能够连接到的节点中选择所述相关联的多个节点。
在本申请的一些实施例中,基于前述方案,所述选择单元配置为:根据所述能够连接到的节点分别对应的缓冲映射表的大小,从所述能够连接到的节点中选择所述缓冲映射表的大小超过第一预设阈值的节点,作为所述相关联的多个节点。
在本申请的一些实施例中,基于前述方案,所述区块链***包括业务节点子网络和记账节点子网络,所述装置设置在所述业务节点子网络中的目标业务节点中,所述装置还包括:第八获取单元,配置为从所述记账节点子网络中获取缓冲映射表的大小超过第二预设阈值的业务节点的路由信息;建立单元,配置为根据所述业务节点的路由信息建立与所述业务节点的连接。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的区块链***的数据同步方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的区块链***的数据同步方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的区块链***的数据同步方法。
在本申请的一些实施例所提供的技术方案中,通过统计存储了各个待同步区块高度的区块体数据的节点数量,得到各个待同步区块高度对应的节点数量,然后根据各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序,进而按照多个待同步区块高度的同步顺序,对多个待同步区块高度分别对应的区块体数据进行同步。本申请实施例的技术方案通过统计存储有各个待同步区块高度的区块体数据的节点数量,然后根据节点数量确定出同步顺序,相比于直接按照区块高度的顺序进行依次拉取的方式,本申请实施例的技术方案有效解决了数据同步的冷启动问题,使得区块链***的数据同步过程更加灵活与稳定。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了区块链网络的结构示意图。
图2示出了区块链中各区块的连接关系示意图。
图3示出了生成一个区块的过程示意图。
图4A至图4C示出了本申请实施例所应用的区块链***的体系构架图。
图5示出了根据本申请的一个实施例的电子******的示意图。
图6示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图7示出了根据本申请的一个实施例的相关联的多个节点分别对应的缓冲映射表的示意图。
图8示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图9示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图10示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图11示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图12示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图13示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图。
图14示出了根据本申请的一个实施例的区块链***的数据同步装置的框图。
图15示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
需要说明的是,本申请的说明书和权利要求书及上述附图中使用的术语仅用于描述实施例,并不旨在限制本申请的范围。应该理解的是,术语“包括”、“包含”、“具有”等在本文中使用时指定存在所陈述的特点、整体、步骤、操作、元件、组件和/或其群组,但并不排除存在或添加其他特点、整体、步骤、操作、元件、组件和/或其群组中的一个或多个。
将进一步理解的是,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,在不脱离本发明的范围的情况下,第一元件可以被称为第二元件。类似地,第二元件可以被称为第一元件。如本文所使用的,术语“和/或”包含关联的列出的项目中的一个或多个的任何和所有组合。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(即区块),每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
参见图1所示的区块链网络,该区块链网络中可以包括多个节点101,多个节点101可以是形成区块链网络的各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络内的共享数据。为了保证区块链网络内的信息互通,区块链网络中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当区块链网络中的任意节点接收到输入信息时,区块链网络中的其它节点便根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有其它节点的节点标识,以便后续根据其它节点的节点标识,将生成的区块广播至区块链网络中的其它节点。每个节点中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2所示,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值等,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值等,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图3所示,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享***中其它节点的节点标识,将新生成的区块分别发送给其所在的数据共享***中的其它节点,由其它节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
区块链网络中各个节点可以是服务器,也可以是终端设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算(Cloud Computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。各个节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
前述的云计算是指IT基础设施的交付和使用模式,具体指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing )、分布式计算(Distributed Computing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
基于区块链技术,本申请的实施例提出了一种区块链***的体系架构。如图4A所示,该区块链***包括记账节点子网络2和业务节点子网络1。记账节点子网络2包括对区块数据进行共识并将区块数据记录到区块链上的记账节点,业务节点子网络1包括业务节点,业务节点可以对记账节点记录到区块链上的数据区块进行验证,或者可以向记账节点请求相应的交易数据进行同步。
在本申请的一个实施例中,记账节点子网络2和业务节点子网络1之间可以通过代理节点10连接,代理节点10可以是业务节点子网络1的一个业务节点,其负责将记账节点21要向业务节点11传递的信息传递给业务节点11。业务节点11是产生各种需上链的交易数据的交易方的终端,也可以是从记账节点网络2中查询交易数据的终端。业务节点11产生的交易数据在通过代理节点10传输至记账节点21,然后经过共识后记录到区块链上,有利于交易数据的统一处理和监管,而业务节点11也可以通过记账节点21经由代理节点10发送来的信息进行交易数据上链的监督和见证,这在某些既需要统一监管、但又怕监管的节点集体作弊因而需要监督的场景中有十分重要的意义。
在图4A所示的结构中,业务节点网络1采用P2P(Peer to Peer,对等网络)网络模式。P2P网络是一种在对等者之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式,即“点对点”或者“端对端”网络。其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者,又是资源、服务和内容的获取者。因此在业务节点子网络1中,当代理节点10接收到从记账节点21传递过来的消息后,向周围的业务节点11进行传播,周围的业务节点11接收到该消息,再向其周围的业务节点11传递,达到了该消息在业务节点子网络1的每个业务节点11之间的传播。
图4B示出了本申请实施例所应用的另一种区块链***的体系构架。该体系构架与图4A中所示的体系构架不同之处在于:在业务节点子网络1中没有采取P2P网络模式,而是采取广播网络的模式。具体地,代理节点10在接收到从记账节点21传递过来的消息后,将该消息广播到业务节点子网络1中的其它业务节点11。这样,也实现了该消息在业务节点网络1的每个业务节点11之间的传播。
图4C示出了本发明实施例所应用的另一种区块链***的体系构架。该体系构架与图4A所示的体系构架不同之处在于:其记账节点子网络2分成了多个分支记账节点网络。每个分支记账节点网络可以负责某一种类型的交易信息的记录。例如,某一企业可能具有供应链金融业务,可能需要将供销过程中产生的合同信息、货款赊欠等信息记录到区块链上,同时该企业还要开具***,也要把开票信息、***报销信息等记录到区块链上。这时,为了有利于记账节点被同一部门监管的需要,可能记录供应链金融业务交易的记账节点和记录***流转过程中的交易的记账节点要分属于不同部门。例如,记录供应链金融业务交易的记账节点是银行设置的记账终端,而记录***流转过程中的交易的记账节点是国税局设置的记账终端。而供应链金融业务交易和记录***流转过程中的交易可能也最终会记录在不同分支的记账节点网络上。
需要说明的是,在图4A至图4C所示的区块链***的体系构架中,代理节点10位于业务节点子网络1中,在本申请的其它实施例中,代理节点10也可以位于记账节点子网络2中,或者独立于业务节点子网络1和记账节点子网络2。
图4A至4C所示的区块链***的体系架构可以应用在电子***的应用场景中,以下详细进行阐述:
在本申请的一个实施例中,记账节点子网络中的记账节点可以是各个税务总局终端,比如由部署在多个地区的税务总局终端分别作为一个记账节点来构成记账节点子网络。业务节点子网络中的各个业务节点可以是地方税局终端、开票代理服务商终端、开票企业终端、个人用户终端等。
具体而言,在图5所示的电子******中,可以包括业务层、路由代理层和共识网络(记账网络)层。其中,业务层即为业务节点子网络,其中包含了各个业务节点,比如可以是处于税务专网中的地方税局;处于公有云中的开票服务商、报销服务商、企业等;处于私有云中的支付服务商、流转服务商、企业等。
路由代理层中包含了代理节点,代理节点提供了路由服务、证书缓存和认证服务、P2P服务等功能,路由代理层起到对业务层和共识网络层的隔离作用,具体参照前述实施例的技术方案。可选地,路由代理层中的代理节点可以处于税务专网中。共识网络(记账网络)层即为记账节点网络,其中包含了多个区块链,当然在本申请的其它实施例中,共识网络(记账网络)层中也可以包含一个区块链。
在本申请的一个实施例中,为了实现业务之间的同步,本申请实施例中提出了数据同步的方案,以下对本申请实施例的技术方案的实现细节进行详细阐述:
图6示出了根据本申请的一个实施例的区块链***的数据同步方法的流程图,参照图6所示,该区块链***的数据同步方法包括:
步骤S610、获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;
步骤S620、根据多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到各个待同步区块高度对应的节点数量;
步骤S630、根据各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;
步骤S640、按照多个待同步区块高度的同步顺序,对多个待同步区块高度分别对应的区块体数据进行同步。
下面对这些步骤进行详细描述。
在步骤S610中,获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据。
具体地,本实施例以区块链网络中的任意一个节点作为执行主体为例进行说明,该节点可以是区块链网络中的任意一个轻量节点(即SPV节点),也可以是区块链网络中的任意一个共识节点,还可以是区块链网络中除共识节点之外的任意一个节点。
作为执行主体的节点可以为一个计算机设备,该计算机设备可以是服务器或者终端设备等,且作为执行主体的节点对应的服务器的个数或者终端设备的个数根据实际应用场景决定,对此不做限制。
区块链网络中除了可以有作为执行主体的节点之外,还可以包括与作为执行主体的节点相互连接的多个节点,作为执行主体的节点和多个节点之间可以相互拉取区块数据。其中,区块数据可以包括区块中的区块头数据,还可以包括区块体数据,区块体数据是区块中所有业务数据以及区块中所有业务数据的哈希值。
作为执行主体的节点可以拉取到全部区块头数据,然而并不意味着作为执行主体的节点不存在缺失的区块体数据,例如,作为执行主体的节点拉取了区块高度1-100的区块头数据,则表明原理上作为执行主体的节点应该有区块高度为1到100的区块体数据,然而,此种情况的实际场景中,可能会存在拉取时缺失的区块体数据,例如作为执行主体的节点并未拉取到区块高度为50的区块体数据,则缺失的区块体数据就为区块高度为50的区块体数据。
针对上述作为执行主体的节点中存在缺失的区块体数据的问题,本实施例提出了一种区块链***的数据同步方法,在本实施例中,作为执行主体的节点可以首先获取相关联的多个节点分别对应的缓冲映射表,比如如图7所示的目标节点相关联的多个节点分别对应的缓冲映射表,多个节点分别为节点1、节点2、节点3、节点4和节点5,节点1、节点2、节点3、节点4和节点5分别维护着各自的缓冲映射表,缓冲映射表用于记录是否存储了各个区块高度的区块体数据,其中,数字“1”表示存储了区块体数据,数字“0”表示没有存储区块体数据。从节点1对应的缓冲映射表可以看出节点1在区块高度1、区块高度2、区块高度3、区块高度5、区块高度8和区块高度9存储了区块体数据。
在步骤S620中,根据多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到各个待同步区块高度对应的节点数量。
进一步,作为执行主体的节点在获取到多个节点分别对应的缓冲映射表后,可以根据各个缓冲映射表统计存储了各个待同步区块高度的区块体数据的节点数量,得到各个待同步区块高度对应的节点数量。其中,各个待同步区块高度是指作为执行主体的节点缺失区块体数据的区块高度。
举例说明,假设作为执行主体的节点存在区块体数据缺失的区块高度(也即存在待同步区块高度),分别为待同步区块高度3、待同步区块高度5、待同步区块高度6和待同步区块高度9,作为执行主体的节点相关联的多个节点为图7所示的节点1、节点2、节点3、节点4、节点5,则根据图7所示的多个节点的缓冲映射表可以统计得到待同步区块高度3对应的节点数量为1,待同步区块高度5对应的节点数量为2,待同步区块高度6对应的节点数量为4,待同步区块高度9对应的节点数量为3。
在步骤S630中,根据各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序。
更进一步,在统计得到各个待同步区块高度对应的节点数量之后,则可以确定多个待同步区块高度的同步顺序。
在本申请的一个实施例中,作为执行主体的节点可以基于待同步区块的同步优先级与待同步区块对应的节点数量之间的反相关关系,确定多个待同步区块高度的同步顺序。也即是,待同步区块对应的节点数量越大,待同步区块的同步优先级越小,同步顺序越靠后。
继续以步骤S620中的举例说明,由于待同步区块高度3、待同步区块高度5、待同步区块高度6和待同步区块高度9对应的节点数量分别为1,2,4,3,因此,根据节点数量与同步优先级的反相关关系可以确定出同步顺序为待同步区块高度3>待同步区块高度5>待同步区块高度9>待同步区块高度6。
在步骤S640中,按照多个待同步区块高度的同步顺序,对多个待同步区块高度分别对应的区块体数据进行同步。
在确定出多个待同步区块高度的同步顺序之后,作为执行主体的节点则可以按照多个待同步区块高度的同步顺序,从对应的节点拉取区块体数据,实现对多个待同步区块高度分别对应的区块体数据的同步。
例如,在上述步骤的举例中,对于待同步区块高度5,由于节点2、节点3、节点4和节点5均存储了区块高度5对应的区块体数据,因此,作为执行主体的节点可以从节点2、节点3、节点4和节点5中任意一个节点拉取区块体数据。
基于以上实施例的技术方案,通过统计存储有各个待同步区块高度的区块体数据的节点数量,然后根据节点数量确定出同步顺序,相比于直接按照区块高度的顺序进行依次拉取的方式,本申请实施例的技术方案有效解决了数据同步的冷启动问题,使得区块链***的数据同步过程更加灵活与稳定。
在本申请的一个实施例中,如果出现确定出的目标待同步区块高度对应的节点数量为零的情况,则作为执行主体的节点可以重新确定各个待区块高度对应的节点数量,如图8所示,具体可以包括步骤S810-步骤S820,详细说明如下:
步骤S810、若确定出的目标待同步区块高度对应的节点数量为零,则获取多个节点之外的目标节点对应的缓冲映射表。
具体而言,如果作为执行主体的节点根据多个节点分别对应的缓冲映射表,确定目标待同步区块高度对应的节点数量为零,则说明多个节点都没有存储目标待同步区块高度的区块体数据,此种情形下为了实现对目标待同步区块高度对应的区块体数据的同步,则作为执行主体的节点可以获取多个节点之外的目标节点对应的缓冲映射表。
可以理解的是,区块链网络中除了作为执行主体的节点,以及与作为执行主体的节点相关联的多个节点,还包括其他节点,因此,在根据多个节点分别对应的缓冲映射表,确定目标待同步区块高度对应的节点数量为零时,可以获取多个节点之外的目标节点对应的缓冲映射表,其中,目标节点对应的缓冲映射表用于记录目标节点是否存储了各个区块高度的区块体数据。
步骤S820、根据多个节点分别对应的缓冲映射表以及目标节点对应的缓冲映射表,重新确定各个待同步区块高度对应的节点数量。
作为执行主体的节点在获取到目标节点对应的缓冲映射表之后,由于目标节点对应的缓冲映射表记录了目标节点是否存储了各个区块高度的区块体数据,因此,作为执行主体的节点可以根据多个节点分别对应的缓冲映射表以及目标节点对应的缓冲映射表,统计存储了各个待同步高度的区块体数据的节点数量,重新得到各个待同步区块高度对应的节点数量。
在本申请的一个实施例中,如果重新得到的各个待同步区块高度对应的节点数量中仍然存在目标待同步区块高度对应的节点数量为零的情况,也即说明在目标节点中没有存储目标待同步区块高度对应的区块体数据,这样一来,作为执行主体的节点便无法完成对目标待同步区块高度的数据同步,因此,作为执行主体的节点可以再次执行获取缓冲映射表+重新确定节点数量的操作,在该实施例中,如图9所示,在该实施例中,可以具体包括步骤S910-步骤S920,现详细说明如下:
步骤S910、若重新确定出的目标待同步区块高度对应的节点数量依然为零,则重新获取除多个节点以及目标节点之外的第二节点对应的缓冲映射表。
在该实施例中,如果重新确定出的目标待同步区块高度对应的节点数量依然为零,则作为执行主体的节点可以重新获取多个节点以及目标节点之外的第二节点对应的缓冲映射表,第二节点对应的缓冲映射表记录了第二节点是否存储了各个区块高度的区块体数据。
步骤S920、根据多个节点分别对应的缓冲映射表以及第二节点对应的缓冲映射表,再次重新确定各个待同步区块高度对应的节点数量。
进一步,作为执行主体的节点在获取到第二节点对应的缓冲映射表后,可以再次重新确定各个待同步区块高度对应的节点数量。
在该实施例中,如果再次重新确定的目标待同步区块高度对应的节点数量依然为零,则作为执行主体的节点还可以反复执行获取缓冲映射表+重新确定节点数量的操作,直至最后确定的目标待同步区块高度对应的节点数量不为零。
在上述实施例中,由于作为执行主体的节点每次反复执行都包含了获取缓冲映射表+重新确定节点数量两个操作,在本申请的一个实施例中,为了进一步提高同步效率,作为执行主体的节点可以不必反复执行获取缓冲映射表+重新确定节点数量两个操作,而是只需要反复执行获取缓冲映射表一个操作即可,如图10所示,在该实施例中,具体可以包括步骤S1010-步骤S1030,详细说明如下:
步骤S1010、获取除多个节点之外的第一节点对应的缓冲映射表。
具体地,如果作为执行主体的节点根据多个节点分别对应的缓冲映射表,确定目标待同步区块高度对应的节点数量为零,则作为执行主体的节点可以首先获取多个节点之外的第一节点对应的缓冲映射表。
其中,第一节点是区块链网络中除作为执行主体的节点以及与作为执行主体的节点相关联的多个节点之外的其它节点,第一节点对应的缓冲映射表用于记录第一节点是否存储了各个区块高度的区块体数据。
步骤S1020、根据第一节点对应的缓冲映射表,确定第一节点是否存储了目标待同步区块高度的区块体数据。
进一步,由于目标待同步区块高度对应的节点数量为零,则说明多个节点都没有存储目标待同步区块高度的区块体数据,此种情形下为了实现对目标待同步区块高度对应的区块体数据的同步,作为执行主体的节点在通过步骤S1010获取多个节点之外的第一节点对应的缓冲映射表后,接下来则可以根据第一节点对应的缓冲映射表,确定第一节点是否存储了目标待同步区块高度的区块体数据。
若确定出第一节点存储了目标待同步区块高度的区块体数据,则说明可以实现对目标待同步区块高度对应的区块体数据的同步,若确定出第一节点没有存储目标待同步区块高度的区块体数据,则说明无法实现对目标待同步区块高度对应的区块体数据的同步。
步骤S1030、若确定第一节点未存储目标待同步区块高度的区块体数据,则重新获取其它节点对应的缓冲映射表,直至确定出目标节点为止,其中目标节点中存储了目标待同步区块高度的区块体数据。
在本实施例中,作为执行主体的节点只需要反复执行获取缓冲映射表一个操作,而不需要反复执行获取缓冲映射表+重新确定节点数量两个操作,也就意味着作为执行主体的节点可以通过反复获取缓冲映射表,最终确定出存储了目标待同步区块高度的区块体数据的目标节点,然后,根据多个节点分别对应的缓冲映射表以及目标节点对应的缓冲映射表,执行一次重新确定节点数量的操作即可。
因此,如果作为执行主体的节点确定第一节点未存储目标待同步区块高度的区块体数据,则作为执行主体的节点可以重新获取其它节点对应的缓冲映射表,直至确定出目标节点为止,目标节点则是存储有目标待同步区块高度的区块体数据的节点。
在本申请的一个实施例中,区块链网络中存在有指定节点,该指定节点对应的缓冲映射表记录存储了目标待同步区块高度的区块体数据,因此,如果确定出的目标待同步区块高度对应的节点数量为零,则作为执行主体的节点可以直接获取指定节点对应的缓冲映射表,如图11所示,在该实施例中具体可以包括步骤S1110-步骤S1120,详细说明如下:
步骤S1110、若确定出的目标待同步区块高度对应的节点数量为零,则获取除多个节点之外的指定节点对应的缓冲映射表,指定节点对应的缓冲映射表记录存储了目标待同步区块高度的区块体数据。
在本实施例中,区块链网络中存在有指定节点,指定节点存储了目标待同步区块高度的区块体数据,在一些实施方式中,该指定节点可以是存储有各个区块高度的区块体数据的节点,因而该指定节点也就存储了目标待同步区块高度的区块体数据,该指定节点也可以是未存储有各个区块高度的区块体数据,但存储有目标待同步区块高度的区块体数据的节点。
由于指定节点存储了目标待同步区块高度的区块体数据,因此,作为执行主体的节点确定出目标待同步区块高度对应的节点数量为零,则可以直接获取指定节点对应的缓冲映射表。
步骤S1120、根据多个节点分别对应的缓冲映射表以及指定节点对应的缓冲映射表,重新确定各个待同步区块高度对应的节点数量。
进一步,作为执行主体的节点在获取到指定节点对应的缓冲映射表之后,则可以根据多个节点分别对应的缓冲映射表以及指定节点对应的缓冲映射表,统计存储了各个待同步高度的区块体数据的节点数量,重新得到各个待同步区块高度对应的节点数量。
在本申请的一个实施例中,如果作为执行主体的节点确定出目标待同步区块高度对应的节点数量为零,则可以分别对目标待同步区块高度对应的区块体数据和其他待同步区块高度对应的区块体数据进行同步,如图12所示,在该实施例中,可以具体包括步骤S1210-步骤S1220:
步骤S1210、若确定出的目标待同步区块高度对应的节点数量为零,则根据除目标待同步区块高度以外的其它待同步区块高度对应的节点数量,确定其它待同步区块高度的同步顺序。
在本实施例中,如果确定出的目标待同步区块高度对应的节点数量为零,则不再考虑目标待同步区块高度对应的节点数量,而是直接根据除目标待同步区块高度以外的其它待同步区块高度对应的节点数量,确定其它待同步区块高度的同步顺序。
其中,根据其它待同步区块高度对应的节点数量,确定其它待同步区块高度的同步顺序的方式可以是基于其它待同步区块的同步优先级与其它待同步区块对应的节点数量之间的反相关关系,确定其它待同步区块高度的同步顺序。
步骤S1220、按照其它待同步区块高度的同步顺序,对其它待同步区块高度分别对应的区块体数据进行同步。
由于其它待同步区块高度对应的节点数量不为零,也就说明多个节点中存储有其它待同步区块高度对应的区块体数据,因此,在确定出其它待同步区块高度的同步顺序之后,作为执行主体的节点则可以按照其它待同步区块高度的同步顺序,从对应的节点拉取区块体数据,实现对其它待同步区块高度分别对应的区块体数据的同步。
在本申请的一个实施例中,区块链***可以是如图4A至图4C所示的区块链***,区块链***包括业务节点子网络和记账节点子网络,作为执行主体的节点可以是业务节点子网络中的目标业务节点,而相关联的多个节点则为业务节点子网络中与目标业务节点相关联的多个业务节点,在该实施例中,如果作为执行主体的节点确定出的目标待同步区块高度对应的节点数量为零,则说明业务节点子网络中的多个节点中未存储目标待同步区块高度对应的区块体数据,因此,作为执行主体的节点可以从记账节点子网络中获取目标待同步区块高度对应的区块体数据。
可以理解的是,记账节点子网络中包括记账节点,记账节点用于对区块数据进行共识并将区块数据记录到区块链上,换言之,记账节点子网络中存储有各个区块高度的区块体数据,因此,作为执行主体的节点可以从记账节点子网络中获取到目标待同步区块高度对应的区块体数据。
本实施例中,作为执行主体的节点只有在确定出目标待同步区块高度对应的节点数量为零,也即是业务节点子网络中多个节点均没有存储目标待同步区块高度对应的区块体数据时,才可以向记账节点子网络请求获取目标待同步区块高度对应的区块体数据,对于记账节点子网络来说,能有效减少外部数据同步请求流量,提高区块链***的共识性能。
在本申请的一个实施例中,作为执行主体的节点如果确定出的目标待同步区块高度对应的节点数量为零,则说明与作为执行主体的节点相关联的多个节点中没有存储目标待同步区块高度对应的区块体数据,这种情况下,作为执行主体的节点可以进一步获取指定节点对应的缓冲映射表,指定节点是除多个节点之外的节点,且指定节点对应的缓冲映射表记录存储了目标待同步区块高度的区块体数据,因而,作为执行主体的节点可以从指定节点中获取到目标待同步区块高度对应的区块体数据。
在本申请的一个实施例中,作为执行主体的节点相关联的多个节点可以是作为执行主体的节点从能够连接到的节点中选择出的,在该实施例中,如图13所示,具体可以包括步骤S1310-步骤S1320:
步骤S1310、获取能够连接到的节点分别对应的缓冲映射表的大小。
本实施例中,作为执行主体的节点可以与区块链中的其他节点建立连接,相互连接的节点之间可以相互拉取区块数据,作为执行主体的节点可以从能够连接到的节点中选择出相关联的多个节点。具体实施时,可以首先获取能够连接到的节点分别对应的缓冲映射表的大小。
需要解释的是,缓冲映射表的大小是指缓冲映射表中记录的区块高度的个数,例如,如图7所示,节点1对应的缓冲映射表记录了9个区块高度的区块体数据的情况,因此,节点1对应的缓冲映射表的大小为9。
步骤S1320、根据能够连接到的节点分别对应的缓冲映射表的大小,从能够连接到的节点中选择相关联的多个节点。
在获取能够连接到的节点分别对应的缓冲映射表的大小之后,则可以根据能够连接到的节点分别对应的缓冲映射表的大小,从能够连接到的节点中选择相关联的多个节点。
在一些实施方式中,选择的方式可以是从能够连接到的节点中选择缓冲映射表的大小超过第一预设阈值的节点,作为相关联的多个节点,其中,第一预设阈值可以根据实际情况进行设定。
在本申请的一个实施例中,区块链***可以是如图4A至图4C所示的区块链***,区块链***包括业务节点子网络和记账节点子网络,作为执行主体的节点可以是业务节点子网络中的目标业务节点,目标业务节点可以从记账节点子网络中获取缓冲映射表的大小超过第二预设阈值的业务节点的路由信息,然后,根据业务节点的路由信息建立与业务节点的连接。本实施例的好处在于,保证了作为执行主体的节点能够根据缓冲映射表的大小建立连接,进而保证了后续获取到的缓冲映射表提供的信息更多,有利于对待同步区块高度对应的区块体数据进行同步。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的区块链***的数据同步方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的区块链***的数据同步方法的实施例。
图14示出了根据本申请的一个实施例的区块链***的数据同步装置的框图,参照图14所示,根据本申请的一个实施例的区块链***的数据同步装置1400,包括:第一获取单元1402、统计单元1404、第一确定单元1406和第一同步单元1408。
其中,所述第一获取单元1402,配置为获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;所述统计单元1404,配置为根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;所述第一确定单元1406,配置为根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;所述第一同步单元1408,配置为按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。
在本申请的一些实施例中,所述第一确定单元1406配置为:基于所述待同步区块的同步优先级与所述待同步区块对应的节点数量之间的反相关关系,确定所述多个待同步区块高度的同步顺序。
在本申请的一些实施例中,所述装置还包括:第二获取单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则获取所述多个节点之外的目标节点对应的缓冲映射表;第一重新确定单元,配置为根据所述多个节点分别对应的缓冲映射表以及所述目标节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,所述第二获取单元还配置为:获取除所述多个节点之外的第一节点对应的缓冲映射表;根据所述第一节点对应的缓冲映射表,确定所述第一节点是否存储了所述目标待同步区块高度的区块体数据;若确定所述第一节点未存储所述目标待同步区块高度的区块体数据,则重新获取其它节点对应的缓冲映射表,直至确定出所述目标节点为止,其中所述目标节点中存储了所述目标待同步区块高度的区块体数据。
在本申请的一些实施例中,所述第一重新确定单元还配置为:在重新确定所述各个待同步区块高度对应的节点数量之后,若重新确定出的所述目标待同步区块高度对应的节点数量依然为零,则重新获取除所述多个节点以及所述目标节点之外的第二节点对应的缓冲映射表;根据所述多个节点分别对应的缓冲映射表以及所述第二节点对应的缓冲映射表,再次重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,所述装置还包括:第三获取单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;第二重新确定单元,配置为根据所述多个节点分别对应的缓冲映射表以及所述指定节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
在本申请的一些实施例中,所述装置还包括:第二确定单元,配置为若确定出的目标待同步区块高度对应的节点数量为零,则根据除所述目标待同步区块高度以外的其它待同步区块高度对应的节点数量,确定所述其它待同步区块高度的同步顺序;第二同步单元,配置为按照所述其它待同步区块高度的同步顺序,对所述其它待同步区块高度分别对应的区块体数据进行同步。
在本申请的一些实施例中,所述区块链***包括业务节点子网络和记账节点子网络,所述装置设置在所述业务节点子网络中的目标业务节点中,所述相关联的多个节点为所述业务节点子网络中与所述目标业务节点相关联的多个业务节点,所述装置还包括:第四获取单元,配置为从所述记账节点子网络中获取所述目标待同步区块高度对应的区块体数据。
在本申请的一些实施例中,所述装置还包括:第五获取单元,配置为获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;第六获取单元,配置为从所述指定节点中获取所述目标待同步区块高度对应的区块体数据。
在本申请的一些实施例中,所述装置还包括:第七获取单元,配置为获取能够连接到的节点分别对应的缓冲映射表的大小;根据所述能够连接到的节点分别对应的缓冲映射表的大小,选择单元,配置为从所述能够连接到的节点中选择所述相关联的多个节点。
在本申请的一些实施例中,所述选择单元配置为:根据所述能够连接到的节点分别对应的缓冲映射表的大小,从所述能够连接到的节点中选择所述缓冲映射表的大小超过第一预设阈值的节点,作为所述相关联的多个节点。
在本申请的一些实施例中,所述区块链***包括业务节点子网络和记账节点子网络,所述装置设置在所述业务节点子网络中的目标业务节点中,所述装置还包括:第八获取单元,配置为从所述记账节点子网络中获取缓冲映射表的大小超过第二预设阈值的业务节点的路由信息;建立单元,配置为根据所述业务节点的路由信息建立与所述业务节点的连接。
图15示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图15示出的电子设备的计算机***1500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图15所示,计算机***1500包括中央处理单元(Central Processing Unit,CPU)1501,其可以根据存储在只读存储器(Read-Only Memory,ROM)1502中的程序或者从存储部分1508加载到随机访问存储器(Random Access Memory,RAM)1503中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1503中,还存储有***操作所需的各种程序和数据。CPU 1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(Input /Output,I/O)接口1505也连接至总线1504。
以下部件连接至I/O接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至I/O接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被中央处理单元(CPU)1501执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种区块链***的数据同步方法,其特征在于,所述方法包括:
获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;
根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;
根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;
按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。
2.根据权利要求1所述的方法,其特征在于,根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序,包括:
基于所述待同步区块的同步优先级与所述待同步区块对应的节点数量之间的反相关关系,确定所述多个待同步区块高度的同步顺序。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定出的目标待同步区块高度对应的节点数量为零,则获取所述多个节点之外的目标节点对应的缓冲映射表;
根据所述多个节点分别对应的缓冲映射表以及所述目标节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
4.根据权利要求3所述的方法,其特征在于,获取所述多个节点之外的目标节点对应的缓冲映射表,包括:
获取除所述多个节点之外的第一节点对应的缓冲映射表;
根据所述第一节点对应的缓冲映射表,确定所述第一节点是否存储了所述目标待同步区块高度的区块体数据;
若确定所述第一节点未存储所述目标待同步区块高度的区块体数据,则重新获取其它节点对应的缓冲映射表,直至确定出所述目标节点为止,其中所述目标节点中存储了所述目标待同步区块高度的区块体数据。
5.根据权利要求3所述的方法,其特征在于,在重新确定所述各个待同步区块高度对应的节点数量之后,所述方法还包括:
若重新确定出的所述目标待同步区块高度对应的节点数量依然为零,则重新获取除所述多个节点以及所述目标节点之外的第二节点对应的缓冲映射表;
根据所述多个节点分别对应的缓冲映射表以及所述第二节点对应的缓冲映射表,再次重新确定所述各个待同步区块高度对应的节点数量。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定出的目标待同步区块高度对应的节点数量为零,则获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;
根据所述多个节点分别对应的缓冲映射表以及所述指定节点对应的缓冲映射表,重新确定所述各个待同步区块高度对应的节点数量。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定出的目标待同步区块高度对应的节点数量为零,则根据除所述目标待同步区块高度以外的其它待同步区块高度对应的节点数量,确定所述其它待同步区块高度的同步顺序;
按照所述其它待同步区块高度的同步顺序,对所述其它待同步区块高度分别对应的区块体数据进行同步。
8.根据权利要求7所述的方法,其特征在于,所述区块链***包括业务节点子网络和记账节点子网络,所述方法由所述业务节点子网络中的目标业务节点执行,所述相关联的多个节点为所述业务节点子网络中与所述目标业务节点相关联的多个业务节点,所述方法还包括:
从所述记账节点子网络中获取所述目标待同步区块高度对应的区块体数据。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取除所述多个节点之外的指定节点对应的缓冲映射表,所述指定节点对应的缓冲映射表记录存储了所述目标待同步区块高度的区块体数据;
从所述指定节点中获取所述目标待同步区块高度对应的区块体数据。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取能够连接到的节点分别对应的缓冲映射表的大小;
根据所述能够连接到的节点分别对应的缓冲映射表的大小,从所述能够连接到的节点中选择所述相关联的多个节点。
11.根据权利要求10所述的方法,其特征在于,根据所述能够连接到的节点分别对应的缓冲映射表的大小,从所述能够连接到的节点中选择所述相关联的多个节点,包括:
根据所述能够连接到的节点分别对应的缓冲映射表的大小,从所述能够连接到的节点中选择所述缓冲映射表的大小超过第一预设阈值的节点,作为所述相关联的多个节点。
12.根据权利要求10所述的方法,其特征在于,所述区块链***包括业务节点子网络和记账节点子网络,所述方法由所述业务节点子网络中的目标业务节点执行,所述方法还包括:
从所述记账节点子网络中获取缓冲映射表的大小超过第二预设阈值的业务节点的路由信息;
根据所述业务节点的路由信息建立与所述业务节点的连接。
13.一种区块链的数据同步装置,其特征在于,所述装置包括:
第一获取单元,配置为获取相关联的多个节点分别对应的缓冲映射表,各个节点对应的缓冲映射表用于记录是否存储了各个区块高度的区块体数据;
统计单元,配置为根据所述多个节点分别对应的缓冲映射表,统计存储了各个待同步区块高度的区块体数据的节点数量,得到所述各个待同步区块高度对应的节点数量;
第一确定单元,配置为根据所述各个待同步区块高度对应的节点数量,确定多个待同步区块高度的同步顺序;
第一同步单元,配置为按照所述多个待同步区块高度的同步顺序,对所述多个待同步区块高度分别对应的区块体数据进行同步。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的区块链***的数据同步方法。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至12中任一项所述的区块链***的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011473334.2A CN112287031B (zh) | 2020-12-15 | 2020-12-15 | 区块链***的数据同步方法、装置、可读介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011473334.2A CN112287031B (zh) | 2020-12-15 | 2020-12-15 | 区块链***的数据同步方法、装置、可读介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112287031A true CN112287031A (zh) | 2021-01-29 |
CN112287031B CN112287031B (zh) | 2021-04-23 |
Family
ID=74425893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011473334.2A Active CN112287031B (zh) | 2020-12-15 | 2020-12-15 | 区块链***的数据同步方法、装置、可读介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112287031B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765137A (zh) * | 2021-04-07 | 2021-05-07 | 暗链科技(深圳)有限公司 | 基于区块分布式区块链的区块同步方法及电子设备 |
CN113098970A (zh) * | 2021-04-12 | 2021-07-09 | 浙江永旗区块链科技有限公司 | 一种分布式网络节点数据同步方法 |
CN113259118A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 同步节点信息列表的方法 |
CN114338724A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
US20180039667A1 (en) * | 2016-08-05 | 2018-02-08 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
CN110099106A (zh) * | 2019-04-24 | 2019-08-06 | 福建方维信息科技有限公司 | 一种区块链中节点间数据同步的方法及终端 |
CN111147392A (zh) * | 2019-12-25 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、装置、设备及可读存储介质 |
CN111475575A (zh) * | 2020-04-09 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、装置及计算机可读存储介质 |
-
2020
- 2020-12-15 CN CN202011473334.2A patent/CN112287031B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180039667A1 (en) * | 2016-08-05 | 2018-02-08 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN110099106A (zh) * | 2019-04-24 | 2019-08-06 | 福建方维信息科技有限公司 | 一种区块链中节点间数据同步的方法及终端 |
CN111147392A (zh) * | 2019-12-25 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、装置、设备及可读存储介质 |
CN111475575A (zh) * | 2020-04-09 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
荣婷婷: "节点数不同的不确定时空网络的同步研究", 《中国优秀硕士学位论文全文数据库 基础科学辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765137A (zh) * | 2021-04-07 | 2021-05-07 | 暗链科技(深圳)有限公司 | 基于区块分布式区块链的区块同步方法及电子设备 |
CN113098970A (zh) * | 2021-04-12 | 2021-07-09 | 浙江永旗区块链科技有限公司 | 一种分布式网络节点数据同步方法 |
CN113259118A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 同步节点信息列表的方法 |
CN113259118B (zh) * | 2021-06-02 | 2021-09-24 | 支付宝(杭州)信息技术有限公司 | 同步节点信息列表的方法 |
CN114338724A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112287031B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112232823B (zh) | 区块链***的交易处理方法、装置、介质及电子设备 | |
CN112287031B (zh) | 区块链***的数据同步方法、装置、可读介质及电子设备 | |
CN110827097B (zh) | 基于区块链***的税务管理方法、装置、介质及电子设备 | |
CN112733174B (zh) | 区块链***的认证管理方法、***及电子设备 | |
US20230023857A1 (en) | Data processing method and apparatus, intelligent device, and storage medium | |
CN112231741B (zh) | 基于区块链***的数据处理方法、装置、介质及电子设备 | |
CN112291376B (zh) | 区块链***中的数据处理方法及相关设备 | |
CN109658097B (zh) | 区块链***的认证管理方法、装置、介质及电子设备 | |
CN113657900A (zh) | 一种跨链交易验证方法、***以及跨链交易*** | |
US20230262126A1 (en) | Blockchain-based data processing method and apparatus, device, and readable storage medium | |
CN112231414B (zh) | 区块链***的数据同步方法、装置、可读介质及电子设备 | |
CN116150260A (zh) | 区块链***的数据处理方法、装置、介质及电子设备 | |
CN112565104B (zh) | 区块链***的流量控制方法、装置、介质及电子设备 | |
CN112532753B (zh) | 区块链***的数据同步方法、装置、介质及电子设备 | |
WO2023231558A1 (zh) | 区块链共识方法、装置、介质、电子设备和程序产品 | |
CN112926981B (zh) | 用于区块链的交易信息处理方法、装置、介质及电子设备 | |
CN112231415B (zh) | 区块链网络的数据同步方法、***、电子设备及可读介质 | |
CN116233139A (zh) | 区块链***的数据处理方法、装置、介质及电子设备 | |
CN116186749A (zh) | 基于区块链的业务处理方法、装置、电子设备和可读介质 | |
CN116186786A (zh) | 基于区块链的业务处理方法、装置、电子设备和可读介质 | |
CN115222392A (zh) | 基于区块链的业务访问方法、装置、介质及电子设备 | |
Singh et al. | Distributed trust and reputation management for future wireless systems | |
WO2024103856A1 (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN116232624A (zh) | 基于区块链***的数据处理方法及装置、设备、介质 | |
CN116232625A (zh) | 基于区块链***的账户管理方法、装置、设备和可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40038141 Country of ref document: HK |