CN109886690B - 一种区块链同步账本的方法 - Google Patents
一种区块链同步账本的方法 Download PDFInfo
- Publication number
- CN109886690B CN109886690B CN201910169462.9A CN201910169462A CN109886690B CN 109886690 B CN109886690 B CN 109886690B CN 201910169462 A CN201910169462 A CN 201910169462A CN 109886690 B CN109886690 B CN 109886690B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- data
- block number
- initial
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,起始区块号前的区块只同步区块头数据;起始区块号的区块同步区块全数据和当前区块时刻的状态快照;起始区块号之后的区块同步区块的全数据;区块链节点选择性同步账本方法包括如下步骤:S1、初始化区块链节点;S2、启动节点,并设置节点起始区块号;S3、从所有连接节点中选择最佳的节点进行区块同步;S4、从最佳节点同步所有区块的区块头数据;S5、验证起始区块号之前所有区块头的有效性。本发明节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。
Description
技术领域
本发明涉及区块链,特别涉及一种区块链同步账本的方法。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
区块链系统中每一个节点都实时同步完整账本数据,这种模式产生了大量冗余数据,大量消耗存储资源,并且数据存储容量会受到单机存储上限的限制。在数据量多的情况下,新节点同步全账本数据需要的时间较多。比如,目前以太坊的数据存储已经超过1T,这种水平已经让很多普通用户,无法运行一个全量的以太坊节点了。在实际的应用中,很多用户只关注区块链的最新状态,并不不关注历史记录,或者只关注部分历史记录,这种场景下用户不需要同步完整账本数据,目前区块链现有的账本同步方法不支持节点同步部分账本数据。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供一种区块链同步账本的方法。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,
起始区块号前的区块只同步区块头数据;
起始区块号的区块同步区块全数据和当前区块时刻的状态快照;
起始区块号之后的区块同步区块的全数据;
区块链节点选择性同步账本方法包括如下步骤:
S1、初始化区块链节点;
S2、启动节点,并设置节点起始区块号;
S3、从所有连接节点中选择最佳的节点进行区块同步;
S4、从最佳节点同步所有区块的区块头数据;
S5、验证起始区块号之前所有区块头的有效性;
S6、从最佳节点同步起始区块号的区块全数据;
S7、对起始区块号进行验证;
S8、起始区块号之后的区块同步区块头、区块体数据;
S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。
作为本发明的一种优选技术方案,所述S3的最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点。
作为本发明的一种优选技术方案,所述S5验证通过后,将起始区块号之前的区块头数据写入数据库。
作为本发明的一种优选技术方案,所述S6同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态。
作为本发明的一种优选技术方案,所述步骤S7中,对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库。
本发明所达到的有益效果是:节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的流程示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例
如图1所示,本发明提供一种区块链同步账本的方法,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,
起始区块号前的区块只同步区块头数据;
起始区块号的区块同步区块全数据和当前区块时刻的状态快照;
起始区块号之后的区块同步区块的全数据;
区块链节点选择性同步账本方法包括如下步骤:
S1、初始化区块链节点;
S2、启动节点,并设置节点起始区块号;
S3、从所有连接节点中选择最佳的节点进行区块同步;
S4、从最佳节点同步所有区块的区块头数据;
S5、验证起始区块号之前所有区块头的有效性;
S6、从最佳节点同步起始区块号的区块全数据;
S7、对起始区块号进行验证;
S8、起始区块号之后的区块同步区块头、区块体数据;
S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。
进一步的,步骤S3的最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点。
在本发明的另一个优选的实施例中,步骤S5验证通过后,将起始区块号之前的区块头数据写入数据库。
在本发明的另一个优选的实施例中,步骤S6同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态。
在本发明的另一个优选的实施例中,步骤S7中,对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库。
具体的,新节点加入已有区块链网络的情况,包括如下步骤:
(1)配置本地节点的初始化参数,并对本地节点进行初始化;
(2)配置本地节点待连接的其他运行节点的连接信息,包括IP、端口号等;
(3)启动本地节点,设置起始区块号;
(4)本地节点主动连接(2)中配置的所有节点,连接成功后,从所有连接节点中筛选出起始区块号小于本地节点的连接节点;
(5)判断是否有满足(4)中条件的节点,有满足条件节点进入(6),否则进入(17)同步结束;
(6)从满足条件节点中选择难度最大的节点作为最佳节点;
(7)当最佳节点难度大于本地节点难度时进入(8),否则进入(17)同步结束;
(8)向最佳节点请求起始区号号之前区块的区块头数据;
(9)接收所请求的区块头数据并进行校验;
(10)将通过校验的区块头数据按顺序依次写入本地账本中;
(11)向最佳节点请求起始区号区块的区块头、区块体、交易执行结果、世界状态数据;
(12)接收所请求的数据并进行校验;
(13)将通过校验的区块头、区块体、交易执行结果、世界状态数据写入本地账本中;
(14)向最佳节点请求起始区号之后区块的区块头、区块体数据;
(15)接收所请求的数据,并执行区块体中的交易生成交易执行结果,并对数据进行校验;
(16)将通过校验的区块头、区块体、交易执行结果、世界状态的变更写入本地账本中;
(17)同步结束。
本发明节点能够选择性同步账本,能够了减少存储在账本中的数据量,降低了存储资源的消耗,并提高了同步效率。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种区块链同步账本的方法,其特征在于,当新建节点加入到区块链网络中时,指定需要同步区块全数据的起始区块号,其中,起始区块号前的区块只同步区块头数据;起始区块号的区块同步区块全数据和当前区块时刻的状态快照;起始区块号之后的区块同步区块的全数据;区块链节点选择性同步账本方法包括如下步骤:
S1、初始化区块链节点;
S2、启动节点,并设置节点起始区块号;
S3、从所有连接节点中选择最佳的节点进行区块同步;最佳节点选择规则为:连接节点起始区块号小于本节点起始区块号,其中,满足连接节点起始区块号小于本节点起始区块号的所有连接节点中,选择最新区块难度最大的节点为最佳节点;
S4、从最佳节点同步所有区块的区块头数据;
S5、验证起始区块号之前所有区块头的有效性;验证通过后,将起始区块号之前的区块头数据写入数据库;
S6、从最佳节点同步起始区块号的区块全数据;同步的数据包括区块头、区块体、交易执行结果、当前区块世界状态;
S7、对起始区块号进行验证;对起始区块号进行的验证包括:验证起始区块号的区块的区块头、区块体、交易执行结果、以及世界状态的有效性,验证通过区块全数据写入数据库;
S8、起始区块号之后的区块同步区块头、区块体数据;
S9、从起始区块号之后顺序执行区块体数据中的交易,根据执行结果验证区块数据的有效性,验证通过区块全数据写入数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169462.9A CN109886690B (zh) | 2019-03-06 | 2019-03-06 | 一种区块链同步账本的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169462.9A CN109886690B (zh) | 2019-03-06 | 2019-03-06 | 一种区块链同步账本的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109886690A CN109886690A (zh) | 2019-06-14 |
CN109886690B true CN109886690B (zh) | 2023-07-25 |
Family
ID=66931085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910169462.9A Active CN109886690B (zh) | 2019-03-06 | 2019-03-06 | 一种区块链同步账本的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109886690B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489495A (zh) * | 2019-10-21 | 2019-11-22 | 杭州趣链科技有限公司 | 一种基于修改集的区块链快照制作方法 |
CN111211876B (zh) * | 2020-01-02 | 2021-10-12 | 支付宝(杭州)信息技术有限公司 | 发送针对数据请求的应答消息的方法及装置、区块链系统 |
CN111756829A (zh) * | 2020-06-19 | 2020-10-09 | 深圳市蔚链科技有限公司 | 账本数据同步方法、装置、设备和存储介质 |
CN111813866B (zh) * | 2020-07-30 | 2021-03-16 | 河南中盾云安信息科技有限公司 | 一种改进的区块链账本同步方法 |
CN113434599A (zh) * | 2021-06-29 | 2021-09-24 | 北京市大数据中心 | 一种基于半节点的区块链账本同步方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451002A (zh) * | 2017-03-24 | 2017-12-08 | 北京瑞卓喜投科技发展有限公司 | 针对修改区块体数据的区块链的主动验证方法及系统 |
CN108429759A (zh) * | 2018-03-28 | 2018-08-21 | 电子科技大学成都研究院 | 去中心化存储安全实现方法 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN108924223A (zh) * | 2018-06-29 | 2018-11-30 | 北京金山安全软件有限公司 | 一种区块链的节点同步方法及装置 |
CN109327528A (zh) * | 2018-10-31 | 2019-02-12 | 阿里巴巴集团控股有限公司 | 一种基于区块链的节点管理方法和装置 |
-
2019
- 2019-03-06 CN CN201910169462.9A patent/CN109886690B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451002A (zh) * | 2017-03-24 | 2017-12-08 | 北京瑞卓喜投科技发展有限公司 | 针对修改区块体数据的区块链的主动验证方法及系统 |
CN108429759A (zh) * | 2018-03-28 | 2018-08-21 | 电子科技大学成都研究院 | 去中心化存储安全实现方法 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN108924223A (zh) * | 2018-06-29 | 2018-11-30 | 北京金山安全软件有限公司 | 一种区块链的节点同步方法及装置 |
CN109327528A (zh) * | 2018-10-31 | 2019-02-12 | 阿里巴巴集团控股有限公司 | 一种基于区块链的节点管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109886690A (zh) | 2019-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109886690B (zh) | 一种区块链同步账本的方法 | |
JP7362654B2 (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
TWI743881B (zh) | 用於在區塊鏈網路中添加節點的系統和方法 | |
CN111049902B (zh) | 基于区块链网络的数据存储方法、装置、存储介质和设备 | |
CN110532247B (zh) | 数据迁移方法和数据迁移系统 | |
AU2019203861B2 (en) | System and method for ending view change protocol | |
AU2019203862B2 (en) | System and method for ending view change protocol | |
CN103780638B (zh) | 数据同步方法及系统 | |
CN104281506B (zh) | 一种文件系统的数据维护方法及系统 | |
US6532494B1 (en) | Closed-loop node membership monitor for network clusters | |
CN102265277B (zh) | 数据存储系统的操作方法和装置 | |
US7739371B2 (en) | Computer system | |
CN109547211B (zh) | 应用数字签名技术的分级并发拜占庭共识方法及系统 | |
US11200123B2 (en) | Consensus process recovery method and related node | |
CN111163148B (zh) | 一种区块链系统的共识状态的同步方法及相关设备 | |
WO2021047541A1 (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN104536852B (zh) | 数据恢复方法及装置 | |
CN112069259B (zh) | 一种基于区块链的多云环境数据存储系统及方法 | |
CN113268382B (zh) | 在区块链系统中切换分片节点的方法及装置 | |
CN109739684A (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN114328518A (zh) | 基于utxo模型的低存储消耗的方法和系统 | |
CN110825758B (zh) | 一种交易处理的方法及装置 | |
KR20190086301A (ko) | 블록 체인을 이용한 분산 데이터베이스 시스템 및 방법 | |
CN107122442A (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 |