CN109189859B - 区块链网络中的节点初始化方法和装置 - Google Patents
区块链网络中的节点初始化方法和装置 Download PDFInfo
- Publication number
- CN109189859B CN109189859B CN201811102294.3A CN201811102294A CN109189859B CN 109189859 B CN109189859 B CN 109189859B CN 201811102294 A CN201811102294 A CN 201811102294A CN 109189859 B CN109189859 B CN 109189859B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- check point
- target
- checkpoint
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出一种区块链网络中的节点初始化方法和装置。其中,该方法包括:从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;从所述全节点中确定出具有检查点标记的目标区块;将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存。本发明实施例中,通过检查点标记禁止的区块分叉,并利用检查点标记可以从全节点中确定出目标区块,有利于为需要初始化的节点,下载准确的区块的头部数据。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种区块链网络中的节点初始化方法和装置。
背景技术
区块链网络包括大量的全节点。这些全节点维护有全量的账本数据。全节点会实时同步每个区块的完整数据,因而可以对区块的有效性做出正确的判断。
在区块链网络中,还包括一些轻量级节点,例如手机移动客户端。由于它们的存储空间有限,不能存储历史全部的区块数据。并且,移动客户端的带宽有限,流量费用较高,如果当区块大小较大,且出块速度较快时,实时同步每个区块的完整数据到移动客户端也是不现实的。一些轻量级技术,只实时同步部分区块数据到移动客户端。例如,百度超级链的区块链网络向轻量级节点实时同步区块头和区块所包含的交易标识列表。在轻量级节点的客户端本地维护一个区块头链数据库。
每个接入区块链网络的一个新移动设备,都需要重建历史区块记录。
发明内容
本发明实施例提供一种区块链网络中的节点初始化方法和装置,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种区块链网络中的节点初始化方法,包括:
从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;
从所述全节点中确定出具有检查点标记的目标区块;
将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存。
在一种实施方式中,从所述全节点中确定出具有检查点标记的目标区块,包括:
获取多个所述全节点所包括的相同区块;
将所述相同区块中最后一个具有检查点标记的区块,确定为所述目标区块。
在一种实施方式中,所述检查点标记包括检查点的标识、禁止分叉的区块的标识和第一梅克尔树的根节点。
在一种实施方式中,所述方法还包括:
通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
在一种实施方式中,通过计算第一梅克尔树的方式验证所述目标区块的检查点标记,包括:
利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;
比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;
如果一致,则对所述目标区块的检查点标记的验证通过。
在一种实施方式中,将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存,包括:
从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;
将下载的数据保存到新接入节点本地的区块头链数据库中。
在一种实施方式中,所述头部数据包括当前区块的标识、上一个区块的标识和第二梅克尔树的根节点,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
在一种实施方式中,所述方法还包括:
从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
第二方面,本发明实施例提供了一种区块链网络中的节点初始化装置,包括:
选取模块,用于从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;
确定模块,用于从所述全节点中确定出具有检查点标记的目标区块;
下载模块,用于将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存。
在一种实施方式中,所述确定模块还用于获取多个所述全节点所包括的相同区块;将所述相同区块中最后一个具有检查点标记的区块,确定为所述目标区块。
在一种实施方式中,所述检查点标记包括检查点的标识、禁止分叉的区块的标识和第一梅克尔树的根节点。
在一种实施方式中,所述装置还包括:
验证模块,用于通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
在一种实施方式中,所述验证模块还用于利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;如果一致,则对所述目标区块的检查点标记的验证通过。
在一种实施方式中,所述下载模块还用于从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;将下载的数据保存到新接入节点本地的区块头链数据库中。
在一种实施方式中,所述头部数据包括当前区块的标识、上一个区块的标识和第二梅克尔树的根节点,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
在一种实施方式中,所述装置还包括:
同步模块,用于从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
第三方面,本发明实施例提供了一种区块链网络中的节点初始化装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储区块链网络中的节点初始化装置所用的计算机软件指令,其包括用于执行上述方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:通过检查点标记禁止的区块分叉,并利用检查点标记可以从全节点中确定出目标区块,有利于为需要初始化的节点,下载准确的区块的头部数据。
上述技术方案中的另一个技术方案具有如下优点或有益效果:将多个全节点所包括的相同区块中最后一个具有检查点标记的区块确定为目标区块,有利于得到处于主干链上的更多区块的数据,使得初始化的数据更加准确和丰富。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1示出根据本发明实施例的区块链网络中的节点初始化方法的流程图。
图2示出根据本发明实施例的区块链网络中的节点初始化方法的流程图。
图3示出根据本发明实施例的区块链网络中的节点初始化方法中的区块结构的示意图。
图4示出根据本发明实施例的区块链网络中的节点初始化方法中的数据同步的示意图。
图5示出根据本发明实施例的区块链网络中的节点初始化方法的一种应用示例的流程图。
图6示出根据本发明实施例的区块链网络中的节点初始化方法中一种梅克尔树的示意图。
图7示出根据本发明实施例的区块链网络中的节点初始化装置的结构框图。
图8示出根据本发明实施例的区块链网络中的节点初始化装置的结构框图。
图9示出根据本发明实施例的区块链网络中的节点初始化装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本发明实施例的区块链网络中的节点初始化方法的流程图。如图1所示,所述方法可以包括以下步骤:
步骤S11、从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉。
步骤S12、从所述全节点中确定出具有检查点标记的目标区块。
步骤S13、将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存。
区块链网络中可以包括全节点和轻量级节点。全节点中可以保存各区块的完整数据。轻量级节点中可以保存各区块的头部数据和交易标识列表。如果有例如手机、平板电脑等移动客户端作为轻量级节点接入区块链网络,需要为新接入的轻量级节点重建历史区块记录,在该轻量级节点的客户端本地维护一个区块头链数据库。
在区块链网络中,可以为某些区块设置对应的检查点标记。在一种实施方式中,检查点标记中可以包括检查点的标识(例如检查点内容的哈希值)、禁止分叉的区块的标识(例如包括当前区块往前的M个区块的标识)、第一梅克尔树(Merkle trees)的根节点。所述第一梅克尔树的叶子节点包括上一个检查点的标识以及从上一个具有检查点标记的区块到当前区块之间的各区块的区块标识。通过为区块设置检查点标记可以禁止当前区块之前的多个区块分叉。例如,第一个具有检查点标记的区块,其中的检查点标记禁止从创世区块到第一个具有检查点标记区块的这些区块分叉。再如,第三个具有检查点标记的区块,其中的检查点标记禁止从第二个具有检查点标记的区块到第三个具有检查点标记区块的这些区块分叉。
在一种实施方式中,区块的头部数据可以包括当前区块的标识、上一个区块的标识、第二梅克尔树的根节点。其中,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
在一种实施方式中,从区块链网络中选取全节点,包括:从区块链网络中选取多个全节点,每个所述全节点中包括至少一个具有检查点标记的区块。如果选取一个全节点,可以将该全节点中最后一个具有检查点标记的区块确定为目标区块。如果选取多个全节点,则多个全节点中的数据可以互相验证,有利于更准确的获得目标区块。
在一种实施方式中,从所述全节点中确定出具有检查点标记的目标区块,包括:
获取多个所述全节点所包括的相同区块;
将所述相同区块中最后一个具有检查点标记的区块,确定为所述目标区块。其中,该最后一个具有检查点标记的区块,是相同区块中的区块高度最高的具有检查点标记的区块。区块高度为区块在所述区块链网络的主干链上所对应的块数。
在本发明实施例中,区块高度可以为某个区块在区块链网络的主干链上对应的块数(例如,主干链上的第5个的区块的高度为5)。
例如,假设选取了两个全节点,全节点1中最后一个具有检查点标记的区块的高度为40,全节点2中最后一个具有检查点标记的区块的高度为60。这两个全节点中的相同区块包括从创世区块到区块B共50个。这些相同区块中,如果最后一个具有检查点标记的区块A的高度为40,则将这个区块A作为目标区块。
再如,假设选取了三个全节点,全节点1中最后一个具有检查点标记的区块的高度为40,全节点2中最后一个具有检查点标记的区块的高度为60,全节点2中最后一个具有检查点标记的区块的高度为40。这三个全节点中的相同区块包括从创世区块到区块B共50个。这些相同区块中,如果最后一个具有检查点标记的区块A的高度为40,则将这个区块A作为目标区块。
利用更多全节点来确定目标区块的方式与上述的原理类似,在此不赘述。
在一种实施方式中,如图2所示,所述方法还包括:
步骤S14、通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
在一种示例中,通过计算第一梅克尔树的方式验证所述目标区块的检查点标记,包括:
利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;
比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;
如果一致,则对所述目标区块的检查点标记的验证通过。
在本发明实施例中,确定出目标区块后,可以从目标区块的头部数据中读取该区块对应的检查点标记。例如,将上一个检查点的标识、该目标区块的标识以及往前推M个区块的标识作为叶子节点,重新计算第一梅克尔树的根节点。其中,M为从上一个具有检查点的区块到目标区块的块数。然后,比较计算得到的根节点,与从目标区块对应的检查点标记中读取的第一梅克尔树的根节点是否一致。如果一致,表示验证通过。验证通过后再执行步骤S13。如果验证没有通过,可以不下载数据,而是重新选取全节点再次进行初始化步骤。
在一种实施方式中,将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存,包括:从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;将下载的数据保存到新接入节点本地的区块头链数据库中。
在一种实施方式中,如图2所示,该方法还包括:
步骤S15、从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
后续,可以从目标区块开始,将主干链上的目标区块之后的区块的头部数据下载到本地进行维护。并且在区块链网络产生新区块时,也可以同步新区块的头部数据。
本发明实施例中,通过检查点标记禁止的区块分叉,并利用检查点标记可以从全节点中确定出目标区块,有利于为需要初始化的节点,下载准确的区块的头部数据。此外,将多个全节点所包括的相同区块中最后一个具有检查点标记的区块确定为目标区块,有利于得到处于主干链上的更多区块的数据,使得初始化的数据更加准确和丰富。
本发明实施例基于区块链技术,在一种应用示例中,该方法可适用于轻量级节点的数据初始化,在轻量级节点的本地维护区块头链数据库。如图3所示,在区块链网络中可以预先为一些区块设置检查点。例如每一百个区块设置一个检查点,或每个一段时间设置一个检查点等。如图4所示,在需要初始化时,从区块链网络中随机或由用户指定选取的检查点例如全节点1、全节点2、全节点3,对新接入的节点进行初始化。
如图5所示,该应用示例的节点初始化的步骤如下:
步骤S31.每距离上一个检查点隔M个区块(比如100个区块),记账节点自动生成一个新的检查点标记。最新检查点之前的区块不允许分叉。该检查点标记可以包括如下内容:
A.检查点的ID(identification,标识),可以包括检查点内容的哈希值。
B.该检查点所认可的最新的不可逆分叉(即禁止分叉)的区块的ID,例如,当前区块往前推M个区块的区块的标识(ID)。
C.一棵梅克尔树的树根、即根节点。该树根的叶子节点包括上一个检查点(Checkpoint)的ID、以及上一个检查点到本区块间的M个区块的ID。
如图6所示,计算区块A和区块B的标识的哈希值,得到叶子节点Hash1、Hash2、Hash3、Hash4。再计算两个叶子节点(LEAF)Hash1、Hash2的哈希值,得到一个树枝节点Hash5,再计算两个叶子节点Hash3、Hash4的哈希值,得到另一个树枝节点Hash6,。再计算两个树枝节点(BRANCH)Hash5、Hash6的哈希值,得到检查点1的标识Hash7。利用检查点1的标识和其他区块(从检查点1到检查点2的不可逆分叉的区块)的标识作为叶子节点,继续计算得到检查点2的标识例如Hash13。
其中,在轻量级节点的本地维护一个区块头部的链式数据结构。
A.区块头部的可以包括以下数据:
i.区块的ID。
ii.上一个区块的ID。
iii.一棵梅克尔树A的树根、即根节点。该梅克尔树的最下层叶子节点由该区块所包含的所有UTXO(Unspent Transaction Output,未花费的交易输出)交易的ID组成。
iv.检查点标记。
B.每个区块头部指向上一个区块的区块头部,由此维护了一个链式的数据结构。创世区块的区块头部所指向的上一个区块的ID为0。
步骤S32.从区块链网络随机或通过用户指定选择一个节点1来进行同步,并获得其维护的最近N个都包含有检查点标记的区块的ID。
步骤S33.再从区块链网络随机或通过用户指定再选择节点2、节点3来进行查询,也获得它们维护的最近N个包含有检查点标记的区块的ID。
步骤S34.从三个节点返回的3份结果中,获得这个三个节点都拥有的区块高度最高且具有检查点的区块的ID。例如区块Z,对应的检查点的ID是Y。
步骤S35.从三个节点中任意选择一个节点,打包下载截至到区块的ID为Z的全量区块的头部数据。
步骤S36.通过计算梅克尔树的方式验证检查点的内容是否正确。如果正确,说明最后一个检查点Y真实有效。
步骤S37.将包含有检查点Y的区块Z的头部数据保存到本地维护的区块头链数据库。至此,轻量级节点的区块头链的数据初始化完成。
步骤S38.从区块Z开始,从区块链网络逐个同步最新的区块信息,最终与主链数据保持一致。
图7示出根据本发明实施例的区块链网络中的节点初始化装置的结构框图。如图7所示,所述装置包括:
选取模块71,用于从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;
确定模块72,用于从所述全节点中确定出具有检查点标记的目标区块;
下载模块73,用于将所述全节点中从创世区块到所述目标区块的头部数据下载到本地保存。
在一种实施方式中,所述选取模块71还用于从区块链网络中选取多个全节点,每个所述全节点中包括至少一个具有检查点标记的区块。
在一种实施方式中,所述确定模块72还用于获取多个所述全节点所包括的相同区块;将所述相同区块中最后一个具有检查点标记的区块,确定为所述目标区块。
在一种实施方式中,所述检查点标记包括检查点的标识、禁止分叉的区块的标识和第一梅克尔树的根节点。
在一种实施方式中,如图8所示,所述装置还包括:
验证模块80,用于通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
在一种实施方式中,所述验证模块80还用于利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;如果一致,则对所述目标区块的检查点标记的验证通过。
在一种实施方式中,所述下载模块73还用于从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;将下载的数据保存到新接入节点本地的区块头链数据库中。
在一种实施方式中,所述头部数据包括当前区块的标识、上一个区块的标识和第二梅克尔树的根节点,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
在一种实施方式中,如图8所示,所述装置还包括:
同步模块81,用于从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图9示出根据本发明实施例的区块链网络中的节点初始化装置的结构框图。如图9所示,该装置包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的区块链网络中的节点初始化方法。所述存储器910和处理器920的数量可以为一个或多个。
该装置还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种区块链网络中的节点初始化方法,其特征在于,包括:
从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;
从所述全节点中确定出具有检查点标记的目标区块;
将所述全节点中从创世区块到所述目标区块的头部数据下载到新接入节点本地保存。
2.根据权利要求1所述的方法,其特征在于,从所述全节点中确定出具有检查点标记的目标区块,包括:
获取多个所述全节点所包括的相同区块;
将所述相同区块中最后一个具有检查点标记的区块,确定为所述目标区块;
其中,所述最后一个具有检查点标记的区块,是相同区块中的区块高度最高的具有检查点标记的区块,所述区块高度为区块在所述区块链网络的主干链上所对应的块数。
3.根据权利要求1所述的方法,其特征在于,所述检查点标记包括检查点的标识、禁止分叉的区块的标识和第一梅克尔树的根节点。
4.根据权利要求3所述的方法,其特征在于,还包括:
通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
5.根据权利要求4所述的方法,其特征在于,通过计算第一梅克尔树的方式验证所述目标区块的检查点标记,包括:
利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;
比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;
如果一致,则对所述目标区块的检查点标记的验证通过。
6.根据权利要求1至5中任一项所述的方法,其特征在于,将所述全节点中从创世区块到所述目标区块的头部数据下载到新接入节点本地保存,包括:
从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;
将下载的数据保存到新接入节点本地的区块头链数据库中。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述头部数据包括当前区块的标识、上一个区块的标识和第二梅克尔树的根节点,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
8.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:
从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
9.一种区块链网络中的节点初始化装置,其特征在于,所述装置包括:
选取模块,用于从区块链网络中选取全节点,所述全节点中包括至少一个具有检查点标记的区块,所述检查点标记用于禁止区块分叉;
确定模块,用于从所述全节点中确定出具有检查点标记的目标区块;
下载模块,用于将所述全节点中从创世区块到所述目标区块的头部数据下载到新接入节点本地保存。
10.根据权利要求9所述的装置,其特征在于,所述确定模块还用于获取多个所述全节点所包括的相同区块;将所述相同区块中区块最后一个具有检查点标记的区块,确定为所述目标区块;
其中,所述最后一个具有检查点标记的区块,是相同区块中的区块高度最高的具有检查点标记的区块,所述区块高度为区块在所述区块链网络的主干链上所对应的块数。
11.根据权利要求9所述的装置,其特征在于,所述检查点标记包括检查点的标识、禁止分叉的区块的标识和第一梅克尔树的根节点。
12.根据权利要求11所述的装置,其特征在于,还包括:
验证模块,用于通过计算第一梅克尔树的方式验证所述目标区块的检查点标记。
13.根据权利要求12所述的装置,其特征在于,所述验证模块还用于利用上一个检查点的标识,以及从上一个具有检查点标记的区块到当前区块的禁止分叉的各区块的标识,作为第一梅克尔树的叶子节点,计算第一梅克尔树的根节点;比较计算得到的根节点与所述目标区块的检查点标记中的第一梅克尔树的根节点是否一致;如果一致,则对所述目标区块的检查点标记的验证通过。
14.根据权利要求9至13中任一项所述的装置,其特征在于,所述下载模块还用于从多个所述全节点中的任意一个全节点的区块头链数据库中,下载从创世区块到所述目标区块的头部数据;将下载的数据保存到新接入节点本地的区块头链数据库中。
15.根据权利要求14所述的装置,其特征在于,所述头部数据包括当前区块的标识、上一个区块的标识和第二梅克尔树的根节点,所述第二梅克尔树的叶子节点包括当前区块所包括的各交易的标识。
16.根据权利要求9至13中任一项所述的装置,其特征在于,还包括:
同步模块,用于从所述目标区块开始,同步所述区块链网络主干链上的区块的头部数据。
17.一种区块链网络中的节点初始化装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的方法。
18.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811102294.3A CN109189859B (zh) | 2018-09-20 | 2018-09-20 | 区块链网络中的节点初始化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811102294.3A CN109189859B (zh) | 2018-09-20 | 2018-09-20 | 区块链网络中的节点初始化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189859A CN109189859A (zh) | 2019-01-11 |
CN109189859B true CN109189859B (zh) | 2020-10-16 |
Family
ID=64909111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811102294.3A Active CN109189859B (zh) | 2018-09-20 | 2018-09-20 | 区块链网络中的节点初始化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189859B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815747A (zh) * | 2019-01-17 | 2019-05-28 | 重庆金融资产交易所有限责任公司 | 基于区块链的离线审计方法、电子装置及可读存储介质 |
CN109857810B (zh) * | 2019-02-02 | 2023-06-23 | 立旃(上海)科技有限公司 | 基于区块链的数据同步装置及方法 |
CN111159197A (zh) * | 2019-12-31 | 2020-05-15 | 深圳市网心科技有限公司 | 一种数据存储方法、装置、设备及可读存储介质 |
CN111211876B (zh) * | 2020-01-02 | 2021-10-12 | 支付宝(杭州)信息技术有限公司 | 发送针对数据请求的应答消息的方法及装置、区块链*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528746A (zh) * | 2016-10-26 | 2017-03-22 | 江苏通付盾科技有限公司 | 交易信息查询方法、装置及*** |
CN107077674A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN107317672A (zh) * | 2017-05-10 | 2017-11-03 | 广东网金控股股份有限公司 | 一种轻量终端机区块链*** |
CN107507006A (zh) * | 2017-08-11 | 2017-12-22 | 杭州秘猿科技有限公司 | 一种基于许可链的共识分叉处理方法 |
CN108270836A (zh) * | 2017-01-03 | 2018-07-10 | 华为技术有限公司 | 基于区块链的数据处理方法、设备和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733602B2 (en) * | 2016-09-29 | 2020-08-04 | Microsoft Technology Licensing, Llc. | Heartbeats and consensus in verifiable outsourced ledgers |
-
2018
- 2018-09-20 CN CN201811102294.3A patent/CN109189859B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528746A (zh) * | 2016-10-26 | 2017-03-22 | 江苏通付盾科技有限公司 | 交易信息查询方法、装置及*** |
CN107077674A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN108270836A (zh) * | 2017-01-03 | 2018-07-10 | 华为技术有限公司 | 基于区块链的数据处理方法、设备和*** |
CN107317672A (zh) * | 2017-05-10 | 2017-11-03 | 广东网金控股股份有限公司 | 一种轻量终端机区块链*** |
CN107507006A (zh) * | 2017-08-11 | 2017-12-22 | 杭州秘猿科技有限公司 | 一种基于许可链的共识分叉处理方法 |
Non-Patent Citations (1)
Title |
---|
比特币区块链分叉研究;王健 等;《通信技术》;20180131;第51卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109189859A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189859B (zh) | 区块链网络中的节点初始化方法和装置 | |
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN110009334B (zh) | 一种构建梅克尔树、简单支付验证方法及装置 | |
CN109242500B (zh) | 区块链交易有效性验证方法、装置及存储介质 | |
CN108023896B (zh) | 区块同步方法及*** | |
CN110011800B (zh) | 一种区块链数据读取方法及装置 | |
CN102307210B (zh) | 一种数据下载***及其数据管理和下载方法 | |
KR20200089749A (ko) | 블록체인-기반 데이터 검증 방법 및 장치, 및 전자 디바이스 | |
CN108108127B (zh) | 一种文件读取方法及*** | |
CN108710681B (zh) | 文件获取方法、装置、设备及存储介质 | |
CN110046517B (zh) | 一种对写入区块链的交易进行隐匿的方法及装置 | |
US20210109917A1 (en) | System and Method for Processing a Database Query | |
CN108769264B (zh) | 一种区块链分域方法 | |
CN108256353A (zh) | 一种数据完整性校验方法、装置及客户端 | |
CN106227893A (zh) | 一种文件类型获取方法及装置 | |
CN102142282A (zh) | 一种NAND Flash存储芯片ECC校验算法的识别方法 | |
CN109815112B (zh) | 基于功能测试的数据调试方法、装置及终端设备 | |
CN114281793A (zh) | 数据校验方法、装置和*** | |
CN110209714A (zh) | 报表生成方法、装置、计算机设备及计算机可读存储介质 | |
CN112116347B (zh) | 一种基于随机共识机制的图式账本数据发布方法和装置 | |
CN111432009B (zh) | 一种区块链数据的同步方法、装置及电子设备、存储介质 | |
CN106354587A (zh) | 镜像服务器以及导出虚拟机镜像文件的方法 | |
CN112579608A (zh) | 案件数据查询方法、***、设备及计算机可读存储介质 | |
CN106445737A (zh) | 一种多备份启动方法 | |
CN111737237B (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 |