会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 区块链账本 / 一种区块链同步账本的方法

一种区块链同步账本的方法

申请号 CN201910169462.9 申请日 2019-03-06 公开(公告)号 CN109886690A 公开(公告)日 2019-06-14
申请人 上海共链信息科技有限公司; 发明人 于欢;
摘要 本发明公开了一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,起始区块号前的区块只同步区块头数据;起始区块号的区块同步区块全数据和当前区块时刻的状态快照;起始区块号之后的区块同步区块的全数据;区块链节点选择性同步账本方法包括如下步骤:S1、初始化区块链节点;S2、启动节点,并设置节点起始区块号;S3、从所有连接节点中选择最佳的节点进行区块同步;S4、从最佳节点同步所有区块的区块头数据;S5、验证起始区块号之前所有区块头的有效性。本发明节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。
权利要求

1.一种区块链同步账本的方法,其特征在于,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,起始区块号前的区块只同步区块头数据;

起始区块号的区块同步区块全数据和当前区块时刻的状态快照;

起始区块号之后的区块同步区块的全数据;

区块链节点选择性同步账本方法包括如下步骤:S1、初始化区块链节点;

S2、启动节点,并设置节点起始区块号;

S3、从所有连接节点中选择最佳的节点进行区块同步;

S4、从最佳节点同步所有区块的区块头数据;

S5、验证起始区块号之前所有区块头的有效性;

S6、从最佳节点同步起始区块号的区块全数据;

S7、对起始区块号进行验证;

S8、起始区块号之后的区块同步区块头、区块体数据;

S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。

2.根据权利要求1所述的一种区块链同步账本的方法,其特征在于,所述步骤S3的最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点。

3.根据权利要求1或2所述的一种区块链同步账本的方法,其特征在于,所述步骤S5验证通过后,将起始区块号之前的区块头数据写入数据库。

4.根据权利要求1或3所述的一种区块链同步账本的方法,其特征在于,所述步骤S6同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态。

5.根据权利要求1或4所述的一种区块链同步账本的方法,其特征在于,所述步骤S7中,对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库。

说明书全文

一种区块链同步账本的方法

技术领域

[0001] 本发明涉及区块链,特别涉及一种区块链同步账本的方法。

背景技术

[0002] 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
[0003] 区块链系统中每一个节点都实时同步完整账本数据,这种模式产生了大量冗余数据,大量消耗存储资源,并且数据存储容量会受到单机存储上限的限制。在数据量多的情况下,新节点同步全账本数据需要的时间较多。比如,目前以太坊的数据存储已经超过1T,这种水平已经让很多普通用户,无法运行一个全量的以太坊节点了。在实际的应用中,很多用户只关注区块链的最新状态,并不不关注历史记录,或者只关注部分历史记录,这种场景下用户不需要同步完整账本数据,目前区块链现有的账本同步方法不支持节点同步部分账本数据。

发明内容

[0004] 本发明要解决的技术问题是克服现有技术的缺陷,提供一种区块链同步账本的方法。
[0005] 为了解决上述技术问题,本发明提供了如下的技术方案:
[0006] 本发明一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,
[0007] 起始区块号前的区块只同步区块头数据;
[0008] 起始区块号的区块同步区块全数据和当前区块时刻的状态快照;
[0009] 起始区块号之后的区块同步区块的全数据;
[0010] 区块链节点选择性同步账本方法包括如下步骤:
[0011] S1、初始化区块链节点;
[0012] S2、启动节点,并设置节点起始区块号;
[0013] S3、从所有连接节点中选择最佳的节点进行区块同步;
[0014] S4、从最佳节点同步所有区块的区块头数据;
[0015] S5、验证起始区块号之前所有区块头的有效性;
[0016] S6、从最佳节点同步起始区块号的区块全数据;
[0017] S7、对起始区块号进行验证;
[0018] S8、起始区块号之后的区块同步区块头、区块体数据;
[0019] S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。
[0020] 作为本发明的一种优选技术方案,所述S3的最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点。
[0021] 作为本发明的一种优选技术方案,所述S5验证通过后,将起始区块号之前的区块头数据写入数据库。
[0022] 作为本发明的一种优选技术方案,所述S6同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态。
[0023] 作为本发明的一种优选技术方案,所述步骤S7中,对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库。
[0024] 本发明所达到的有益效果是:节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。

附图说明

[0025] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0026] 图1是本发明的流程示意图。

具体实施方式

[0027] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0028] 实施例
[0029] 如图1所示,本发明提供一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,
[0030] 起始区块号前的区块只同步区块头数据;
[0031] 起始区块号的区块同步区块全数据和当前区块时刻的状态快照;
[0032] 起始区块号之后的区块同步区块的全数据;
[0033] 区块链节点选择性同步账本方法包括如下步骤:
[0034] S1、初始化区块链节点;
[0035] S2、启动节点,并设置节点起始区块号;
[0036] S3、从所有连接节点中选择最佳的节点进行区块同步;
[0037] S4、从最佳节点同步所有区块的区块头数据;
[0038] S5、验证起始区块号之前所有区块头的有效性;
[0039] S6、从最佳节点同步起始区块号的区块全数据;
[0040] S7、对起始区块号进行验证;
[0041] S8、起始区块号之后的区块同步区块头、区块体数据;
[0042] S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。
[0043] 进一步的,步骤S3的最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点。
[0044] 在本发明的另一个优选的实施例中,步骤S5验证通过后,将起始区块号之前的区块头数据写入数据库。
[0045] 在本发明的另一个优选的实施例中,步骤S6同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态。
[0046] 在本发明的另一个优选的实施例中,步骤S7中,对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库。
[0047] 具体的,新节点加入已有区块链网络的情况,包括如下步骤:
[0048] (1)配置本地节点的初始化参数,并对本地节点进行初始化;
[0049] (2)配置本地节点待连接的其他运行节点的连接信息,包括IP、端口号等;
[0050] (3)启动本地节点,设置起始区块号;
[0051] (4)本地节点主动连接(2)中配置的所有节点,连接成功后,从所有连接节点中筛选出起始区块号小于本地节点的连接节点;
[0052] (5)判断是否有满足(4)中条件的节点,有满足条件节点进入(6),否则进入(17)同步结束;
[0053] (6)从满足条件节点中选择难度最大的节点作为最佳节点;
[0054] (7)当最佳节点难度大于本地节点难度时进入(8),否则进入(17)同步结束;
[0055] (8)向最佳节点请求起始区号号之前区块的区块头数据;
[0056] (9)接收所请求的区块头数据并进行校验;
[0057] (10)将通过校验的区块头数据按顺序依次写入本地账本中;
[0058] (11)向最佳节点请求起始区号区块的区块头、区块体、交易执行结果、世界状态数据;
[0059] (12)接收所请求的数据并进行校验;
[0060] (13)将通过校验的区块头、区块体、交易执行结果、世界状态数据写入本地账本中;
[0061] (14)向最佳节点请求起始区号之后区块的区块头、区块体数据;
[0062] (15)接收所请求的数据,并执行区块体中的交易生成交易执行结果,并对数据进行校验;
[0063] (16)将通过校验的区块头、区块体、交易执行结果、世界状态的变更写入本地账本中;
[0064] (17)同步结束。
[0065] 本发明节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。
[0066] 最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。