CN110400142B - 数据处理方法、装置及存储介质 - Google Patents
数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110400142B CN110400142B CN201910682868.7A CN201910682868A CN110400142B CN 110400142 B CN110400142 B CN 110400142B CN 201910682868 A CN201910682868 A CN 201910682868A CN 110400142 B CN110400142 B CN 110400142B
- Authority
- CN
- China
- Prior art keywords
- account data
- block
- data backup
- blocks
- node
- 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
- 238000003672 processing method Methods 0.000 title abstract description 15
- 238000012795 verification Methods 0.000 claims abstract description 103
- 238000000034 method Methods 0.000 claims description 41
- 230000004044 response Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000011084 recovery Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/3827—Use of message hashing
-
- 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
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出了一种数据处理方法,包括:生成账户数据备份的标识和验证信息;生成一条包含该账户数据备份的标识和验证信息的交易信息并在区块链中发布;将经过共识处理的包含所述交易信息的区块上链;当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及发送查询到的所述账户数据备份的标识和验证信息给该节点,以使该节点根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。本申请还提出相应的装置和存储介质,能够提高区块链网络中节点加入或者恢复的速度。
Description
本申请是2018年6月1日提交中国专利局、申请号为201810557875.X,发明名称为“数据处理方法、装置及存储介质”的中国专利申请的分案申请。
技术领域
本申请涉及计算机技术领域,特别涉及数据处理方法、装置及存储介质。
背景技术
所谓区块链技术,简称BT(Blockchain Technology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术最初是实现比特币交易的基础技术,目前开始应用于金融等各领域。
发明内容
本申请实例提出了一种数据处理方法,包括:当确定区块链中最近加入的区块的区块高度符合设定条件时,生成账户数据备份的标识和验证信息;生成一条包含该账户数据备份的标识和验证信息的交易信息并在区块链中发布;及将经过共识处理的包含所述交易信息的区块上链;当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及发送查询到的所述账户数据备份的标识和验证信息给该节点,以使该节点根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
在一些实例中,在生成账户数据备份的标识和验证信息之前,所述方法进一步包括:当确定区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
在一些实例中,所述设定条件包括:区块高度等于按设定算法计算得到的数值。
在一些实例中,所述设定算法由以下公式表示:Y=a+b*N,其中,Y为计算得到的数值,a和b均为设定数值,N为任意整数。
在一些实例中,当在所述区块链中加入一个新的区块时确定该新的区块是否符合所述设定条件,当确定该新的区块的区块高度符合所述设定条件时执行所述获取当前账户数据备份的步骤。
在一些实例中,所述账户数据备份包括已发生的交易产生的交易输出信息的备份。
在一些实例中,所述账户数据备份包括所述账户数据的快照。
在一些实例中,所述包含该账户数据备份的标识和验证信息的交易信息进一步包括:该区块高度以及相应的区块头哈希值;上述方法进一步包括:将该账户数据备份的标识、验证信息和区块高度以及相应的区块头哈希值相关联;当接收到其它节点发布的交易信息时,如果根据所述交易信息中的交易类型字段确定所述交易信息包含账户数据备份的信息,则执行如下处理:从所述交易信息中读取账户数据备份的标识、验证信息、区块高度和区块头哈希值;根据读取到的账户数据备份的标识、区块高度和区块头哈希值确定该区块高度对应的账户数据备份是否已经上链;当确定该区块高度对应的账户数据备份已经上链时,确认所述其它节点发布的交易信息不可信;当确定该区块高度对应的账户数据备份未上链时,根据本地保存的该区块高度对应的账户数据备份的区块头哈希值和/或验证信息和从所述交易信息中读取到的验证信息和/或区块头哈希值验证所述其它节点发布的交易信息是否可信。
在一些实例中,上述方法进一步包括:当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求;接收其它节点响应于所述查询请求而发送的关联最大区块高度的账户数据备份;根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块。
在一些实例中,上述方法进一步包括:从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
本申请实例还提出一种数据处理方法,包括:当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求;接收其它节点响应于所述查询请求而发送的所述账户数据备份的标识和验证信息;根据所述账户数据备份的标识从其它节点下载得到所述账户数据备份的数据,根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
在一些实例中,上述方法进一步包括:从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
在一些实例中,所述从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中,包括:从其它节点下载所述创世块;根据所述创世块的交易输出信息得到当前账户数据;根据当前账户数据从所述创世块开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。
在一些实例中,所述从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中,包括:从其它节点查询得到对应第二区块高度的第二账户数据备份并将其作为当前账户数据;根据当前账户数据从该第二区块高度开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。
本申请实例提出了一种数据处理装置,包括:交易信息发布模块,用于生成账户数据备份的标识和验证信息,生成一条包含该账户数据备份的标识和验证信息的交易信息并在区块链中发布;
上链模块,用于将经过共识处理的包含所述交易信息的区块上链;
发送模块,用于当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及发送查询到的所述账户数据备份的标识和验证信息给该节点,以使该节点根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
在一些实例中,所述装置进一步包括:备份模块,当确定区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
在一些实例中,所述包含该账户数据备份的标识和验证信息的交易信息进一步包括:区块高度以及相应的区块头哈希值;其中,所述备份模块进一步将该账户数据备份的标识、验证信息和该区块高度以及相应的区块头哈希值相关联;所述装置进一步包括:验证模块,当接收到其它节点发布的交易信息时,如果根据所述交易信息中的交易类型字段确定所述交易信息包含账户数据备份的信息,则执行如下处理:从所述交易信息中读取账户数据备份的标识、验证信息、区块高度和区块头哈希值;根据读取到的账户数据备份的标识、区块高度和区块头哈希值确定该区块高度对应的账户数据备份是否已经上链;当确定该区块高度对应的账户数据备份已经上链时,确认所述其它节点发布的交易信息不可信;当确定该区块高度对应的账户数据备份未上链时,根据本地保存的该区块高度对应的账户数据备份的区块头哈希值和/或验证信息和从所述交易信息中读取到的验证信息和/或区块头哈希值验证所述其它节点发布的交易信息是否可信。
在一些实例中,上述装置进一步包括:数据同步模块,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求,接收其它节点响应于所述查询请求而发送的关联最大区块高度的账户数据备份,根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块。
在一些实例中,所述数据同步模块进一步从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
本申请实例还提出了一种数据处理装置,包括:请求模块,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求;数据同步模块,接收其它节点响应于所述查询请求而发送的所述账户数据备份的标识和验证信息,根据所述账户数据备份的标识从其它节点下载得到所述账户数据备份的数据,根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
在一些实例中,所述数据同步模块进一步从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
采用本申请提供的上述方案,能够实现区块链节点的快速加入和数据恢复,从而能使节点尽快恢复区块链的运行,提高系统性能。而且,通过将账户数据备份上链,从而能防止恶意节点的攻击,进一步保证数据安全。
附图说明
为了更清楚的说明本申请中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中,
图1为本申请实例涉及的系统构架图;
图2A为区块的数据结构图;
图2B为本申请实例中区块链的局部示意图;
图3为本申请实例中一个应用场景示意图;
图4为本申请实例中的消息交互图;
图5A示出了区块体中记录的交易信息数据结构实例;
图5B示出了本申请实例中交易信息的数据结构实例;
图6A~6D为本申请实例提供的方法流程图;
图7A~7B为本申请实例提供的装置示意图;
图8A~8B为本申请实例提供的装置示意图;及
图9为本申请实例中的计算设备组成结构示意图。
具体实施方式
为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本发明的方案进行阐述。但本文并未示出所有实施方式。实施例中大量的细节仅用于帮助理解本发明的方案,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。说明书和权利要求书中的“包括”是指某种程度上至少包括,应当解释为除了包括之后提到的特征外,其它特征也可以存在。
本申请提出了一种数据处理方法,该方法可应用于图1所示的区块链系统100中。如图1所示,该系统100至少包括:应用层101、网络层103和数据层104,还可包括扩展层102等。应用层101面向用户提供应用客户端11和12(比如用于数字资产交易的钱包客户端等)和交易平台13。其中,应用客户端11和12运行在终端设备上,终端设备可以包括:PC机、手机、平板电脑、掌上电脑、超极本、可穿戴设备等。用户通过操作应用客户端11和12提供的用户界面(UI)可以登录交易平台13完成各种交易操作,比如:数字资产交易、共享账本查阅等等;交易平台13可包括一台服务器或者一个服务器集群,也可以包括分布式系统。扩展层102提供了一些扩展应用业务功能,包括智能合约等侧链应用,也可包括诸如文档、图片、视频等用户数据文件的存储和分享功能。用户通过操作应用客户端11和12提供的UI可以通过扩展层102实现智能合约签署、数据文件存储和分享等功能。网络层103包括分布在各个地区的多个区块链节点14,这些节点14构成了区块链网络,每个节点14可以是一个具有点对点通信功能的计算设备,如台式电脑、笔记本电脑、平板电脑等,这些区块链节点14构成了一个点对点(P2P)网络,每个节点14都存储了一条区块链15的完整数据。其中,网络层103用于实现各节点14之间的通信,封装了节点14之间的P2P组网机制、数据传播机制、验证机制等等。区块链网络本质上是一个P2P网络,每一个节点14既接收信息也产生信息,节点14之间维护一个共同的区块链来保持通信。在一个区块链网络中,每一个节点14都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当整个区块链网络中超过51%的节点验证通过后,这个新区块就可以被添加到区块链上了。数据层104则封装了区块链15的数据结构。如图1所示,一条区块链15由多个区块(区块0~区块n)链接而成。首先建立的区块0是“创世区块”,之后在一定规则下创建的数据结构相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。
图1示出了区块链系统100中的一部分,在实际应用中,网络层103之上还有共识层、激励层等等。其中,共识层封装了共识机制,以便让高度分散的节点14在去中心化的系统中高效地针对区块数据的有效性达成共识,也就是约定所有节点14之间怎么达成共识,去认定一个交易记录集的有效性,这既是认定的手段,也是防止篡改的手段。比较常用的共识机制主要有:工作量证明(Proof of Work)、权益证明(Proof of Stake)、股份授权证明(Delegated Proof of Stake)。
在区块链系统中,数据会以文件的形式被永久记录,这些文件可被称为区块(Block)。一个区块可包含一段时间内发生的交易记录集,并且该交易记录集未被先前的区块记录,每个区块记录了它被创建之前发生的所有事件。所创建的区块依次链接,通常新的区块会加载区块链的尾部并链接到上一个区块。其中,交易(Transaction)代表用户在交易系统中的一次操作,其导致了账本状态的一次改变,会在账本中添加一条记录;区块则记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;链(Chain)由一个个区块按照创建时间顺序串联而成,是整个账本状态变化的日志记录。
区块是一种记录交易的数据结构。每个区块由区块头和区块体组成,区块体负责记录前一段时间内的所有交易信息,区块头则记录了用于链接父区块、挖矿竞争、交易数据验证的信息。图2A示出了区块200A的数据结构。如图2A所示,区块200A包括区块头21和区块体22。区块体22记录了交易数量以及一段时间内发生的各笔交易的信息,如交易1、交易2、……、交易m的交易信息。区块头21记录了以下信息段:
1、版本号,用于标识软件及协议的相关版本信息;
2、父区块哈希值,是区块200A的父区块的区块头哈希值,通过这个值各个区块才能首尾相连组成区块链,并且这个值对区块链的安全性起到了至关重要的作用;
3、Merkle根,这个值是由区块体22中所有交易信息的哈希值再逐级两两哈希计算出来的一个数值,主要用于验证一笔交易是否在这个区块中存在;
4、时间戳,记录该区块200A创建的时间,可精确到秒;
5、难度值,是该区块200A相关数学题的难度目标值;
6、随机数(Nonce),记录解密该区块200A相关数学题的答案的值。
在区块200A加入区块链后,所有矿工(即各个区块链节点14)就开始下一个区块的生成工作,包括:
1、把在本地内存中的交易信息记录到区块体中;
2、在区块体中生成此区块中所有交易信息的Merkle树,把Merkle树根的值(即Merkle根)保存在区块头中;
3、把最近加入区块链的区块200A的父区块的区块头的数据通过SHA256算法生成一个哈希值填入到当前区块的父区块哈希值中;
4、把当前时间保存在时间戳字段中;
5、难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内。
对于一个区块而言,区块头哈希值可以唯标识一个区块,并且任何节点14通过对区块头进行哈希计算都可以独立地获取该区块头哈希值。而区块头哈希值实际上并不包含在本区块的数据结构里,区块头哈希值是当该区块被某个节点14从区块链网络中接收时由该节点14计算出来的。区块头哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。另外,区块在区块链中还具有区块高度(block height),可用来标识区块在区块链中的位置。第一个区块(即创世块)的区块高度为0,引用创世块的区块的高度为1,以此类推,每一个随后被存储在区块链中的区块都比前一区块“高”出一个位置,区块高度值等于前一区块的区块高度值加一。和区块头哈希值不同,区块高度并不是区块的唯一标识,两个或两个以上的区块可能有相同的区块高度,在区块链里争夺同一位置。区块高度也不是区块数据结构的一部分,它并不被存储在区块里。当节点14接收来自区块链网络的区块时,会动态地识别该区块在区块链里的位置(即区块高度)。区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。
图2B示出了本申请实例中区块链200B的局部示意图。图2B中示出了三个区块23、24和25,各个区块的区块高度和区块头哈希值并不记录在区块内部,但是决定着区块之间的链接关系。在区块链节点14本地数据库中的区块链元数据表中可以保存着各个区块的区块高度和区块头哈希值。
在区块链网络中,随时可能有新的节点加入,在新节点加入时,需要从其它节点下载当前区块链的数据。在一些实例中,如图3所示的区块链网络300中,已有三个节点14,当有新节点34请求加入时,新节点34会与其它节点14建立P2P连接并实现信息同步,其中,新节点34会从其它节点下载当前区块链15的完整数据,这样,网络300中,所有节点14和34都保存着同样的区块链15的全量数据。当有节点14或34发生宕机等故障时,需要进行数据恢复,也需要从网络300的其它节点中下载区块链15的完整数据。随着区块链不断扩展以及网络中区块链数量的增加,各个节点存储的数据量会越来越多,到一定阶段就会出现数据同步的瓶颈,当有新节点加入或者已有节点恢复数据时,这个数据同步过程会耗费大量的处理资源,甚至严重影响系统性能。
在另一些实例中,在单个区块链节点14中应用了一种数据处理方法,可以对区块链数据进行备份并将备份的数据恢复到节点14或34中。图4示出了本申请一个实例中提出的这种数据处理方法的流程图。如图4所示,该数据处理方法400始于步骤S401。
在步骤S401中,节点14在确定区块链中最近加入的一个区块的区块高度符合设定条件时,获取当前账户数据备份,并保存此账户数据备份。
在一些实例中,可以事先设定区块高度的增量值N,并且N为固定值,比如N等于1万或者10万等,上述设定条件为区块高度等于N的倍数,这样,每隔N个区块就可以获取一个账户数据备份。例如:设定N等于1万,则当最近加入的一个区块的区块高度等于1万的倍数时,节点14就会获取账户数据备份,即当区块链的区块高度分别达到1万、2万、……、n万时,节点14会获取当时的账户数据备份。
在另一些实例中,可以按其它规则设置上述设定条件,比如根据实现的需要设定区块高度的增量值N按一定规则变化,比如当区块高度符合某个设定公式,这样不会每隔固定数量的区块而获取一个账户数据备份,但是可以在一段时间内获得区块链中对应不同区块高度的多个账户数据备份。
在一些实例中,当节点14在区块链中新加入一个区块时,如果该区块的区块高度符合设定条件,则获取当前账户数据备份。
在一些实例中,上述账户数据备份是节点14中记录的交易经过处理后的内容的备份,比如:比特币交易中的未花费的交易输出(UTXO,Unspent Transaction Output)表,或者以太坊交易中的账户数据库表。在区块链系统中,账户数据中包含已发生的各笔交易中产生的各个账户的资产余额(包括数字资产剩余金额、实物资产的剩余数量等)。比如在比特币交易场景下,UTXO表用于记录所有已经被挖出的、没有花费的比特币的集合。每个UTXO都有一个面值和所有者地址(本质上是密码学公钥的地址所定义)。一笔交易包括一个或多个输入和一个或多个输出。每个输入包含一个对现有UTXO的引用和由与所有者地址相对应的私钥创建的密码学签名。每个输出包含一个新的UTXO。
图5A示出了区块体500A中记录的若干条交易信息实例。在图5A中,交易号为“#1001”的交易中,交易输出信息51记录了账户“A”的账户余额是12.5,交易号为“#2001”的交易中,交易输出信息52记录了账户“A”的账户余额是10,账户“B”的账户余额是2.5,交易号为“#3001”的交易中,交易输出信息53记录了账户“A”的账户余额是7.5,账户“C”的账户余额是5。可以看出,交易号为“#2001”的交易中,账户B的交易输出已被使用完,在当前的账户数据(如UTXO表)中不会记录账户B的余额。
在一些实例中,所获取的账户数据备份可以是账户数据的快照(snapshot)。
在一些实例中,在保存账户数据备份时可以记录相应的区块高度。
在一些实例中,上述账户数据备份保存在节点14本地或者保存在节点14连接的一个集中或分布式数据库系统,其中,可以将区块高度与账户数据备份关联保存。
在一些实例中,由于有恶意节点的存在,为了保证账户数据备份的正确性,可以进一步将账户数据备份上链。具体的,可以将账户数据备份的信息作为一条交易信息记录在区块中。例如,当获得一个区块的账户数据备份后,可以生成该账户数据备份的标识和摘要信息,之后将该账户数据备份的标识(ID)和摘要信息记录在另一区块的一条交易信息中,其中,通过该账户数据备份的标识和摘要信息可以获得一份完整的账户数据备份。这里,账户数据备份可以是账户数据的快照,账户数据备份的标识可以是快照ID,账户数据备份的摘要信息可以是采用数据摘要算法获得的验证码(如MD5值)。
在一些实例中,当基于账户数据备份的信息生成一条交易信息时,可基于区块链系统本身的共识机制,对该备份的正确性进行共识,将经过共识的账户数据备份的信息上链。如:投票共识中,达到指定票数即可认为账户数据快照正确。再比如:工作证明(POW)共识,如果在包含账户数据快照的区块后又生成指定数量的区块,则可认为此快照正确。
在一些实例中,区块中用于记录交易信息的数据结构可以包括:一个或多个交易输入和一个或多个交易输出,其中,一个交易输入至少包括:前一笔交易的哈希值、所花费的交易输出的编号;一个交易输出至少包括输出值(可以是金额或是其它业务数据)和输出地址。在一些实例中,用于记录交易信息的数据结构可以包括交易类型,该交易类型用于指示这条交易信息记录的是资产余额还是账户数据备份的信息或是其它业务数据,根据交易类型指示的所记录的数据类型的不同,交易信息的数据结构可以不同。在图5B所示的区块体500B中,交易号为“#4001”的交易信息中,交易信息54包括交易类型字段,该交易类型字段指示“快照”,则交易信息54会包含“快照”类型对应的各个字段,包括:快照ID、摘要(如MD5值)、区块高度和区块哈希值。交易号为“#3001”的交易信息中,交易信息55包括交易类型字段,该交易类型字段指示“资产交易”,则交易信息55可以包含“资产交易”类型对应的交易输入和交易输出字段。在另一些实例中,可在交易号或者版本号中包含特定字段,该特定字段可以表示该条交易信息中记录有账户数据备份的信息。
当节点14接收到其它节点发布的候选区块时,会基于共识机制对其中的每一条交易信息进行验证。其中,当解析到某一条交易信息中包含账户数据备份的信息时,则可对该账户数据备份的正确性进行验证。在一些实例中,节点14在生成一个账户数据备份时会在自身连接的数据库中记录该账户数据备份对应的区块高度、区块的哈希值等。节点14获取到其它节点发布的包含某个区块高度对应的账户数据备份的信息时,会查询区块链的元数据库来确定该区块高度对应的账户数据备份是否已经上链。如果确定已经上链,说明当前获取到的账户数据备份的信息不可信,验证不通过。如果确定未上链,可以根据自身记录的信息验证自身生成的该区块高度上的账户数据备份与其它节点发布的账户数据备份是否一致,比如验证这两份账户数据备份的数字摘要(如MD5值)是否一致,这两份账户数据备份对应的区块哈希值是否一致,等等。
在步骤S402中,当新节点34请求加入区块链网络时,向各个节点14查询对应最高区块高度的一份账户数据备份,将该账户数据备份作为当前的账户数据。
在一些实例中,账户数据备份在步骤S401中已经上链,即账户数据备份的信息已经记录在某个区块中。在步骤S402中,新节点34可从各个节点14中查询得到区块链中已记录的最新可用的一个账户数据备份的信息(比如查询得到最新可用的快照ID和MD5值),根据该账户数据备份的信息可下载得到账户数据备份的完整数据,其中,可根据快照ID获得快照数据,并根据MD5值对该快照数据的完整性进行验证。这样,可以保证节点34能够获得正确的账户数据备份,防止恶意节点的攻击。
在步骤S403中,新节点34基于当前账户数据开始在区块链中加入后续的已经上链的区块,包括:从其它节点14下载该最高区块高度之上的已上链的区块并上链,并且每当在本地加入一个区块即更新本地的账户数据(比如UTXO表),以将当前加入的区块中记录的交易输出信息记录在账户数据中。
例如:若从各个节点14查询到的账户数据备份对应的区块高度为10000,则该账户数据备份包含区块高度为10000的区块(以下称为区块10000)中记录的交易输出信息,那么节点34会从其它节点14下载区块高度10001的区块(以下称为区块10001,并以此类推,区块高度为N的区块本文称为区块N),还能从其它节点14查询得到区块10000的区块头哈希值,从而能将区块10001链接在区块10000之后,还根据区块10001中记录的交易输出信息更新本地账户数据(比如UTXO表),类似的方式,可以从其它节点14下载已经上链的高度大于10001的各个区块并将它们链接起来,每当将一个区块上链时就更新一次本地账户数据,并计算该区块的区块头哈希值,将该区块的区块头哈希值和区块高度记录在本地的区块元数据库中。
经过上述处理,新节点34不必从区块链网络中下载之前已上链的所有区块而是可以从最近备份的账户数据对应的区块高度开始下载已上链的区块,从而能够快速加入到区块链网络中,以尽快开始处理新的交易信息。上述新节点34也可以是区块链网络中已有的但发生宕机等故障而需要做数据恢复的节点,具体处理流程类似,本文不再详述。
在步骤S404中,在加入到区块链网络中之后,节点34创建候选区块,将最近一段时间出现的新的交易信息加入候选区块并将该候选区块广播到区块链网络中,将经过共识的区块上链并更新本地账户数据。之后,节点34可按同样的方法陆续加入后续的区块,具体处理本文不再赘述。
假定区块链的区块高度已经达到10010,则会首先下载区块10001-10010,然后再通过挖矿(mining)过程创建候选区块10011,将经过共识的区块10011加入到区块链中并更新本地账户数据。其中,上链的区块10011可能是节点34自身创建的经过共识的区块10011也可能是从其它节点14接收的经过共识的区块10011。这里,每个节点会把最近一段时间发生的交易信息收集到一个自身创建的候选区块中,不断生成随机字符串、计算随机数答案,但得到的答案与随机数匹配时就将该候选区块广播到区块链网络中的各个节点,各个节点对该候选区块中的交易进行验证,当该候选区块中的交易被达到一定比例的节点验证通过时,比如有51%以上的节点验证通过,则说明各个节点对该区块达成共识,该区块被接受,从而该区块可以上链。
在一些实例中,节点34还需要下载步骤S402中所述最高区块高度对应的区块以及之前的区块。则可执行步骤S405。在步骤S405中,节点34从各节点14查询并下载步骤S402中所述最高区块高度对应的区块以及之前的区块中的部分或全部区块。
在一些实例中,在步骤S405中,节点34向各个节点14查询对应一定区块高度的一份账户数据备份,将该账户数据备份作为当前的账户数据。节点34基于当前账户数据开始在区块链中加入后续的已经上链的区块,包括:从其它节点14下载该区块高度之上的已上链的区块并上链,并且每当在本地加入一个区块即更新本地的账户数据,将当前加入的区块中记录的交易输出信息记录在账户数据中。
在一些实例中,步骤S405中,节点34可从各个节点14下载创世块(即区块高度为零的区块),并根据创世块的交易输出信息得到初始账户数据,从而节点34可以基于初始账户数据开始在区块链中加入创世块之后的各个区块。与前面步骤类似,每当在本地加入一个区块即更新本地的账户数据,将当前加入的区块中记录的交易输出信息记录在账户数据中。
本申请实例提出了一种数据处理方法,应用于节点14,如图6A所示,所述方法600A始于步骤S601。
步骤S601中,当节点14确定区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
步骤S602中,当接收到来自节点34的查询请求时,将关联最大区块高度的账户数据备份发送给该节点34,以使该节点34根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块并将其加入该节点34本地保存的所述区块链。
在此实例中,区块链网络中的各个节点14可以在多个区块高度上备份账户数据,当有新节点34欲加入网络或者恢复数据时,可以响应于新节点34的查询请求而将最近备份的账户数据(即对应最大区块高度的账户数据)提供给新节点34,使新节点34可以从最近备份的账户数据对应的区块高度开始同步已上链的区块,从而能显著提高节点34加入网络和恢复数据的速度,节省处理资源,使节点34能快速开始运行区块链,提升了系统性能。由于不同节点14在相同区块高度上备份的账户数据是相同的,所以此实例中新节点34获得的账户数据备份的准确性是可以得到保证的,从而保证了节点34恢复得到的各个区块的数据准确性。
在一些实例中,上述设定条件包括:区块高度等于按设定算法计算得到的数值。此设定算法可由以下公式表示:Y=a+b*N,其中,Y为计算得到的数值,a和b均为设定数值,a和b可以为相同或不同的数值,N为任意整数。这样,节点14可以每隔一定数量的区块就获得一个账户数据备份。
在一些实例中,上述步骤S601中,当在所述区块链中加入一个新的区块时节点14确定该新的区块是否符合所述设定条件,当确定该新的区块的区块高度符合所述设定条件时执行所述获取当前账户数据备份的步骤。
在一些实例中,所述账户数据备份包括已发生的交易产生的交易输出信息的备份,如比特币系统中的UTXO表,以太坊系统中的账户数据表。
在一些实例中,所述账户数据备份包括所述账户数据的快照。具体的前文已有描述。
在一些实例中,上述步骤S601可进一步包括:节点14生成该账户数据备份的标识和验证信息,生成一条包含该账户数据备份的标识和验证信息的交易信息并发布,将经过共识处理的包含所述交易信息的区块上链(此上链的区块可能是本节点14发布的也可能是其它节点发布的)。上述步骤S602中,所述将关联最大区块高度的账户数据备份发送给节点34,包括:节点14从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息(如账户数据的快照标识及其MD5值);发送查询到的所述账户数据备份的标识和验证信息给节点34,以使节点34根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证。此实例中,节点14可以将获得的账户备份上链,从而能防止恶意节点的攻击,进一步保证数据安全。
在一些实例中,节点14生成的所述包含该账户数据备份的标识和验证信息的交易信息可进一步包括:该账户数据备份关联的区块高度以及相应的区块头哈希值。上述方法600A可进一步包括:
1、将该账户数据备份的标识、验证信息和该区块高度以及相应的区块头哈希值相关联。
2、当接收到其它节点发布的交易信息时,如果根据所述交易信息中的交易类型字段确定所述交易信息包含账户数据备份的信息,则执行如下处理:
1)从所述交易信息中读取账户数据备份的标识、验证信息、区块高度和区块头哈希值;
2)根据读取到的账户数据备份的标识、区块高度和区块头哈希值确定该区块高度对应的账户数据备份是否已经上链;
3)当确定该区块高度对应的账户数据备份已经上链时,确认所述其它节点发布的交易信息不可信;及
4)当确定该区块高度对应的账户数据备份未上链时,根据本地保存的该区块高度对应的账户数据备份的区块头哈希值和/或验证信息和从所述交易信息中读取到的验证信息和/或区块头哈希值验证所述其它节点发布的交易信息是否可信。
这样,节点14还能依据自身生成的账户数据备份的相关信息对其它节点发布的账户数据备份进行验证,从而完成对账户数据备份的共识过程,将经过各节点共识的(即可信的)账户数据备份上链。
以上实例中,节点14作为区块链网络中的已有节点可以在多个区块高度上分别备份账户数据,从而能为新节点34或者请求恢复数据的节点34提供一定区块高度上的账户数据备份,以使节点34快速完成区块数据同步。
在一些实例中,节点14在一些情况下可能请求重新加入网络或者恢复数据,此时,上述方法600A进一步包括步骤S603。在步骤S603中,当欲加入区块链网络或者恢复数据时,节点14向所述区块链网络中的其它节点发送查询请求;接收其它节点响应于所述查询请求而发送的关联最大区块高度的账户数据备份;根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块。这样,节点14就恢复了一部分区块的数据,可以开始正常运行区块链,在区块链中加入新的区块。
当节点14开始正常运行区块链之后,节点14根据需要可以进一步将部分或全部其它已上链的区块中的下载到本地并加入本地保存的区块链。在一些实例中,上述方法可进一步包括步骤S604,其中,节点14从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。这样,节点14首先恢复出最近上链的一些区块,让区块链快速运行起来,之后再根据需要把之前上链的一些区块同步过来,即保证了节点加入网络或数据恢复的时效,又兼顾到区块数据同步的需要。
本申请实例还提出了一种数据处理方法,该方法应用于欲加入区块链网络或者请求恢复数据的节点34。如图6B所示,所述方法600B始于步骤S611。
在步骤S611中,当节点34欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点14发送查询请求。
在步骤S612中,接收其它节点14响应于所述查询请求而发送的关联一个区块高度的账户数据备份,根据该账户数据备份从其关联的所述区块高度开始下载区块链中已经上链的区块。此区块高度可以是节点14最近获取的账户数据备份对应的区块高度。
这样,节点34不必同步区块链中所有的区块,而是从一定的区块高度开始根据账户数据备份来同步已上链的区块,从而能快速完成必要区块的同步,可以开始运行区块链,开始向区块链加入新的区块。
上述实例中,在步骤S612中,所述接收其它节点响应于所述查询请求而发送的关联一个区块高度的账户数据备份,包括:接收其它节点响应于所述查询请求而发送的所述账户数据备份的标识和验证信息;根据所述账户数据备份的标识从其它节点下载得到所述账户数据备份的数据,根据所述验证信息对所述下载得到的数据进行验证。
上述实例中,所述方法600B可进一步包括步骤S613,其中,节点34从其它节点14下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
在一些实例中,节点34从其它节点14下载所述区块链中从创世块到所述最大区块高度对应区块中的全部区块并将下载的区块依次加入本地保存的所述区块链中,具体包括:从其它节点14下载所述创世块;根据所述创世块的交易输出信息得到当前账户数据;根据当前账户数据从所述创世块开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。
在一些实例中,节点34从其它节点14下载所述区块链中从创世块到所述最大区块高度对应区块中的部分区块并将下载的区块依次加入本地保存的所述区块链中,具体包括:从其它节点查询得到对应第二区块高度的第二账户数据备份并将其作为当前账户数据;根据当前账户数据从该第二区块高度开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。这里,第二区块高度可以是低于步骤S612中的一个区块高度,具体的从哪个区块高度开始下载区块,与具体实现需求有关。
图6C为本申请实例提供的数据处理方法的流程图。如图6C所示,该方法应用于节点14,包括以下步骤:
S631,生成账户数据备份的标识和验证信息。
S632,生成一条包含该账户数据备份的标识和验证信息的交易信息并在区块链中发布。
S633,将经过共识处理的包含所述交易信息的区块上链。
S634,当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息。
S635,发送查询到的所述账户数据备份的标识和验证信息给该节点,以使该节点根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
上述步骤S631至S635的具体实现可以参见前面的各个实例,在此不再赘述。在本申请实例中,通过将账户数据备份上链,从而能防止恶意节点的攻击,进一步保证数据安全。
图6D为本申请实例提供的数据处理方法的另一流程图,应用于节点34,如图6D所示,该方法包括以下步骤:
S641,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求。
S642,接收其它节点响应于所述查询请求而发送的所述账户数据备份的标识和验证信息。
S643,根据所述账户数据备份的标识从其它节点下载得到所述账户数据备份的数据,根据所述验证信息对所述下载得到的数据进行验证。
S644,如果验证通过,则根据所述账户数据备份开始运行区块链。
上述步骤S641至S644的具体实现可以参见前面的各个实例,在此不再赘述。通过本申请实例提供的上述方法,能够实现区块链节点的快速加入和数据恢复,从而能使节点尽快恢复区块链的运行,提高系统性能。而且,通过将账户数据备份上链,从而能防止恶意节点的攻击,进一步保证数据安全。
基于以上方法实例,本申请实例还提出了相应的数据处理装置。
图7A示出了一种数据处理装置,该装置应用于节点14,如图7A所示,装置700A包括:
备份模块701,当确定区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
发送模块702,当接收到来自一个节点34的查询请求时,将关联最大区块高度的账户数据备份发送给该节点34,以使该节点34根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块并将其加入该节点34本地保存的所述区块链。
在一些实例中,装置700A进一步包括:
交易信息发布模块703,生成该账户数据备份的标识和验证信息,生成一条包含该账户数据备份的标识和验证信息的交易信息并发布。
上链模块704,将经过共识处理的包含所述交易信息的区块上链。
其中,发送模块702从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息,发送查询到的所述账户数据备份的标识和验证信息给该节点34,以使该节点34根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证。
在一些实例中,所述包含该账户数据备份的标识和验证信息的交易信息进一步包括:该区块高度以及相应的区块头哈希值。其中,备份模块701进一步将该账户数据备份的标识、验证信息和该区块高度以及相应的区块头哈希值相关联。装置700A进一步包括:验证模块705,当接收到其它节点发布的交易信息时,如果根据所述交易信息中的交易类型字段确定所述交易信息包含账户数据备份的信息,则执行如下处理:
1)从所述交易信息中读取账户数据备份的标识、验证信息、区块高度和区块头哈希值;
2)根据读取到的账户数据备份的标识、区块高度和区块头哈希值确定该区块高度对应的账户数据备份是否已经上链;
3)当确定该区块高度对应的账户数据备份已经上链时,确认所述其它节点发布的交易信息不可信;及
4)当确定该区块高度对应的账户数据备份未上链时,根据本地保存的该区块高度对应的账户数据备份的区块头哈希值和/或验证信息和从所述交易信息中读取到的验证信息和/或区块头哈希值验证所述其它节点发布的交易信息是否可信。
在一些实例中,装置700A进一步包括:数据同步模块706,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求,接收其它节点响应于所述查询请求而发送的关联最大区块高度的账户数据备份,根据该账户数据备份从其关联的区块高度开始下载所述区块链中已经上链的区块。
在一些实例中,数据同步模块706进一步从其它节点下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
图7B示出了一种数据处理装置,该装置应用于节点14,如图7B所示,该装置700B包括:
交易信息发布模块711,用于生成账户数据备份的标识和验证信息,生成一条包含该账户数据备份的标识和验证信息的交易信息并在区块链中发布;
上链模块712,用于将经过共识处理的包含所述交易信息的区块上链;
发送模块713,用于当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及发送查询到的所述账户数据备份的标识和验证信息给该节点,以使该节点根据所述账户数据备份的标识下载得到所述账户数据备份的数据并根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
在一些实例中,所述装置进一步包括:
备份模块714,当确定区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
在一些实例中,所述装置还包括:验证模块715和/或数据同步模块716。其中,验证模块715和数据同步模块716的功能和实现与前述的验证模块705和数据同步模块706相同,在此不再赘述。
图8A示出了一种数据处理装置,该装置应用于节点34,如图8A所示,装置800A包括:
请求模块801,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点14发送查询请求.
数据同步模块802,接收其它节点14响应于所述查询请求而发送的关联一个区块高度的账户数据备份,根据该账户数据备份从其关联的所述区块高度开始下载区块链中已经上链的区块。
在一些实例中,数据同步模块802进一步从其它节点14下载所述区块链中从创世块到所述最大区块高度对应区块中的部分或全部区块并将下载的区块依次加入本地保存的所述区块链中。
图8B示出了示出了一种数据处理装置,该装置应用于节点34,如图8B所示,该装置800B包括:
请求模块811,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求;
数据同步模块812,接收其它节点响应于所述查询请求而发送的所述账户数据备份的标识和验证信息,根据所述账户数据备份的标识从其它节点下载得到所述账户数据备份的数据,根据所述验证信息对所述下载得到的数据进行验证,如果验证通过,则根据所述账户数据备份开始运行区块链。
上述各模块功能的实现原理前文已有详述,这里不再赘述。
在一些实例中,上述数据处理装置700A、700B、800A和800B可运行在各种计算设备中,并加载在该计算设备的存储器中。上述节点14和34可以实现为网络节点服务器。
图9示出了数据处理装置700A、700B、800A或800B所在的计算设备的组成结构图。如图9所示,该计算设备包括一个或者多个处理器(CPU)902、通信模块904、存储器906、用户接口910,以及用于互联这些组件的通信总线908。
处理器902可通过通信模块904接收和发送数据以实现网络通信和/或本地通信。
用户接口910包括一个或多个输出设备912,其包括一个或多个扬声器和/或一个或多个可视化显示器。用户接口910也包括一个或多个输入设备914,其包括诸如,键盘,鼠标,声音命令输入单元或扩音器,触屏显示器,触敏输入板,姿势捕获摄像机或其他输入按钮或控件等。
存储器906可以是高速随机存取存储器,诸如DRAM、SRAM、DDR RAM、或其他随机存取固态存储设备;或者非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备,或其他非易失性固态存储设备。
存储器906存储处理器902可执行的指令集,包括:
操作系统916,包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;
应用918,包括各种应用程序,其能够实现上述各实例中的处理流程,比如可以包括图7A和7B所示的装置700A、700B和/或图8A和8B所示的装置800A、800B。在一些实例中,装置700A可包括图7A所示的各模块701~706中的部分或全部模块,装置700B可包括图7B所示的各模块711~714中的部分或全部模块。各模块701~706和711~714可以存储有机器可执行指令。处理器902通过执行存储器906中各模块701~706或711~714中的机器可执行指令,进而能够实现上述各模块701~706或711~714的功能。在一些实例中,装置800A可包括图8A所示的各模块801~802中的部分或全部模块,装置800B可包括图8B所示的各模块811~812中的部分或全部模块。各模块801~802和811~812可以存储有机器可执行指令。处理器902通过执行存储器906中各模块801~802或811~812中的机器可执行指令,进而能够实现上述各模块801~802或811~812的功能。
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
各实施例中的硬件模块可以以硬件方式或硬件平台加软件的方式实现。上述软件包括机器可读指令,存储在非易失性存储介质中。因此,各实施例也可以体现为软件产品。
各例中,硬件可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。
另外,本申请的每个实例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本申请。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本申请,本申请还提供了一种非易失性存储介质,其中存储有数据处理程序,这种数据处理程序可用于执行本申请上述方法实例中的任何一种实例。
图7A、图7B、图8A和图8B中的模块对应的机器可读指令可以使计算机上操作的操作系统等来完成这里描述的部分或者全部操作。非易失性计算机可读存储介质可以是插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器。安装在扩展板或者扩展单元上的CPU等可以根据指令执行部分和全部实际操作。
非易失性计算机可读存储介质包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
综上所述,权利要求的范围不应局限于以上描述的例子中的实施方式,而应当将说明书作为一个整体并给予最宽泛的解释。
Claims (16)
1.一种数据处理方法,其特征在于,所述方法包括:
获得区块链中对应不同区块高度的多个账户数据备份;
对于每个账户数据备份,生成一条包含该账户数据备份的标识和验证信息的交易信息,将经过共识处理的包含所述交易信息的区块上链;
当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及
发送所述最近上链的账户数据备份的标识和验证信息给该节点,以使该节点根据所述最近上链的账户数据备份的标识下载得到所述最近上链的账户数据备份的数据,并根据所述最近上链的账户数据备份的验证信息对下载得到的数据进行验证,如果验证通过,则从所述最近上链的账户数据备份对应的区块高度开始同步已上链的区块。
2.根据权利要求1所述的方法,其特征在于,标识为账户数据备份的快照标识;验证信息为账户数据备份的信息摘要算法MD5值。
3.根据权利要求1所述的方法,其特征在于,所述获得区块链中对应不同区块高度的多个账户数据备份包括:
当确定所述区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
4.根据权利要求3所述的方法,其中,所述设定条件包括:区块高度等于按设定算法计算得到的数值;其中,所述设定算法由以下公式表示:
Y=b*N,其中,Y为所述区块高度,b为倍数,N为所述区块高度的增量值,N为任意正整数。
5.根据权利要求1所述的方法,其中,账户数据备份包括已发生的交易产生的交易输出信息的备份。
6.根据权利要求1所述的方法,其中,账户数据备份包括账户数据的快照。
7.根据权利要求1所述的方法,其中,所述交易信息进一步包括:区块高度以及相应的区块头哈希值;
所述方法进一步包括:
将该账户数据备份的标识、验证信息和该区块高度以及相应的区块头哈希值相关联;
当接收到其它节点发布的第二交易信息时,如果根据所述第二交易信息中的交易类型字段,确定所述第二交易信息包含账户数据备份的信息,则执行如下处理:
从所述第二交易信息中读取账户数据备份的标识、验证信息、区块高度和区块头哈希值;
根据读取到的账户数据备份的标识、区块高度和区块头哈希值,确定该区块高度对应的账户数据备份是否已经上链;
当确定该区块高度对应的账户数据备份已经上链时,确认所述第二交易信息不可信;及
当确定该区块高度对应的账户数据备份未上链时,根据本地保存的该区块高度对应的账户数据备份的区块头哈希值和/或验证信息和从所述第二交易信息中读取到的验证信息和/或区块头哈希值,验证所述第二交易信息是否可信。
8.一种数据处理方法,其特征在于,所述方法包括:
当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求,其中,其他节点获得区块链中对应不同区块高度的多个账户数据备份;对于每个账户数据备份,生成一条包含该账户数据备份的标识和验证信息的交易信息,将经过共识处理的包含所述交易信息的区块上链;
接收其它节点响应于所述查询请求而发送的最近上链的账户数据备份的标识和验证信息;
根据所述最近上链的账户数据备份的标识从其它节点下载得到所述最近上链的账户数据备份的数据,根据所述最近上链的账户数据备份的验证信息对下载得到的数据进行验证;
如果验证通过,则从所述最近上链的账户数据备份对应的区块高度开始同步已上链的区块。
9.根据权利要求8所述的方法,进一步包括:
在当前节点开始正常运行所述区块链之后,从其它节点下载所述区块链中从创世块到最大区块高度对应区块中的部分或全部区块,并将下载的区块依次加入本地保存的所述区块链中。
10.根据权利要求9所述的方法,其中,所述从其它节点下载所述区块链中从创世块到最大区块高度对应区块中的部分或全部区块,并将下载的区块依次加入本地保存的所述区块链中,包括:
从其它节点下载所述创世块;
根据所述创世块的交易输出信息得到当前账户数据;及
根据当前账户数据从所述创世块开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。
11.根据权利要求9所述的方法,其中,所述从其它节点下载所述区块链中从创世块到最大区块高度对应区块中的部分或全部区块,并将下载的区块依次加入本地保存的所述区块链中,包括:
从其它节点查询得到对应第二区块高度的第二账户数据备份并将其作为当前账户数据;及
根据当前账户数据从该第二区块高度开始下载所述区块链中已经上链的区块并将其加入本地保存的所述区块链中,每当将一个区块加入所述区块链则根据该区块的交易输出信息更新当前账户数据。
12.一种数据处理装置,其特征在于,所述装置包括:
交易信息发布模块,用于获得区块链中对应不同区块高度的多个账户数据备份;对于每个账户数据备份,生成一条包含该账户数据备份的标识和验证信息的交易信息;
上链模块,用于将经过共识处理的包含所述交易信息的区块上链;
发送模块,用于当接收到来自一个节点的查询请求时,从所述区块链中查询得到最近上链的账户数据备份的标识和验证信息;及发送所述最近上链的账户数据备份的标识和验证信息给该节点,以使该节点根据所述最近上链的账户数据备份的标识下载得到所述最近上链的账户数据备份的数据,并根据所述最近上链的账户数据备份的验证信息对下载得到的数据进行验证,如果验证通过,则从所述最近上链的账户数据备份对应的区块高度开始同步已上链的区块。
13.根据权利要求12所述的装置,其特征在于,进一步包括:
备份模块,当确定所述区块链中最近加入的区块的区块高度符合设定条件时,获取当前账户数据备份,将该账户数据备份与该区块高度关联起来并保存。
14.一种数据处理装置,其特征在于,所述装置包括:
请求模块,当欲加入区块链网络或者恢复数据时,向所述区块链网络中的其它节点发送查询请求,其中,其他节点获得区块链中对应不同区块高度的多个账户数据备份;对于每个账户数据备份,生成一条包含该账户数据备份的标识和验证信息的交易信息,将经过共识处理的包含所述交易信息的区块上链;
数据同步模块,接收其它节点响应于所述查询请求而发送的最近上链的账户数据备份的标识和验证信息;根据所述最近上链的账户数据备份的标识从其它节点下载得到所述最近上链的账户数据备份的数据,根据所述最近上链的账户数据备份的验证信息对下载得到的数据进行验证;如果验证通过,则从所述最近上链的账户数据备份对应的区块高度开始同步已上链的区块。
15.一种存储介质,其特征在于,存储有机器可读指令,使至少一个处理器执行如权利要求1-11任一项所述的方法。
16.一种计算设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910682868.7A CN110400142B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910682868.7A CN110400142B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
CN201810557875.XA CN108805570B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810557875.XA Division CN108805570B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110400142A CN110400142A (zh) | 2019-11-01 |
CN110400142B true CN110400142B (zh) | 2021-06-25 |
Family
ID=64090255
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910682868.7A Active CN110400142B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
CN201810557875.XA Active CN108805570B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810557875.XA Active CN108805570B (zh) | 2018-06-01 | 2018-06-01 | 数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN110400142B (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726229B (zh) * | 2018-11-30 | 2023-10-10 | 深圳市元征科技股份有限公司 | 一种区块链数据存储方法及装置 |
CN109636388B (zh) * | 2018-12-07 | 2024-02-23 | 深圳市智税链科技有限公司 | 区块链网络中的数据处理方法、装置、介质及电子设备 |
CN111382119B (zh) * | 2018-12-29 | 2023-08-22 | 华为技术有限公司 | 区块数据归档方法及相关设备 |
CN109672755B (zh) * | 2019-01-24 | 2021-10-22 | 中国互联网络信息中心 | 一种基于区块链的域名记录更新方法及系统 |
CN109727040B (zh) * | 2019-01-28 | 2020-09-15 | 杭州复杂美科技有限公司 | 数据发布方法、数据调用方法、设备和存储介质 |
CN110096505B (zh) * | 2019-03-31 | 2021-05-11 | 杭州复杂美科技有限公司 | 一种数据存储方法和系统、设备及存储介质 |
CN110086856B (zh) * | 2019-04-01 | 2022-02-01 | 达闼机器人有限公司 | 区块链节点的控制方法、装置、存储介质及电子设备 |
WO2020199703A1 (zh) * | 2019-04-01 | 2020-10-08 | 杜晓楠 | 一种区块链交易的方法、装置和系统 |
CN110011788B (zh) * | 2019-04-10 | 2020-12-25 | 深圳市网心科技有限公司 | 一种基于区块链的数据处理方法、系统及相关设备 |
CN110190949B (zh) * | 2019-05-31 | 2023-04-14 | 杭州复杂美科技有限公司 | 用于大数据量资源上链的方法和系统、设备及存储介质 |
CN110362633B (zh) * | 2019-07-23 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 区块数据存储方法、装置、计算机设备及存储介质 |
CN110473104B (zh) * | 2019-08-20 | 2023-11-17 | 深圳市迅雷网络技术有限公司 | 一种交易处理方法及相关设备 |
CN110489488B (zh) * | 2019-08-21 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和装置 |
CN110503558B (zh) * | 2019-08-29 | 2023-10-03 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的处理方法及装置 |
CN110543488B (zh) * | 2019-09-11 | 2022-06-07 | 深圳市迅雷网络技术有限公司 | 一种验证节点更新方法、装置及设备 |
CN110650097B (zh) * | 2019-09-20 | 2022-05-31 | 腾讯科技(深圳)有限公司 | 一种数据传播方法、装置以及计算机可读存储介质 |
CN110609872B (zh) * | 2019-09-20 | 2021-03-05 | 北京海益同展信息科技有限公司 | 用于同步节点数据的方法和装置 |
CN110602148B (zh) * | 2019-10-10 | 2021-07-06 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN110737664B (zh) * | 2019-10-21 | 2022-11-25 | 深圳前海微众银行股份有限公司 | 一种区块链节点同步的方法及装置 |
CN110933040B (zh) * | 2019-11-05 | 2021-11-12 | 武汉菲旺软件技术有限责任公司 | 基于区块链的数据上链方法、装置、设备及介质 |
CN111008218B (zh) * | 2019-12-04 | 2022-05-24 | 福州博泉网络科技有限公司 | 区块链链上数据结构化存储方法及系统 |
CN111259298B (zh) * | 2020-01-16 | 2023-06-27 | 深圳市华海同创科技有限公司 | 基于区块链的话题生成方法、节点服务器及存储介质 |
CN111241069B (zh) * | 2020-01-19 | 2023-10-20 | 上海墨珩网络科技有限公司 | 一种基于区块链的数据扁平化方法及系统 |
CN111355608A (zh) * | 2020-02-18 | 2020-06-30 | 杭州复杂美科技有限公司 | 一种区块链回滚异常识别方法和系统、设备及存储介质 |
CN111339191B (zh) * | 2020-02-20 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN112001731B (zh) * | 2020-04-02 | 2022-05-24 | 支付宝(杭州)信息技术有限公司 | 区块链账户余额的存证、恢复方法及装置 |
CN111475547B (zh) * | 2020-04-10 | 2024-03-29 | 张家界万达信息网络科技工程有限公司 | 一种基于区块高度关联区块与输出关联信息的方法及系统 |
CN111507720B (zh) | 2020-04-22 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 基于区块链的数据快照方法、装置及计算机可读存储介质 |
CN111526015A (zh) * | 2020-04-26 | 2020-08-11 | 昆明大棒客科技有限公司 | 数据采集上链方法、装置、设备和存储介质 |
CN111612471A (zh) * | 2020-06-08 | 2020-09-01 | 杭州复杂美科技有限公司 | 区块还原方法、设备和存储介质 |
CN111681011B (zh) * | 2020-06-16 | 2023-04-28 | 中国工商银行股份有限公司 | 数据处理方法、区块链系统、计算机系统和介质 |
CN111507723A (zh) * | 2020-06-18 | 2020-08-07 | 海南安迈云网络技术有限公司 | 一种数字资产管理交易加密的方法 |
CN111756829A (zh) * | 2020-06-19 | 2020-10-09 | 深圳市蔚链科技有限公司 | 账本数据同步方法、装置、设备和存储介质 |
CN112184436B (zh) * | 2020-09-24 | 2021-07-16 | 成都质数斯达克科技有限公司 | 数据同步方法、电子设备及可读存储介质 |
CN112383610B (zh) * | 2020-11-11 | 2022-12-09 | 上海保险交易所股份有限公司 | 区块链状态数据的同步处理方法及系统 |
CN112732484A (zh) * | 2020-12-30 | 2021-04-30 | 普华云创科技(北京)有限公司 | 一种基于端对端节点的数据备份系统 |
CN112699170B (zh) * | 2020-12-31 | 2022-10-21 | 上海竞动科技有限公司 | 基于多源数据结构区块链的查询方法与系统 |
CN113032485B (zh) * | 2021-03-16 | 2024-08-09 | 上海图灵加佳网络科技有限公司 | 区块链节点的数据存储装置与数据存储方法 |
CN113094209A (zh) * | 2021-04-08 | 2021-07-09 | 中国工商银行股份有限公司 | 基于区块链的备份记录数据处理方法、装置、介质和产品 |
CN113505024B (zh) * | 2021-07-08 | 2024-02-23 | 网易(杭州)网络有限公司 | 联盟链的数据处理方法、装置、电子设备及存储介质 |
CN113657900B (zh) * | 2021-07-13 | 2024-03-22 | 中国人民银行数字货币研究所 | 一种跨链交易验证方法、系统以及跨链交易系统 |
CN113744064B (zh) * | 2021-11-04 | 2022-02-22 | 支付宝(杭州)信息技术有限公司 | 在区块链节点中执行交易的方法及装置 |
CN114520733B (zh) * | 2021-12-29 | 2023-05-26 | 中国科学院信息工程研究所 | 数据传输与处理可信认证的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040594A (zh) * | 2017-04-12 | 2017-08-11 | 山大地纬软件股份有限公司 | 基于pbft的许可区块链节点准入的方法及装置 |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN107729383A (zh) * | 2017-09-18 | 2018-02-23 | 联动优势科技有限公司 | 一种索引库生成方法、数据验证方法、装置及平台 |
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101661933B1 (ko) * | 2015-12-16 | 2016-10-05 | 주식회사 코인플러그 | 블록체인을 기반으로 하는 공인인증서 인증시스템 및 이를 이용한 인증방법 |
CN106530088B (zh) * | 2016-12-19 | 2023-11-17 | 杜伯仁 | 基于区块链安全节点对证券产品进行交易的方法 |
CN107423152B (zh) * | 2017-04-24 | 2019-05-21 | 杭州趣链科技有限公司 | 一种区块链共识节点自动恢复方法 |
CN107526775B (zh) * | 2017-07-18 | 2020-06-16 | 杭州趣链科技有限公司 | 一种区块链数据归档的方法 |
-
2018
- 2018-06-01 CN CN201910682868.7A patent/CN110400142B/zh active Active
- 2018-06-01 CN CN201810557875.XA patent/CN108805570B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040594A (zh) * | 2017-04-12 | 2017-08-11 | 山大地纬软件股份有限公司 | 基于pbft的许可区块链节点准入的方法及装置 |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN107729383A (zh) * | 2017-09-18 | 2018-02-23 | 联动优势科技有限公司 | 一种索引库生成方法、数据验证方法、装置及平台 |
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108805570A (zh) | 2018-11-13 |
CN108805570B (zh) | 2021-05-25 |
CN110400142A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110400142B (zh) | 数据处理方法、装置及存储介质 | |
US20210027289A1 (en) | Asset transaction method, storage medium, and computer device | |
CN111951004B (zh) | 用于世界状态完整性验证的方法和系统 | |
US10671308B2 (en) | Private and fault-tolerant storage of segmented data | |
CN109299336A (zh) | 数据备份方法、装置、存储介质及计算设备 | |
CN111488393B (zh) | 虚拟区块链 | |
US11599431B2 (en) | Database optimized disaster recovery orchestrator | |
EP3769230B1 (en) | Taking snapshots of blockchain data | |
CN112840617A (zh) | 存储区块链资源的区块链通知板 | |
CN111831740B (zh) | 对等体的同步 | |
US20200084041A1 (en) | Automated Blockchain Protocol Update | |
CN115769241A (zh) | 针对经许可的区块链的隐私保护架构 | |
US11003523B2 (en) | Database optimized disaster recovery testing | |
US11177938B2 (en) | Database composite endorsement | |
CN112036876B (zh) | 基于元数据的背书 | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN111698198B (zh) | 秘密生成和份额分发 | |
CN112287034A (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
KR20230034931A (ko) | 암호 데이터 입력 블록체인 데이터 구조 | |
US11194792B2 (en) | Taking snapshots of blockchain data | |
CN111339551A (zh) | 数据的验证方法及相关装置、设备 | |
CN112052473B (zh) | 地理位置合规性 | |
Spenger | Using Blockchain for Tamper-Proof Broadcast Protocols | |
CN117668100A (zh) | 基于区块链网络的数据处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40015718 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |