CN109522362B - 基于区块链数据的非完全数据同步方法、***及设备 - Google Patents

基于区块链数据的非完全数据同步方法、***及设备 Download PDF

Info

Publication number
CN109522362B
CN109522362B CN201811206580.4A CN201811206580A CN109522362B CN 109522362 B CN109522362 B CN 109522362B CN 201811206580 A CN201811206580 A CN 201811206580A CN 109522362 B CN109522362 B CN 109522362B
Authority
CN
China
Prior art keywords
node
target
block
data
target block
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.)
Expired - Fee Related
Application number
CN201811206580.4A
Other languages
English (en)
Other versions
CN109522362A (zh
Inventor
赵荣
李斌
张勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Rui Zhuo Xi Tou Technology Development Co ltd
Original Assignee
Beijing Rui Zhuo Xi Tou Technology Development Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Rui Zhuo Xi Tou Technology Development Co ltd filed Critical Beijing Rui Zhuo Xi Tou Technology Development Co ltd
Priority to CN201811206580.4A priority Critical patent/CN109522362B/zh
Publication of CN109522362A publication Critical patent/CN109522362A/zh
Application granted granted Critical
Publication of CN109522362B publication Critical patent/CN109522362B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及区块链技术领域,尤其涉及一种基于区块链数据的非完全数据同步方法、***及设备,其中,所述方法包括:向目标节点请求同步目标区块;接收所请求的目标区块;若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据存储至业务链。本发明实施例达到了以下技术效果:解决了现有技术中存在的随着区块链数据量的不断增长,共享数据所耗费的时间不断增加,容易导致区块链网络拥堵及区块存储负担,从而达到了缩减共享周期,提高共享效率,节省存储数量,保证数据安全的目的。

Description

基于区块链数据的非完全数据同步方法、***及设备
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链数据的非完全数据同步方法、***及设备。
背景技术
区块链技术也称为分布式账本技术,本质上是一种去中心化的分布式互联网数据库。采用区块链技术架构的网络可视为区块链网络,该区块链网络中包含多个区块链节点,任一区块链节点可对应至少一个区块链,任一区块链可包含至少一个区块。
现有技术中,区块链应用可以分为两类:
公有链:所有节点都可以参与共识、竞争记账权。公有链是面向大众,任何个体或者团体都可以读取、发送交易且交易能够获得该区块链的有效确认、参与共识的区块链。数据公开。其特点是:中立、开放、交易速度慢、需要“挖矿”或类似共识方法,常用P2P网络,抗审查性高。
许可链:只有被许可的节点才能共识、竞争记账权并创建区块,包含私有链、联盟链、企业链等所有非公有链。数据可以公开或不公开。其中,私有链是指写入权限在一个组织手里的区块链;联盟链是指由几个人或者组织、公司、政府控制的区块链。许可链的特点是:交易速度快、不需要“挖矿”类的全网共识、交易成本低(交易只需几个许可节点验证即可);可审查,会占据商业应用领域的主流。
具体地,业务数据上链(即被存储在区块链网络中)的过程包含三个阶段:
1、受理阶段,可以理解为待上链的业务数据被区块链网络中的某一区块链节点接收到,并由该区块链节点受理该业务数据;
2、共识阶段,可以理解为区块链节点在受理该业务数据之后,需要由区块链网络中的其他区块链节点参与对该业务数据进行共识处理,业务数据通过共识后,可以进入存储阶段;
3、存储阶段,可以理解为区块链节点将共识通过的业务数据进行上链处理。
区块链技术中的共识方法即共识算法是区块链网络中实现不同区块链节点之间建立信任、获取权益的重要方法。所谓共识方法,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的多个个节点能够达成共识,就可以认为全网对此也能够达成共识。区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识方法。
在不同共识方法下,区块的生成过程会略有不同。但总体来说,各节点在处理接收到的区块信息后,交易过程大致都是按照如下流程:节点接收到多个交易信息,放入交易池中;节点从交易池中获取当前收到的交易信息,对交易进行排序并按顺序执行;执行完毕之后,节点生成完整区块,最终将其广播。
区块链作为新兴技术,还有很多问题亟待完善,区块链协议面临着扩展性的障碍。区块链的扩展性问题大致分为两个方面:
1、交易吞吐量和交易确认延迟的扩展性障碍;
2、区块链全局账本数据存储瓶颈造成的扩展性障碍。
以业务数据中区块上链这一业务请求为例,在共识阶段,任一区块链节点在接收到区块上链请求后,需要由区块链网络中其它所有区块链节点向全网广播自身对本次上链请求的签名,在通过共识后方可上链。在现有的已经使用区块链当中,不管是公有链,私有链还是联盟链,都是在一条链上处理交易的,考虑到区块链节点众多,当有共识需求时,容易导致区块链网络拥堵。比如:某公司有不同的机构,如把这些机构的业务都放在一条链上,会造成链上处理业务的压力增大,处理业务时间会变长,不利于业务的拓展。并且,在区块中需要存储全网所有区块链节点的签名,随着区块链上的节点不断增加,共享数据和共识所耗费的时间也会不断增加,这样给区块造成存储负担。
区块链网络是一个基于分布式原理的网络***,理论上来讲各网络节点上的内容是一致的,想获取区块链中的数据,只要从其中任意一个节点,或者本地节点获取即可。
但是在实际的应用当中,本地节点可以自由配置当前本地节点的类型。例如,可以选择性地将本地节点配置为包含完整区块链数据的全记录节点(full-node),或包含部分区块链数据的非全记录节点(n-full-node)。
本地存储哪些数据可以由当前本地节点类型及具体配置所决定,因此本地节点的区块链中不一定存有当前网络中完整区块链的所有数据。在本地节点配置为非全记录节点时,在进行数据同步时需要向所在区块链网络的其它节点获取所需的数据,当前现有的数据同步方法难以实现在上述场景中进行安全且高效的数据同步。
因而,亟需找到一种新的区块链同步方案,以克服上述问题。
发明内容
针对现有技术的不足,本发明提供了一种基于区块链数据的非完全数据同步方法、***及设备,解决了现有技术中存在的随着区块链数据量的不断增长,共享数据所耗费的时间不断增加,容易导致区块链网络拥堵及区块存储负担,从而达到了缩减共享周期,提高共享效率,节省存储数量,保证数据安全的目的,其具体方案如下:
第一方面,本发明提供了一种基于区块链数据的非完全数据同步方法,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,所述方法包括:
向目标节点请求同步目标区块;
接收所请求的目标区块;
若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;
所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。
优选地,所述完全节点对所接收的目标区块进行验证,包括:
所述完全节点比较接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希是否一致,若一致,则所述完全节点将所述目标区块进行共识校验,若通过校验,则表明通过验证。
优选地,向目标节点请求同步目标区块,包括:
将所述主链划分为多个区块子链;
向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
优选地,所述将所述目标区块分片之前,所述方法包括:
若接收到至少两个目标区块,所述至少两个目标区块分别由不同的所述区块子链节点发送,且对应的上一目标区块相同,则根据所述至少两个目标区块中的变更时间排序将所述至少两个目标区块加入所述完全节点所在的区块链中。
优选地,所述将所述目标区块分片,包括:
将所述目标区块切分为一个或多个分片数据,并对所述一个或多个分片数据进行随机编码为相应的一个或多个目标分片数据。
优选地,所述将获得的分片数据广播至业务链以存储,包括
获取所述目标区块的哈希和各个目标分片数据的哈希,将所述目标区块的哈希和各个目标分片数据的哈希一起广播至业务链以存储。
优选地,所述方法还包括:
获取所述目标分片数据的哈希;
根据所述目标分片数据的哈希查找对应的目标区块并获取对应的目标分片数据内容;
将所述目标分片数据的哈希及所述目标分片数据内容存储至所述非完全节点所在的业务链。
第二方面,本发明提供了一种区域共识***,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,所述***包括:多个
请求模块,用于向目标节点请求同步目标区块;
接收模块,用于接收所请求的目标区块;
调度模块,用于若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;
处理模块,用于所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。
第三方面,本发明提供了一种区域共识设备,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,所述设备包括:
通信总线,用于实现处理器与存储器间的连接通信;
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如下步骤:
向目标节点请求同步目标区块;
接收所请求的目标区块;
若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;
所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的方法。
有益效果:本发明的基于区块链数据的非完全数据同步方法及***,通过使用业务链上的多个节点对区块进行分块存储,改变了现有技术中基于区块链的分布式存储所采用的整体存储的方式,能够满足数据量较大的区块存储;避免整体存储模式下潜在的诸如宕机、运行故障等状况下区块被整体损坏的风险,即使风险存在,也可从其他运行正常的区块链节点中获取到同步数据,提高了数据存储的安全性;由于区块链具备的防篡改特性,致使任意一方无法私自对区块链中的存储数据进行篡改,从而有效保证了存储数据的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,附图中的实施例不构成对本发明的任何限制,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明基于区块链数据的非完全数据同步方法实施例流程示意图。
图2是本发明基于区块链数据的非完全数据同步***实施例结构示意图。
图3是本发明基于区块链数据的非完全数据同步设备实施例结构示意图。
具体实施方式
下面结合附图与实施例对本发明技术方案作进一步详细的说明,这是本发明的较佳实施例。应当理解,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例技术方案的主要思想:向目标节点请求同步目标区块;接收所请求的目标区块;若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据存储至业务链。
为了更好的理解上述的技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一
本发明一实施例提供了一种基于区块链数据的非完全数据同步方法,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,如图1所示,该数据同步方法具体可以包括如下步骤:
步骤S101,向目标节点请求同步目标区块;
在本申请实施例中,本步骤用于业务链定时向同步对象的目标节点发起数据同步。具体地,可选取近距离的目标节点,向目标节点发送所述同步请求;业务链接收目标节点回传的同步数据。
步骤S102,接收所请求的目标区块;
在本申请实施例中,业务链可通过接收交互平台转发所请求的目标区块,该交互平台可以用于接收项目发起方发送的项目创建请求,并创建对应的业务项目,当该业务项目处于运行状态时,该交互平台还可接收用户针对该业务项目的业务处理请求,并根据该业务项目以及该业务处理请求进行业务处理。
其中,该交互平台可以是众筹平台,则该众筹平台既可接收由筹款方发送的众筹项目创建请求,并创建对应的众筹项目,也可接收由跟投人发送的认筹请求,该认筹请求可以是针对处于筹资状态的众筹项目的认筹请求。
在本申请实施例中,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个共识节点。
在本申请实施例中,一个节点受理区块的业务,该节点可以称之为业务受理节点,并发起对该业务的共识。除了该节点之外,还可以包含多个节点,若这些节点参与该业务的共识处理,那么这些节点可以称之为共识节点。此外,这些节点也可以作为业务受理节点。例如:区块链的主链中包含5个节点(例如:节点1、节点2、节点3、节点4和节点5),每一个节点既可以是业务受理节点又可以是共识节点。假设节点1受理了某业务数据,那么节点1此时是业务受理节点,节点2、节点3、节点4和节点5则作为该业务数据的共识节点参与对该业务数据的共识处理。
在本申请实施例中,区块链的主链的节点可以作为业务数据的受理节点,也可以不作为业务数据的受理节点,而作为用于发起共识处理的节点,或者本次共识处理的完全节点,这里不做具体限定。
若区块链的主链的节点作为业务数据的受理节点,那么该区块链节点可以从本地存储的所受理的业务数据中捞取一部分业务数据作为待共识的业务数据,以便于后续针对捞取的该部分业务数据发起共识处理。
若业务链的节点不作为业务数据的受理节点而作为本次共识处理的完全节点,那么该区块链节点可以从待共识的业务数据资源池中捞取一部分业务数据作为待共识的业务数据,以便于后续发起针对捞取到的该部分业务数据的共识处理。
具体地,所述业务链的节点接收交互平台发送的目标区块,在接收到待共识的目标区块后,获取产生该待共识的业务请求的相应的业务数据。由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该目标区块对应的业务处理数据是由哪个用户方受理的。
步骤S103,若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点。
在本申请实施例中,如上所述,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个对外共识节点,称之完全节点。此外,任何主体也都可以对接到交互平台,成为对内共识节点,称之非完全节点。
其中,所述对内共识节点的类型可以是个体、企业、监管机构等,也可以是信用高、信用中、信用低等不同的信用等级。总之,对内共识节点的类型可以根据实际情况划分,本申请对此不做限制。
具体而言,对于个人或个体,其可以在终端上安装内置对接标准协议的客户端,以后就可以通过该客户端随时提交业务请求了;对于企业,尤其是向用户提供服务的企业,其可以将其应用与配置中心对接,当其向用户提供服务时,可以提交本次服务对应的业务请求,以供相应的共识子***进行共识校验。
例如,某电商平台的客户端可以内置对接标准协议,与交互平台对接,当用户在该电商平台购物时,电商平台请求共识子网络对该用户所购商品是否是正品、该用户是否支付成功等事项进行共识校验,并反馈给用户。
例如,普通个人可以成为对内共识节点,当两个对内共识节点进行转账时,其中一个对内共识节点可以发起业务请求,请求支付领域对应的区域区块链网络为本次转账进行共识校验,并将本次转账对应的区块记录在区域区块链上。
总之,在本***的架构下,应用场景非常丰富,个人可以成为对内共识节点,请求校验其产生的各种事件,企业可以成为对内共识节点,增强用户对它的信任。
在本申请实施例中,所述非完全节点是对内节点主体,在本***中可以赋予对内节点主体以节点的身份,但是这些非完全节点在本申请的应用场景下是不能参与对外共识校验的,在本申请的应用场景下的对外共识校验是由完全节点执行的。
但是,在本申请的应用场景的所述非完全节点可以执行对内共识校验,如上所述,基于所述业务链可以将整个社会纳入统一的信用体系,当所述业务链对应于一个公有区块链网络时,该公有区块链网络只需要与所述业务链对接即可,并不会影响该公有区块链网络即主链原本的运转。
具体地,如果所述业务链的接收节点是对内共识的所述非完全节点,则将步骤S102的接收的所述目标区块转发至对外共识的所述完全节点。
在一个可选的实施例中,所述完全节点可通过Raft算法选举的领导节点。在Raft协议中,分布式网络中的各节点可分为领导节点以及下属节点,该领导节点,具有向该分布式网络中的下属节点发送心跳信息的权限,而该分布式网络中的下属节点在接收到该领导节点发送的心跳信息后,可将该心跳信息更新在该下属节点本地的信息日志等内容。另外,当由该下属节点发起业务时,该下属节点可将该业务发送至该领导节点,并由该领导节点以进行业务处理,或者分发至其他下属节点进行业务处理。
其中,该领导节点可以是在该区块链网络开始运行时,由各内部共识节点选举产生的,具体该领导节点如何选举,以及该领导节点如何换届,可如现有技术中的Raft协议一致,本申请对此不做限定。
进一步地,在本申请实施例中,当该分布式协议为Raft协议时,由于Raft协议中的领导节点需要向该网络中的各节点发送心跳信息,所以该共识节点在确定该区块链网络中的领导节点时,可以通过接收到的心跳信息,确定该领导节点。若该共识节点在心跳信息对应的时间周期没有接收到领导节点发送的心跳信息时,则该共识节点可以等待其他共识节点发起选举,并接收候选人节点发送的投票请求,并通过响应该投票请求,选出下一届任期的领导节点。当然,该共识节点也可成为选举人节点,并向其他共识节点发送投票请求,则该共识节点也可成为该区块链网络中的领导节点。由于上述领导节点的确定属于现有技术,所以具体的技术细节本申请不再赘述。
需要说明的是,该完全节点或非完全节点可以是终端,如,手机、个人电脑/平板电脑等设备,或者该完全节点或非完全节点也可以是服务器,则该服务器可为该非完全节点或非完全节点对应的服务器,并且该服务器可以是单独的一台设备,也可以是有多台设备组成的***,只要该设备可作为该区块链网络的非完全节点或非完全节点接收与该共识节点对应的交互平台发送的业务数据,并且具有在该区块链网络中发起共识的权限即可,本申请对该非完全节点或非完全节点的具体为何种设备此并不做限定。
步骤S104,所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。详细描述具体如下:
步骤S1041,所述完全节点比较接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希是否一致,若一致,则所述完全节点将所述目标区块进行共识校验,若通过校验,则表明通过验证。
如上所述,由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该区块对应的业务数据是由哪个用户方受理的。
具体地,首先,将接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希进行比较是否一致,若比较结果是一致的,则表示所述目标区块是最新的区块,这样业务链节点的数据于目标节点的数据实现了数据同步。然后,在业务链节点的数据于目标节点的数据实现了数据同步的基础上,对所述目标区块进行共识校验,具体地是所述完全节点可用自身所持有的公钥,对该目标区块中包含的签名信息进行验证,在确定出该签名信息通过验证后,再根据该目标区块中包含的内容,对该目标区块的头哈希值进行验证。在确定该目标区块的头哈希值通过验证后,则可确定该目标区块通过验证,即目标区块通过业务链验证,则可将该目标区块作为区块存储在自身的业务链中。其中,校验码类型可以配置为各种本领域技术人员常用的加密算法或校验算法所生成的校验码。
需要说明的是,在区块链技术领域,具体是各节点根据共识算法对目标区块进行共识校验的,并且,区块链网络有权访问各节点的账户、交易记录等隐私,用于校验。本申请实施例中的共识校验流程与现有的共识校验流程并无区别,因此在后续说明书不会赘述。
步骤S1042,将所述目标区块切分为一个或多个分片数据,并对所述一个或多个分片数据进行随机编码为相应的一个或多个目标分片数据。
优选地,为了保证整个对内共识节点集合中各节点的负载均衡,可确定节点集合中各节点的负载能力,进而可确定各节点当前空闲资源的多少,从而确定所述目标区块切分的分片数据的数量。
进一步,为了进一步提高目标区块的安全性,对所述一个或多个分片数据进行随机编码。其中,本发明实施例中的随机编码与现有的随机线性网络编码并无区别,因此在后续说明书不会赘述。
步骤S1043,获取所述目标区块的哈希和各个目标分片数据的哈希,将所述目标区块的哈希和各个目标分片数据的哈希一起广播至业务链以存储。
在本发明实施例中,本步骤主要用于记录在业务链中存储的目标区块的分布情况,并建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位的三者之间的索引关系,以备业务链的非完全节点存储目标区块时使用。
具体地,所述完全节点获取目标区块的哈希及各个目标分片数据的哈希,根据各个目标分片数据的哈希形成目标分片数据哈希集合;建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表之间的索引关系,将目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表及索引关系一起广播至业务链以存储。
步骤S105,接收所述分片数据并将所述分片数据分布式存储。详细描述具体如下:
步骤S1051,获取所述目标分片数据的哈希;
由于每一个目标分片均有唯一的一个哈希与其对应,用以对目标分片进行标识和区分,因此业务链的非完全节点需要获取目标分片的哈希。
步骤S1052,根据所述目标分片数据的哈希查找对应的目标区块并获取对应的目标分片数据内容;
具体地,根据目标分片数据的哈希查找对应的目标分片数据哈希集合,根据目标分片数据哈希集合与目标区块的哈希、目标区块的统一资源定位表之间的索引关系,获取目标分片数据哈希集合对应的目标区块的统一资源定位表,根据目标区块的统一资源定位表读取目标区块,根据目标区块分片阈值从目标区块中获取对应的目标分片数据内容。
步骤S1053,将所述目标分片数据的哈希及所述目标分片数据内容存储至所述非完全节点所在的业务链。
在实际应用中,业务链上的节点首先完成目标分片哈希集合中第一个哈希对应的目标分片的存储,然后通过业务链上的其它节点完成目标分片数据哈希集合中下一个哈希对应的目标分片数据的存储,如此反复直至遍历目标分片数据哈希集合中的全部哈希至将整个目标区块存储完毕。
业务链的其他非完全节点接收到该分片数据后,可以采用同样的方式,将该分片数据作为区块存储在自身存储的业务链中。
本发明实施例的区块分块存储方法,改变了现有技术中基于区块链的分布式存储所采用的整体存储的方式,使用业务链上的多个节点对区块进行分块存储,能够满足数据量较大的区块存储;此外,本发明提供的区块分块存储方法还提高了数据存储的安全性,避免整体存储模式下潜在的区块被整体损坏的风险。
实施例二
本发明一实施例提供了一种基于区块链数据的非完全数据同步方法,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,如图1所示,该数据同步方法具体可以包括如下步骤:
步骤S201,向目标节点请求同步目标区块;
在本申请实施例中,本步骤用于业务链定时向同步对象的目标节点发起数据同步。具体地,可选取近距离的目标节点,向目标节点发送所述同步请求;业务链接收目标节点回传的同步数据。
与实施一不同的是,在本申请实施例中,首先将所述主链划分为多个区块子链,然后向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
具体地,将主链划分为长度为256的多个区块子链,依次请求遍历各区块子链,各区块子链的区块的队列号为1-256、257-512、513-768、……,等。
在一个可选的实施例中,还可根据实际需求将区块子链的长度设置为其它不同大小的固定长度或可变长度。
步骤S202,接收所请求的目标区块;
在本申请实施例中,业务链可通过接收交互平台转发所请求的目标区块,该交互平台可以用于接收项目发起方发送的项目创建请求,并创建对应的业务项目,当该业务项目处于运行状态时,该交互平台还可接收用户针对该业务项目的业务处理请求,并根据该业务项目以及该业务处理请求进行业务处理。
其中,该交互平台可以是众筹平台,则该众筹平台既可接收由筹款方发送的众筹项目创建请求,并创建对应的众筹项目,也可接收由跟投人发送的认筹请求,该认筹请求可以是针对处于筹资状态的众筹项目的认筹请求。
在本申请实施例中,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个共识节点。
在本申请实施例中,一个节点受理区块的业务,该节点可以称之为业务受理节点,并发起对该业务的共识。除了该节点之外,还可以包含多个节点,若这些节点参与该业务的共识处理,那么这些节点可以称之为共识节点。此外,这些节点也可以作为业务受理节点。例如:区块链的主链中包含5个节点(例如:节点1、节点2、节点3、节点4和节点5),每一个节点既可以是业务受理节点又可以是共识节点。假设节点1受理了某业务数据,那么节点1此时是业务受理节点,节点2、节点3、节点4和节点5则作为该业务数据的共识节点参与对该业务数据的共识处理。
在本申请实施例中,区块链的主链的节点可以作为业务数据的受理节点,也可以不作为业务数据的受理节点,而作为用于发起共识处理的节点,或者本次共识处理的完全节点,这里不做具体限定。
若区块链的主链的节点作为业务数据的受理节点,那么该区块链节点可以从本地存储的所受理的业务数据中捞取一部分业务数据作为待共识的业务数据,以便于后续针对捞取的该部分业务数据发起共识处理。
若业务链的节点不作为业务数据的受理节点而作为本次共识处理的完全节点,那么该区块链节点可以从待共识的业务数据资源池中捞取一部分业务数据作为待共识的业务数据,以便于后续发起针对捞取到的该部分业务数据的共识处理。
具体地,所述业务链的节点接收交互平台发送的目标区块,在接收到待共识的目标区块后,获取产生该待共识的业务请求的相应的业务数据。由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该目标区块对应的业务处理数据是由哪个用户方受理的。
步骤S203,若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点。
在本申请实施例中,如上所述,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个对外共识节点,称之完全节点。此外,任何主体也都可以对接到交互平台,成为对内共识节点,称之非完全节点。
其中,所述对内共识节点的类型可以是个体、企业、监管机构等,也可以是信用高、信用中、信用低等不同的信用等级。总之,对内共识节点的类型可以根据实际情况划分,本申请对此不做限制。
具体而言,对于个人或个体,其可以在终端上安装内置对接标准协议的客户端,以后就可以通过该客户端随时提交业务请求了;对于企业,尤其是向用户提供服务的企业,其可以将其应用与配置中心对接,当其向用户提供服务时,可以提交本次服务对应的业务请求,以供相应的共识子***进行共识校验。
例如,某电商平台的客户端可以内置对接标准协议,与交互平台对接,当用户在该电商平台购物时,电商平台请求共识子网络对该用户所购商品是否是正品、该用户是否支付成功等事项进行共识校验,并反馈给用户。
例如,普通个人可以成为对内共识节点,当两个对内共识节点进行转账时,其中一个对内共识节点可以发起业务请求,请求支付领域对应的区域区块链网络为本次转账进行共识校验,并将本次转账对应的区块记录在区域区块链上。
总之,在本***的架构下,应用场景非常丰富,个人可以成为对内共识节点,请求校验其产生的各种事件,企业可以成为对内共识节点,增强用户对它的信任。
在本申请实施例中,所述非完全节点是对内节点主体,在本***中可以赋予对内节点主体以节点的身份,但是这些非完全节点在本申请的应用场景下是不能参与对外共识校验的,在本申请的应用场景下的对外共识校验是由完全节点执行的。
但是,在本申请的应用场景的所述非完全节点可以执行对内共识校验,如上所述,基于所述业务链可以将整个社会纳入统一的信用体系,当所述业务链对应于一个公有区块链网络时,该公有区块链网络只需要与所述业务链对接即可,并不会影响该公有区块链网络即主链原本的运转。
具体地,如果所述业务链的接收节点是对内共识的所述非完全节点,则将步骤S102的接收的所述目标区块转发至对外共识的所述完全节点。
在一个可选的实施例中,所述完全节点可通过Raft算法选举的领导节点。在Raft协议中,分布式网络中的各节点可分为领导节点以及下属节点,该领导节点,具有向该分布式网络中的下属节点发送心跳信息的权限,而该分布式网络中的下属节点在接收到该领导节点发送的心跳信息后,可将该心跳信息更新在该下属节点本地的信息日志等内容。另外,当由该下属节点发起业务时,该下属节点可将该业务发送至该领导节点,并由该领导节点以进行业务处理,或者分发至其他下属节点进行业务处理。
其中,该领导节点可以是在该区块链网络开始运行时,由各内部共识节点选举产生的,具体该领导节点如何选举,以及该领导节点如何换届,可如现有技术中的Raft协议一致,本申请对此不做限定。
进一步地,在本申请实施例中,当该分布式协议为Raft协议时,由于Raft协议中的领导节点需要向该网络中的各节点发送心跳信息,所以该共识节点在确定该区块链网络中的领导节点时,可以通过接收到的心跳信息,确定该领导节点。若该共识节点在心跳信息对应的时间周期没有接收到领导节点发送的心跳信息时,则该共识节点可以等待其他共识节点发起选举,并接收候选人节点发送的投票请求,并通过响应该投票请求,选出下一届任期的领导节点。当然,该共识节点也可成为选举人节点,并向其他共识节点发送投票请求,则该共识节点也可成为该区块链网络中的领导节点。由于上述领导节点的确定属于现有技术,所以具体的技术细节本申请不再赘述。
需要说明的是,该完全节点或非完全节点可以是终端,如,手机、个人电脑/平板电脑等设备,或者该完全节点或非完全节点也可以是服务器,则该服务器可为该非完全节点或非完全节点对应的服务器,并且该服务器可以是单独的一台设备,也可以是有多台设备组成的***,只要该设备可作为该区块链网络的非完全节点或非完全节点接收与该共识节点对应的交互平台发送的业务数据,并且具有在该区块链网络中发起共识的权限即可,本申请对该非完全节点或非完全节点的具体为何种设备此并不做限定。
步骤S204,所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。详细描述具体如下:
步骤S2041,比较接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希是否一致,若一致,则将所述目标区块进行校验,若通过校验,则表明通过验证。
如上所述,由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该区块对应的业务数据是由哪个用户方受理的。
具体地,首先,将接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希进行比较是否一致,若比较结果是一致的,则表示所述目标区块是最新的区块,这样业务链节点的数据于目标节点的数据实现了数据同步。然后,在业务链节点的数据于目标节点的数据实现了数据同步的基础上,对所述目标区块进行共识校验,具体地是所述完全节点可用自身所持有的公钥,对该目标区块中包含的签名信息进行验证,在确定出该签名信息通过验证后,再根据该目标区块中包含的内容,对该目标区块的头哈希值进行验证。在确定该目标区块的头哈希值通过验证后,则可确定该目标区块通过验证,即目标区块通过业务链验证,则可将该目标区块作为区块存储在自身的业务链中。其中,校验码类型可以配置为各种本领域技术人员常用的加密算法或校验算法所生成的校验码。
需要说明的是,在区块链技术领域,具体是各节点根据共识算法对目标区块进行共识校验的,并且,区块链网络有权访问各节点的账户、交易记录等隐私,用于校验。
步骤S2042,若接收到至少两个目标区块,所述至少两个目标区块分别由不同的所述区块子链节点发送,且对应的上一目标区块相同,则根据所述至少两个目标区块中的变更时间排序将所述至少两个目标区块加入所述完全节点所在的区块链中。
由上述可知,在向目标节点请求同步目标区块时,是首先将所述主链划分为多个区块子链,然后向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
在实际应用中,存在多个不同的区块子链节点同时向完全节点发送各自目标区块的情况发生,在这种情况下,不同的区块子链节点的目标区块中包含的上一区块的头哈希值可能是相同的,若完全节点确定这些目标区块均通过验证,则将这些目标区块存储在区块链的过程中,将出现支链的情况,从而增加了区块链的复杂度。
因而,在本发明实施例中,完全节点在接收至少两个特殊目标区块时,可以根据各特殊目标区块中包含的区块生成时间和/或各特殊区块的头哈希值,对各特殊目标区块进行排序,进而基于得到的排序结果,对各特殊目标区块包含的上一目标区块的头哈希值以及各特殊目标区块对应的头哈希值进行更新,并对这些特殊目标区块进行存储。
步骤S2043,将所述目标区块切分为一个或多个分片数据,并对所述一个或多个分片数据进行随机编码为相应的一个或多个目标分片数据。
优选地,为了保证整个对内共识节点集合中各节点的负载均衡,可确定节点集合中各节点的负载能力,进而可确定各节点当前空闲资源的多少,从而确定所述目标区块切分的分片数据的数量。
进一步,为了进一步提高目标区块的安全性,对所述一个或多个分片数据进行随机编码。其中,本发明实施例中的随机编码与现有的随机线性网络编码并无区别,因此在后续说明书不会赘述。
步骤S2044,获取所述目标区块的哈希和各个目标分片数据的哈希,将所述目标区块的哈希和各个目标分片数据的哈希一起广播至业务链以存储。
在本发明实施例中,本步骤主要用于记录在业务链中存储的目标区块的分布情况,并建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位的三者之间的索引关系,以备业务链的非完全节点存储目标区块时使用。
具体地,所述完全节点获取目标区块的哈希及各个目标分片数据的哈希,根据各个目标分片数据的哈希形成目标分片数据哈希集合;建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表之间的索引关系,将目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表及索引关系一起广播至业务链以存储。
步骤S205,接收所述分片数据并将所述分片数据分布式存储。详细描述具体如下:
步骤S2051,获取所述目标分片数据的哈希;
由于每一个目标分片均有唯一的一个哈希与其对应,用以对目标分片进行标识和区分,因此业务链的非完全节点需要获取目标分片的哈希。
步骤S2052,根据所述目标分片数据的哈希查找对应的目标区块并获取对应的目标分片数据内容;
具体地,根据目标分片数据的哈希查找对应的目标分片数据哈希集合,根据目标分片数据哈希集合与目标区块的哈希、目标区块的统一资源定位表之间的索引关系,获取目标分片数据哈希集合对应的目标区块的统一资源定位表,根据目标区块的统一资源定位表读取目标区块,根据目标区块分片阈值从目标区块中获取对应的目标分片数据内容。
步骤S2053,将所述目标分片数据的哈希及所述目标分片数据内容存储至所述非完全节点所在的业务链。
在实际应用中,业务链上的节点首先完成目标分片哈希集合中第一个哈希对应的目标分片的存储,然后通过业务链上的其它节点完成目标分片数据哈希集合中下一个哈希对应的目标分片数据的存储,如此反复直至遍历目标分片数据哈希集合中的全部哈希至将整个目标区块存储完毕。
业务链的其他非完全节点接收到该分片数据后,可以采用同样的方式,将该分片数据作为区块存储在自身存储的业务链中。
本发明实施例的区块分块存储方法,改变了现有技术中基于区块链的分布式存储所采用的整体存储的方式,使用业务链上的多个节点对区块进行分块存储,能够满足数据量较大的区块存储;此外,本发明提供的区块分块存储方法还提高了数据存储的安全性,避免整体存储模式下潜在的区块被整体损坏的风险。
实施例三
本发明一实施例提供了一种基于区块链数据的非完全数据同步***,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,如图2所示,该同步***具体可以包括如下模块:
请求模块,用于向目标节点请求同步目标区块;
接收模块,用于接收所请求的目标区块;
调度模块,用于若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;
处理模块,用于所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。
实施例四
本发明一实施例提供了一种基于区块链数据的非完全数据同步设备,所述区块链包括主链与多个业务链,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,如图3所示,该同步***具体可以包括如下模块:
通信总线,用于实现处理器与存储器间的连接通信;
存储器,用于存储计算机程序;存储器可能包含高速RAM存储器,也可能还包含非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器可选的可以包含至少一个存储装置。
处理器,用于执行上述计算机程序以实现如下步骤:
步骤S301,向目标节点请求同步目标区块;
在本申请实施例中,本步骤用于业务链定时向同步对象的目标节点发起数据同步。具体地,可选取近距离的目标节点,向目标节点发送所述同步请求;业务链接收目标节点回传的同步数据。
与实施一不同的是,在本申请实施例中,首先将所述主链划分为多个区块子链,然后向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
具体地,将主链划分为长度为256的多个区块子链,依次请求遍历各区块子链,各区块子链的区块的队列号为1-256、257-512、513-768、……,等。
在一个可选的实施例中,还可根据实际需求将区块子链的长度设置为其它不同大小的固定长度或可变长度。
步骤S302,接收所请求的目标区块;
在本申请实施例中,业务链可通过接收交互平台转发所请求的目标区块,该交互平台可以用于接收项目发起方发送的项目创建请求,并创建对应的业务项目,当该业务项目处于运行状态时,该交互平台还可接收用户针对该业务项目的业务处理请求,并根据该业务项目以及该业务处理请求进行业务处理。
其中,该交互平台可以是众筹平台,则该众筹平台既可接收由筹款方发送的众筹项目创建请求,并创建对应的众筹项目,也可接收由跟投人发送的认筹请求,该认筹请求可以是针对处于筹资状态的众筹项目的认筹请求。
在本申请实施例中,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个共识节点。
在本申请实施例中,一个节点受理区块的业务,该节点可以称之为业务受理节点,并发起对该业务的共识。除了该节点之外,还可以包含多个节点,若这些节点参与该业务的共识处理,那么这些节点可以称之为共识节点。此外,这些节点也可以作为业务受理节点。例如:区块链的主链中包含5个节点(例如:节点1、节点2、节点3、节点4和节点5),每一个节点既可以是业务受理节点又可以是共识节点。假设节点1受理了某业务数据,那么节点1此时是业务受理节点,节点2、节点3、节点4和节点5则作为该业务数据的共识节点参与对该业务数据的共识处理。
在本申请实施例中,区块链的主链的节点可以作为业务数据的受理节点,也可以不作为业务数据的受理节点,而作为用于发起共识处理的节点,或者本次共识处理的完全节点,这里不做具体限定。
若区块链的主链的节点作为业务数据的受理节点,那么该区块链节点可以从本地存储的所受理的业务数据中捞取一部分业务数据作为待共识的业务数据,以便于后续针对捞取的该部分业务数据发起共识处理。
若业务链的节点不作为业务数据的受理节点而作为本次共识处理的完全节点,那么该区块链节点可以从待共识的业务数据资源池中捞取一部分业务数据作为待共识的业务数据,以便于后续发起针对捞取到的该部分业务数据的共识处理。
具体地,所述业务链的节点接收交互平台发送的目标区块,在接收到待共识的目标区块后,获取产生该待共识的业务请求的相应的业务数据。由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该目标区块对应的业务处理数据是由哪个用户方受理的。
步骤S303,若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点。
在本申请实施例中,如上所述,交互平台对外提供对接标准协议,具体而言,各业务链网络可以根据交互平台提供的应用编程接口(API),开发内置标准协议的客户端,与交互平台对接成为一个对外共识节点,称之完全节点。此外,任何主体也都可以对接到交互平台,成为对内共识节点,称之非完全节点。
其中,所述对内共识节点的类型可以是个体、企业、监管机构等,也可以是信用高、信用中、信用低等不同的信用等级。总之,对内共识节点的类型可以根据实际情况划分,本申请对此不做限制。
具体而言,对于个人或个体,其可以在终端上安装内置对接标准协议的客户端,以后就可以通过该客户端随时提交业务请求了;对于企业,尤其是向用户提供服务的企业,其可以将其应用与配置中心对接,当其向用户提供服务时,可以提交本次服务对应的业务请求,以供相应的共识子***进行共识校验。
例如,某电商平台的客户端可以内置对接标准协议,与交互平台对接,当用户在该电商平台购物时,电商平台请求共识子网络对该用户所购商品是否是正品、该用户是否支付成功等事项进行共识校验,并反馈给用户。
例如,普通个人可以成为对内共识节点,当两个对内共识节点进行转账时,其中一个对内共识节点可以发起业务请求,请求支付领域对应的区域区块链网络为本次转账进行共识校验,并将本次转账对应的区块记录在区域区块链上。
总之,在本***的架构下,应用场景非常丰富,个人可以成为对内共识节点,请求校验其产生的各种事件,企业可以成为对内共识节点,增强用户对它的信任。
在本申请实施例中,所述非完全节点是对内节点主体,在本***中可以赋予对内节点主体以节点的身份,但是这些非完全节点在本申请的应用场景下是不能参与对外共识校验的,在本申请的应用场景下的对外共识校验是由完全节点执行的。
但是,在本申请的应用场景的所述非完全节点可以执行对内共识校验,如上所述,基于所述业务链可以将整个社会纳入统一的信用体系,当所述业务链对应于一个公有区块链网络时,该公有区块链网络只需要与所述业务链对接即可,并不会影响该公有区块链网络即主链原本的运转。
具体地,如果所述业务链的接收节点是对内共识的所述非完全节点,则将步骤S102的接收的所述目标区块转发至对外共识的所述完全节点。
在一个可选的实施例中,所述完全节点可通过Raft算法选举的领导节点。在Raft协议中,分布式网络中的各节点可分为领导节点以及下属节点,该领导节点,具有向该分布式网络中的下属节点发送心跳信息的权限,而该分布式网络中的下属节点在接收到该领导节点发送的心跳信息后,可将该心跳信息更新在该下属节点本地的信息日志等内容。另外,当由该下属节点发起业务时,该下属节点可将该业务发送至该领导节点,并由该领导节点以进行业务处理,或者分发至其他下属节点进行业务处理。
其中,该领导节点可以是在该区块链网络开始运行时,由各内部共识节点选举产生的,具体该领导节点如何选举,以及该领导节点如何换届,可如现有技术中的Raft协议一致,本申请对此不做限定。
进一步地,在本申请实施例中,当该分布式协议为Raft协议时,由于Raft协议中的领导节点需要向该网络中的各节点发送心跳信息,所以该共识节点在确定该区块链网络中的领导节点时,可以通过接收到的心跳信息,确定该领导节点。若该共识节点在心跳信息对应的时间周期没有接收到领导节点发送的心跳信息时,则该共识节点可以等待其他共识节点发起选举,并接收候选人节点发送的投票请求,并通过响应该投票请求,选出下一届任期的领导节点。当然,该共识节点也可成为选举人节点,并向其他共识节点发送投票请求,则该共识节点也可成为该区块链网络中的领导节点。由于上述领导节点的确定属于现有技术,所以具体的技术细节本申请不再赘述。
需要说明的是,该完全节点或非完全节点可以是终端,如,手机、个人电脑/平板电脑等设备,或者该完全节点或非完全节点也可以是服务器,则该服务器可为该非完全节点或非完全节点对应的服务器,并且该服务器可以是单独的一台设备,也可以是有多台设备组成的***,只要该设备可作为该区块链网络的非完全节点或非完全节点接收与该共识节点对应的交互平台发送的业务数据,并且具有在该区块链网络中发起共识的权限即可,本申请对该非完全节点或非完全节点的具体为何种设备此并不做限定。
步骤S304,所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。详细描述具体如下:
步骤S3041,比较接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希是否一致,若一致,则将所述目标区块进行校验,若通过校验,则表明通过验证。
如上所述,由于作为目标区块的用户信息发送至该共识节点,所以该节点在接收到该业务数据时,只要该业务数据中包含用户信息,便可确定该区块对应的业务数据是由哪个用户方受理的。
具体地,首先,将接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希进行比较是否一致,若比较结果是一致的,则表示所述目标区块是最新的区块,这样业务链节点的数据于目标节点的数据实现了数据同步。然后,在业务链节点的数据于目标节点的数据实现了数据同步的基础上,对所述目标区块进行共识校验,具体地是所述完全节点可用自身所持有的公钥,对该目标区块中包含的签名信息进行验证,在确定出该签名信息通过验证后,再根据该目标区块中包含的内容,对该目标区块的头哈希值进行验证。在确定该目标区块的头哈希值通过验证后,则可确定该目标区块通过验证,即目标区块通过业务链验证,则可将该目标区块作为区块存储在自身的业务链中。其中,校验码类型可以配置为各种本领域技术人员常用的加密算法或校验算法所生成的校验码。
需要说明的是,在区块链技术领域,具体是各节点根据共识算法对目标区块进行共识校验的,并且,区块链网络有权访问各节点的账户、交易记录等隐私,用于校验。
步骤S3042,若接收到至少两个目标区块,所述至少两个目标区块分别由不同的所述区块子链节点发送,且对应的上一目标区块相同,则根据所述至少两个目标区块中的变更时间排序将所述至少两个目标区块加入所述完全节点所在的区块链中。
由上述可知,在向目标节点请求同步目标区块时,是首先将所述主链划分为多个区块子链,然后向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
在实际应用中,存在多个不同的区块子链节点同时向完全节点发送各自目标区块的情况发生,在这种情况下,不同的区块子链节点的目标区块中包含的上一区块的头哈希值可能是相同的,若完全节点确定这些目标区块均通过验证,则将这些目标区块存储在区块链的过程中,将出现支链的情况,从而增加了区块链的复杂度。
因而,在本发明实施例中,完全节点在接收至少两个特殊目标区块时,可以根据各特殊目标区块中包含的区块生成时间和/或各特殊区块的头哈希值,对各特殊目标区块进行排序,进而基于得到的排序结果,对各特殊目标区块包含的上一目标区块的头哈希值以及各特殊目标区块对应的头哈希值进行更新,并对这些特殊目标区块进行存储。
步骤S3043,将所述目标区块切分为一个或多个分片数据,并对所述一个或多个分片数据进行随机编码为相应的一个或多个目标分片数据。
优选地,为了保证整个对内共识节点集合中各节点的负载均衡,可确定节点集合中各节点的负载能力,进而可确定各节点当前空闲资源的多少,从而确定所述目标区块切分的分片数据的数量。
进一步,为了进一步提高目标区块的安全性,对所述一个或多个分片数据进行随机编码。其中,本发明实施例中的随机编码与现有的随机线性网络编码并无区别,因此在后续说明书不会赘述。
步骤S3044,获取所述目标区块的哈希和各个目标分片数据的哈希,将所述目标区块的哈希和各个目标分片数据的哈希一起广播至业务链以存储。
在本发明实施例中,本步骤主要用于记录在业务链中存储的目标区块的分布情况,并建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位的三者之间的索引关系,以备业务链的非完全节点存储目标区块时使用。
具体地,所述完全节点获取目标区块的哈希及各个目标分片数据的哈希,根据各个目标分片数据的哈希形成目标分片数据哈希集合;建立目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表之间的索引关系,将目标区块的哈希、目标分片数据哈希集合和目标区块的统一资源定位表及索引关系一起广播至业务链以存储。
步骤S305,接收所述分片数据并将所述分片数据分布式存储。详细描述具体如下:
步骤S3051,获取所述目标分片数据的哈希;
由于每一个目标分片均有唯一的一个哈希与其对应,用以对目标分片进行标识和区分,因此业务链的非完全节点需要获取目标分片的哈希。
步骤S3052,根据所述目标分片数据的哈希查找对应的目标区块并获取对应的目标分片数据内容;
具体地,根据目标分片数据的哈希查找对应的目标分片数据哈希集合,根据目标分片数据哈希集合与目标区块的哈希、目标区块的统一资源定位表之间的索引关系,获取目标分片数据哈希集合对应的目标区块的统一资源定位表,根据目标区块的统一资源定位表读取目标区块,根据目标区块分片阈值从目标区块中获取对应的目标分片数据内容。
步骤S3053,将所述目标分片数据的哈希及所述目标分片数据内容存储至所述非完全节点所在的业务链。
在实际应用中,业务链上的节点首先完成目标分片哈希集合中第一个哈希对应的目标分片的存储,然后通过业务链上的其它节点完成目标分片数据哈希集合中下一个哈希对应的目标分片数据的存储,如此反复直至遍历目标分片数据哈希集合中的全部哈希至将整个目标区块存储完毕。
业务链的其他非完全节点接收到该分片数据后,可以采用同样的方式,将该分片数据作为区块存储在自身存储的业务链中。
实施例五
本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现上述基于区块链数据的非完全数据同步方法。
综上上述,本发明实施例提供的一种基于区块链数据的非完全数据同步方法及***,通过使用业务链上的多个节点对区块进行分块存储,改变了现有技术中基于区块链的分布式存储所采用的整体存储的方式,能够满足数据量较大的区块存储;避免整体存储模式下潜在的诸如宕机、运行故障等状况下区块被整体损坏的风险,即使风险存在,也可从其他运行正常的区块链节点中获取到同步数据,提高了数据存储的安全性;由于区块链具备的防篡改特性,致使任意一方无法私自对区块链中的存储数据进行篡改,从而有效保证了存储数据的安全性。所以,本发明实施例达到了以下技术效果:解决了现有技术中存在的随着区块链数据量的不断增长,共享数据所耗费的时间不断增加,容易导致区块链网络拥堵及区块存储负担,从而达到了缩减共享周期,提高共享效率,节省存储数量,保证数据安全的目的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明是参照本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种基于区块链数据的非完全数据同步方法,所述区块链包括主链与多个业务链,其特征在于,所述业务链包含一个参与主链共识的完全节点与多个参与业务链共识的非完全节点,所述方法包括:
向目标节点请求同步目标区块;
接收所请求的目标区块;
若接收的节点为所述非完全节点,则将所述目标区块转发至所述完全节点;
所述完全节点对所接收的目标区块进行验证,若通过验证,将所述目标区块分片并将获得的分片数据广播至业务链以存储。
2.根据权利要求1所述的方法,其特征在于,所述完全节点对所接收的目标区块进行验证包括:
所述完全节点比较接收的所述目标区块的前置哈希与所述完全节点的最新区块的哈希是否一致,若一致,则所述完全节点将所述目标区块进行共识校验,若通过校验,则表明通过验证。
3.根据权利要求2所述的方法,其特征在于,所述向目标节点请求同步目标区块包括:
将所述主链划分为多个区块子链;
向各所述区块子链的目标节点请求同步所述目标区块以获取各所述区块子链内的最新的目标区块。
4.根据权利要求3所述的方法,其特征在于,将所述目标区块分片之前,所述方法还包括:
若接收到至少两个目标区块,所述至少两个目标区块分别由不同的所述区块子链节点发送,且对应的上一目标区块相同,则根据所述至少两个目标区块中的变更时间排序将所述至少两个目标区块加入所述完全节点所在的区块链中。
5.根据权利要求1所述的方法,其特征在于,将所述目标区块分片包括:
将所述目标区块切分为一个或多个分片数据,并对所述一个或多个分片数据进行随机编码为相应的一个或多个目标分片数据。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述将获得的分片数据广播至业务链以存储包括:
获取所述目标区块的哈希和各个目标分片数据的哈希,将所述目标区块的哈希和各个目标分片数据的哈希一起广播至业务链以存储。
7.根据权利要求6所 述的方法,其特征在于,所述方法还包括:
获取所述目标分片数据的哈希;
根据所述目标分片数据的哈希查找对应的目标区块并获取对应的目标分片数据内容;
将所述目标分片数据的哈希及所述目标分片数据内容存储至所述非完全节点所在的业务链。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
CN201811206580.4A 2018-10-17 2018-10-17 基于区块链数据的非完全数据同步方法、***及设备 Expired - Fee Related CN109522362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811206580.4A CN109522362B (zh) 2018-10-17 2018-10-17 基于区块链数据的非完全数据同步方法、***及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811206580.4A CN109522362B (zh) 2018-10-17 2018-10-17 基于区块链数据的非完全数据同步方法、***及设备

Publications (2)

Publication Number Publication Date
CN109522362A CN109522362A (zh) 2019-03-26
CN109522362B true CN109522362B (zh) 2020-09-15

Family

ID=65771758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811206580.4A Expired - Fee Related CN109522362B (zh) 2018-10-17 2018-10-17 基于区块链数据的非完全数据同步方法、***及设备

Country Status (1)

Country Link
CN (1) CN109522362B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309173A (zh) * 2019-06-14 2019-10-08 深圳前海达闼云端智能科技有限公司 合约数据的记录方法、装置及区块链节点、存储介质

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110086856B (zh) * 2019-04-01 2022-02-01 达闼机器人有限公司 区块链节点的控制方法、装置、存储介质及电子设备
CN110099106B (zh) * 2019-04-24 2022-04-19 福建方维信息科技有限公司 一种区块链中节点间数据同步的方法及终端
CN110347497B (zh) * 2019-06-03 2020-07-21 阿里巴巴集团控股有限公司 一种将多个存储设备划分设备组的方法及装置
US11099759B2 (en) 2019-06-03 2021-08-24 Advanced New Technologies Co., Ltd. Method and device for dividing storage devices into device groups
CN110210845B (zh) * 2019-06-11 2021-06-18 网易(杭州)网络有限公司 用于区块链数据迁移的方法、装置、介质和计算设备
CN110442644A (zh) * 2019-07-08 2019-11-12 深圳壹账通智能科技有限公司 区块链数据归档存储方法、装置、计算机设备和存储介质
CN110430282B (zh) * 2019-08-16 2022-03-01 微位(深圳)网络科技有限公司 分布式***节点之间的数据传输方法及装置
CN110505305B (zh) * 2019-08-27 2022-04-01 深圳市迅雷网络技术有限公司 一种区块链分片方法、装置及区块链***
CN110597466B (zh) * 2019-09-16 2021-10-26 腾讯科技(深圳)有限公司 区块链节点的控制方法、装置、存储介质和计算机设备
CN110609872B (zh) * 2019-09-20 2021-03-05 北京海益同展信息科技有限公司 用于同步节点数据的方法和装置
CN110737664B (zh) * 2019-10-21 2022-11-25 深圳前海微众银行股份有限公司 一种区块链节点同步的方法及装置
CN111130801A (zh) * 2019-12-26 2020-05-08 腾讯科技(深圳)有限公司 一种数据处理方法、装置、节点设备及计算机存储介质
CN111221910A (zh) * 2019-12-31 2020-06-02 杭州趣链科技有限公司 一种提升区块链读写性能的分片存储方法
CN111339086B (zh) * 2020-02-18 2021-04-20 腾讯科技(深圳)有限公司 区块处理方法、基于区块链的数据查询方法及装置
CN111339089B (zh) * 2020-02-21 2023-09-22 联动优势科技有限公司 一种应用于区块链的数据存储与获取方法及装置
CN111478795B (zh) * 2020-03-06 2022-08-12 重庆邮电大学 一种基于混合拜占庭容错的联盟区块链网络共识方法
CN111444203B (zh) * 2020-03-24 2021-09-28 腾讯科技(深圳)有限公司 一种同步处理方法、装置、设备及介质
CN111432009B (zh) * 2020-03-30 2023-04-07 深圳壹账通智能科技有限公司 一种区块链数据的同步方法、装置及电子设备、存储介质
CN111597268B (zh) * 2020-05-21 2023-09-12 昆明大棒客科技有限公司 一种区块链扩展方法、区块链节点及区块链***
CN111711526B (zh) * 2020-06-16 2024-03-26 深圳前海微众银行股份有限公司 一种区块链节点的共识方法及***
CN113098970A (zh) * 2021-04-12 2021-07-09 浙江永旗区块链科技有限公司 一种分布式网络节点数据同步方法
CN113722545B (zh) * 2021-06-30 2023-04-28 电子科技大学 一种许可链环境下的数据编校方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649632B (zh) * 2016-12-07 2018-03-16 北京众享比特科技有限公司 数据同步方法及***
CN107079059B (zh) * 2016-12-21 2019-12-10 深圳前海达闼云端智能科技有限公司 区块链存储方法、装置及节点设备
CN107197036A (zh) * 2017-06-22 2017-09-22 广东网金控股股份有限公司 一种基于区块链的信息一致处理方法及终端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309173A (zh) * 2019-06-14 2019-10-08 深圳前海达闼云端智能科技有限公司 合约数据的记录方法、装置及区块链节点、存储介质
CN110309173B (zh) * 2019-06-14 2021-08-13 达闼机器人有限公司 合约数据的记录方法、装置及区块链节点、存储介质

Also Published As

Publication number Publication date
CN109522362A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
CN109522362B (zh) 基于区块链数据的非完全数据同步方法、***及设备
CN109547530B (zh) 区域共识方法、***及设备
CN112153085B (zh) 一种数据处理方法、节点及区块链***
CN107809484B (zh) 区块链交易信息处理方法及区块链节点
US11153069B2 (en) Data authentication using a blockchain approach
KR101950912B1 (ko) 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
CN109150971B (zh) 超级节点投票和选举方法、装置和网络节点
CN115210741B (zh) 部分有序的区块链
CN110771127B (zh) 用于区块链网络中一致分布式内存池的方法和***
KR20210005679A (ko) 대표적인 노드 디바이스의 선출 방법 및 장치, 컴퓨터 디바이스, 및 저장 매체
WO2017109140A1 (en) Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction
WO2021082863A1 (zh) 一种共识节点的评估方法及装置
CN111612613A (zh) 一种部署有中心化***的区块链网络
CN113256297B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN109302495A (zh) 一种数据存储方法及装置
CN113256424B (zh) 一种交易数据处理方法、装置、设备及存储介质
CN111367965B (zh) 目标对象确定方法、装置、电子设备及存储介质
CN110505228B (zh) 基于边缘云架构的大数据处理方法、***、介质及装置
CN112988667B (zh) 一种基于区块链网络的数据存储方法及装置
CN113628049A (zh) 一种基于群体智能的区块链智能合约的冲突裁决方法
CN112581129A (zh) 区块链交易数据治理方法及装置、计算机设备及存储介质
CN112134883A (zh) 基于可信计算进行节点间信任关系快速认证的方法、装置及相关产品
CN113518005A (zh) 一种区块共识方法、装置、设备及存储介质
JP2020204898A (ja) 分散台帳システムの運用管理方法、分散台帳システムの運用管理システム、および分散台帳システムの運用管理プログラム
CN115829731A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200915