CN110362633A - 区块数据存储方法、装置、计算机设备及存储介质 - Google Patents

区块数据存储方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110362633A
CN110362633A CN201910666566.0A CN201910666566A CN110362633A CN 110362633 A CN110362633 A CN 110362633A CN 201910666566 A CN201910666566 A CN 201910666566A CN 110362633 A CN110362633 A CN 110362633A
Authority
CN
China
Prior art keywords
block
layer
digraph
newly
increased
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.)
Granted
Application number
CN201910666566.0A
Other languages
English (en)
Other versions
CN110362633B (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.)
Tencent Technology Shenzhen Co Ltd
Shenzhen University
Original Assignee
Tencent Technology Shenzhen Co Ltd
Shenzhen University
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 Tencent Technology Shenzhen Co Ltd, Shenzhen University filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910666566.0A priority Critical patent/CN110362633B/zh
Priority to CN201910859383.0A priority patent/CN110569246B/zh
Publication of CN110362633A publication Critical patent/CN110362633A/zh
Application granted granted Critical
Publication of CN110362633B publication Critical patent/CN110362633B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Abstract

本申请涉及一种区块数据存储方法、装置、计算机设备及存储介质,该方法包括:获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;确定所述有向图的目标层;在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。该方法能够在提高区块链平台吞吐量的前提下,提高区块链数据平台存储数据的稳定性及安全性。

Description

区块数据存储方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种区块数据存储方法、装置、计算机设备及存储介质。
背景技术
随着科学技术的飞速发展,各种技术突飞猛进,大量先进技术不断涌现,区块链技术即属于当今时代一个非常重要的数据存储技术,在非常多的场景中都得到了应用。区块链能够为用户提供安全可靠的服务,鼓励用户共享他们的数据而且不用担心数据遭到篡改。区块链平台中分布式节点共享一份相同的账单,因此交易记录不能被随意篡改,这也克服了中心化系统的弊端。
基于链式结构的区块链需要花很长时间来让区块链平台中的参与者取得同步并形成共识,这也是链式结构吞吐量小的根本原因。很多人提出了改进方法,包括对比特币的链式结构进行了改进。如,使用有向图(DAG)作为区块链的底层数据结构。如图1所示,DAG结构允许多个区块在同一时刻加入到区块链平台中,因此不用花时间在节点间的共识上。DAG结构在异步性和速度上达到了平衡,因此,它的吞吐量相比链式结构有了很大的提升。
然而,由于DAG结构是一个发散的结构,使得结构的稳定性较差,因此,基于传统有向图结构的区块数据存储方法,存储数据的稳定性差。
发明内容
基于此,有必要针对传统区块数据存储方法,存储数据稳定性差的问题,提供一种提高存储数据稳定性的区块数据存储方法、装置、计算机设备及存储介质。
一种区块数据存储方法,所述方法包括:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则
将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
在一个实施例中,所述上一层的各所述区块的反向连通度的确定过程,包括:
确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
将所述连通度最大的所述区块,确定为导航区块;
确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
在一个实施例中,在插入所述新增区块时,若所述目标层的上一层区块数量大于K,还:
将所述反向连通度较小的M个所述区块,作为下一轮插入的新增区块;
其中,M的值等于所述上一层的区块数量减K。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,若所述目标层的上一层的区块数量等于K,则
将所述新增区块指向所述上一层的K个所述区块。
在一个实施例中,所述获取基于区块的有向图之后,还包括:
接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;
将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
在一个实施例中,所述将所述同步有向图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新,包括:
在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;
将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块之后,还包括:
针对所述有向图,遍历更新层的各所述区块,将所述区块中的交易存储至交易集合中;
执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态,包括:
对所述交易集合中的交易,按照交易金额大小进行排序;
按照排序结果执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,验证所述目标层的前预设数量层的各区块的合法性;
当所述目标层的前预设数量层的各区块合法时,将所述新增区块指向所述目标层的上一层的K个所述区块。
一种区块数据存储装置,所述装置包括:
有向图获取模块,用于获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
目标层确定模块,用于确定所述有向图的目标层;
新区块插入模块,用于在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
上述的区块数据存储方法、装置、计算机设备和存储介质,获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;确定所述有向图的目标层;在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。由于组织区块的有向图的宽度为K,K为大于或等于2的自然数,相较于宽度为1的链式结构,能够使得区块链平台具有更大的吞吐量。又由于将有向图的宽度限定为K,并限定该有向图逐层排列可以限制有向图的发散性,使得有向图成为有层次有宽度的有向图,有利于提升区块链平台存储数据的稳定性。在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,可以维持有向图中的每一个区块均指向该区块上一层的所有区块的稳定结构,从而可以提高区块链平台存储数据的稳定性,并提高存储数据的安全性。从而,基于本实施例的区块数据存储方法、装置、计算机设备及存储介质,能够在提高区块链平台吞吐量的前提下,提高区块链数据平台存储数据的稳定性及安全性。
附图说明
图1为一个基于传统有向图结构的区块链结构示意图;
图2为一个实施例中区块数据存储方法的应用场景图;
图3为一个实施例中区块数据存储方法的流程示意图;
图4为一个具体实施例中区块数据存储方法中有向图的示例图;
图5为一个实施例中区块数据存储方法的插入新增区块的流程示意图;
图6为一个实施例中区块数据存储方法的区块链节点更新过程的流程示意图;
图7为一个实施例中区块数据存储方法的交易执行过程的流程示意图;
图8为一个实施例中区块数据存储方法的系统框架图;
图9为一个实施例中数据存储装置的框图;
图10为一个实施例中计算机设备的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图2为一个实施例中区块数据存储方法的应用场景图。参照图2,该应用场景中包括通过网络连接的、分布式的区块链节点210。区块链节点210用于存放区块。每个区块链节点210由一台或多台服务器构成。多个区块链节点210构成区块链平台。区块链平台可以是私有区块链平台也可以是开发的区块链平台。区块链平台可以是云区块链平台。云区块链平台,是构建于云基础之上,让用户在开放的云平台上能够快速构建自身所需的基础设施和区块链服务的平台。
区块链节点210获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;确定所述有向图的目标层;在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
图3为一个实施例中区块数据存储方法的流程示意图。本实施例主要以该区块数据存储方法应用于图1中的区块链节点210进行举例说明。参照图3,该方法具体包括如下步骤:
S302,获取基于区块的有向图。
区块链节点获取基于区块的有向图。区块链平台中的每一个区块链节点均存储有所有的整个区块链平台中所有的区块。这些区块采用有向图的结构组织存储起来。这里的区块为包括存储数据及指向关系的数据结构对象。
其中,指向关系是指区块之间的链接关系,如下一层的区块指向上一层的区块。具体如,可以在下一层的区块中,存储指向下一层区块的区块标识,如此来表达该下一层区块指向该区块标识所标识的上一层区块的指向关系。又如,还可以在下一层的区块中,存储指向下一层区块的区块存储位置等,以此来表达该下一层区块指向其上一层区块的指向关系。
存储数据是指区块中存储的数据,如可以为交易记录。交易记录可以包括交易对象、交易金额;进一步地,交易记录还可以包括在交易执行之前交易对象的余额,如可以称为第一余额;更进一步地,交易记录还可以包括在交易执行之后,交易对象的余额,如可以称为第二余额。
在本实施例中,采用有向图结构来组织这些区块。将区块作为有向图的顶点、将区块的指向关系作为有向图的有向边。有向图逐层排列,有向图的宽度为K,K为大于或等于2的自然数。
其中,有向图的宽度为K是指,该有向图的每一层最大的顶点数量,也即有向图中,每一层最大的区块数量为K。该有向图的宽度,还表示在一轮插入新增区块的过程中,能够同时加入区块链平台的区块数。理论上该有向图的宽度越大,区块链平台的吞吐量越大;但有向图的宽度过大说明区块链平台中包含的交易越多,为了达到全网同步的传播时间会增加,这在一定程度上会降低吞吐量。因此,在一个较佳实施中,该有向图的宽度可以根据网络流量、区块生成速度,进行调节,以达到较佳的吞吐量。
逐层排列是指,在有向图中插入新增区块时,在当前层还未到达K个区块时,先将新增区块插入当前层。只有在当前层的区块数量达到K个之后,才能插入当前层的下一层。将有向图的宽度限定为K,并限定该有向图逐层排列可以限制有向图的发散性,使得有向图成为有层次有宽度的有向图,有利于提升区块链平台存储数据的稳定性。在本实施例中,有向图的宽度为大于或等于2的自然数,如此,相较于宽度为1的链式结构,能够使得区块链平台具有更大的吞吐量。
S304,确定有向图的目标层。
区块链节点确定有向图的目标层。该目标层是指新增区块插入有向图中所属的图层。由于有向图逐层排列,有向图的宽度为K,K为大于或等于2的自然数,因此,可以根据当前层的区块数量确定目标层。
可以通过一个变量存储当前层的区块数量。也可以通过遍历有向图结构,来确定当前层的区块数量。在确定当前层的区块数量之后,在当前层的区块数量小于K时,可以确定目标层为当前层;在当前层的区块数量大于或等于K时,可以确定目标层为当前层的下一层,并将当前层更新为当前层的下一层。
S306,在插入新增区块时,将新增区块指向目标层的上一层的K个区块。
区块链节点在插入新增区块时,将新增区块指向目标层的上一层的K个区块。在本实施例中,新增区块将指向目标层的上一层的K个区块。可以理解地,基于本实施例的区块数据存储方法中的有向图中,每一个区块都将指向该区块上一层的K个区块,也即该有向图中,一个区块将指向该区块上一层的所有区块。如此,可以提高该有向图的稳定性,从而,可以提高区块链平台存储数据的稳定性。
本实施例的区块数据存储方法运行在有新增区块插入的区块链节点上。在插入新增区块时,将新增区块指向目标层的上一层的K个区块,可以是将新增区块的指向关系,设置为指向目标层上一层的K个区块,如此,将新增区块指向目标层的上一层的K个区块。由于新增区块指向目标层上一层的K个区块,如此,可以维持有向图中的每一个区块均指向该区块上一层的所有区块的稳定结构,从而可以提高区块链平台存储数据的稳定性。同时,由于传统连式结构或者有向图结构的区块链,区块一般指向前面的一个区块或者多个中的两个区块,因此,在本实施例中,一个区块需要指向上一层的全部的K个区块,如此,可以提高数据的安全性。
基于本实施例的区块数据存储方法,获取基于区块的有向图,区块为包括存储数据及指向关系的数据结构对象;有向图将区块作为有向图的顶点、将区块的指向关系作为有向图的有向边;有向图逐层排列,有向图的宽度为K,K为大于或等于2的自然数;确定有向图的目标层;在插入新增区块时,将新增区块指向目标层的上一层的K个区块。由于组织区块的有向图的宽度为K,K为大于或等于2的自然数,相较于宽度为1的链式结构,能够使得区块链平台具有更大的吞吐量。又由于将有向图的宽度限定为K,并限定该有向图逐层排列可以限制有向图的发散性,使得有向图成为有层次有宽度的有向图,有利于提升区块链平台存储数据的稳定性。在插入新增区块时,将新增区块指向目标层的上一层的K个区块,可以维持有向图中的每一个区块均指向该区块上一层的所有区块的稳定结构,从而可以提高区块链平台存储数据的稳定性,并提高存储数据的安全性。从而,基于本实施例的区块数据存储方法,能够在提高区块链平台吞吐量的前提下,提高区块链数据平台存储数据的稳定性及安全性。
在其中一个实施例中,在插入新增区块时,将新增区块指向目标层的上一层的K个区块之后,还包括:将插入新增区块的有向图传播至区块链平台中的其它区块链节点。一个区块链节点在本地有新增区块插入后,需要将其传播至区块链平台中的其它区块链节点,以使区块链平台中的所有区块链节点进行区块更新,达到整个区块链平台中,各区块链节点存储数据一致的状态。基于本实施例的区块数据存储方法,可以使得区块链平台中的所有区块链节点进行区块更新,达到整个区块链平台中,各区块链节点存储数据一致的状态。
在其中一个实施例中,在插入新增区块时,将新增区块指向目标层的上一层的K个区块,包括:在插入新增区块时,若目标层的上一层的区块数量等于K,则将新增区块指向上一层的K个区块。
由于本申请的有向图是宽度为K的有向图,且该有向图逐层排列。因此,目标层的上一层不是最新层,其区块数量必定不小于K,否则该上一层应该为目标层。
本实施例概括了目标层的上一层区块数量等于K的情况,可以将新增区块指向该上一层的所有区块,无需对这些区块再进行选择。
在一个具体实例中,该有向图可以如图4所示,创世区块为区块0,有向图的宽度为3。第一层区块1、2、3均指向该创世区块;第二层区块4、5、6指向第一层的3个区块1、2、3;第三层的区块7、8、9指向第二层的3个区块4、5、6;第四层的区块10、11、12指向第三层的3个区块7、8、9;第五层的区块13、14、15指向第四层的3个区块10、11、12。
在其中一个实施例中,在插入新增区块时,将新增区块指向目标层的上一层的K个区块,包括:在插入新增区块时,若目标层的上一层区块数量大于K,则将新增区块指向上一层的K个候选人区块;候选人区块为上一层中、反向连通度按照从大到小的顺序排在前K个的区块。
本实施例概括了目标层的上一层区块数量大于K的情况。这种情况可能出现在由于网络延迟等原因,某一层的区块数量超过了预设的有向图的宽度K。此时,先确定目标层上一层的各区块的反向连通度,可以将反向连通度大的K个区块作为确定是上一层的候选人区块(candidate)。如此,将确定的K个候选人区块作为上一层的区块,将新增区块指向这K个候选人区块,以维持该有向图的宽度为K。提高有向图结构的稳定性,从而提高区块链平台存储数据的稳定性。
进一步地,上一层的各区块的反向连通度的确定过程,包括:确定有向图中各区块的连通度;连通度等于区块到创世区块的路径数量;将连通度最大的区块,确定为导航区块;确定上一层的区块的反向连通度,等于上一层的区块到导航区块的路径数量。
一个区块的连通度(connectivity)等于该区块到创世区块的路径数。可以记Cv为区块v到创世区块的连通度。以图4为例,区块8到创世区块0有9条路径,即C8=9。这9条路径依次为:<8,4,1,0>,<8,4,2,0>,<8,4,3,0>,<8,5,1,0>,<8,5,2,0>,<8,5,3,0>,<8,6,1,0>,<8,6,2,0>,<8,6,3,0>。
没有被任何区块指向的区块称为叶子区块,叶子区块可以记为tip,拥有最大连通度的叶子区块称为导航区块,导航区块可以记为navigator。可以理解地,导航区块就是有向图中连通度最大的区块。在图4中,叶子节点13,14和15的连通度同时是最大的,因此它们都是navigator。
反向连通度(reverse connectivity)为某个区块(如区块v)到导航区块的路径数,可以记为Rv。在图4中,区块8到navigator的通路数为9,即R8=9,包括<13,10,8>,<13,11,8>,<13,12,8>,<14,10,8>,<14,11,8>,<14,12,8>,<15,10,8>,<15,11,8>,<15,12,8>。
在其中一个实施例中,在插入新增区块时,若目标层的上一层区块数量大于K,还将反向连通度较小的M个区块,作为下一轮插入的新增区块;其中,M的值等于上一层的区块数量减K。如此,在保持有向图的宽度为K的同时,将本轮因区块数量被丢弃的区块在下一轮中重新插入到有向图中,从而,提高有向图的可靠性,提高数据链平台存储数据的稳定性。
在其中一个实施例中,在插入新增区块时,将新增区块指向目标层的上一层的K个区块,包括:在插入新增区块时,验证目标层的前预设数量层的各区块的合法性;当目标层的前预设数量层的各区块合法时,将新增区块指向目标层的上一层的K个区块。
前预设数量层中,该预设数量可以记为constant。该预设数量可以是预先设置的数值,如该前预设数量层可以为前5层、前3层、前6层等。在插入新增区块前,先验证要插入的目标层的前预设数量层的区块的合法性,可以提高区块链平台的安全性,从而提高数据链平台存储数据的安全性。
在其中一实施例中,在插入新增区块时,还可以根据目标层的上一层的K个区块,验证新增区块的合法性,当该新增区块合法时,将新增区块指向目标层的上一层的K个区块。如此,可以提高有向图结构的安全性,从而提高数据链平台存储数据的安全性。
需要说明的是,在上述实施例中,验证一个区块的合法性时,可以根据该区块上一层的K个区块确定哈希值,验证该哈希值是否与该区块携带的哈希值一致,若一致则合法,否则不合法。
在其中一个较佳实施例中,如图5所示,在插入新增区块时,将新增区块指向目标层的上一层的K个区块,包括:验证目标层的前预设数量层的各区块的合法性;当目标层的前预设数量层的各区块合法,则将新增区块指向上一层的K个区块。如此,将该新增区块加入到有向图中。在该新区块加入到有向图之后,若目标层的区块数量大于K,则对目标层的区块进行排序,选出候选人区块。如可以是根据反向连通度的大小,按从大到小的顺序进行排序,将排在前K位的区块作为该目标层的候选人区块。其中反向连通度的确定方式与上述实施例中的方式相同,在此不做赘述。
在其中一个实施例中,获取基于区块的有向图之后,还包括:接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
区块链节点可以利用P2P(Peer to Peer,点对点)协议进行各区块链节点的通信。由于一个区块链节点在本地有新增区块插入后,需要将其传播至区块链平台中的其它区块链节点,以使区块链平台中的所有区块链节点进行区块更新,达到整个区块链平台中,各区块链节点存储数据一致的状态。一个区块链节点可以先通过P2P的握手协议获得区块链平台中的其它区块链节点。因此,本申请中区块数据存储方法运行的区块链节点,可能会接收到其它区块链节点的用于信息同步的有向图。在本实施例中,通过逐层比对,并进行信息合并的方式,如此,对本申请中区块数据存储方法运行的区块链节点本地的有向图进行更细。运用到区块链平台的各区块链节点上,从而对各区块链节点的有向图进行同步更新。最终达到整个区块链平台中,各区块链节点存储数据一致的状态。
进一步地,各区块链节点的有向图进行逐层比对,并进行信息合并以对本地的有向图进行同步更新,包括:在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。如此,在两个区块链节点的有向图的比对层不一致时,将两个区块链节点的有向图的比对层合并;将合并后的比对层中的各区块指向比对层的上一层的各区块。
比对层是将两个区块链节点的有向图中各图层分别逐层进行对比时,当前对比的图层称之为比对层。可以从导航层开始进行逐层往上对比。导航层是指导航区块所属的图层。两个区块链节点的有向图的比对层不一致是指,两个区块链节点的有向图的比对层分别包括的区块不同。
假设有向图的比对比对层中,包括区块1、2、3;更新图中的比对层中,包括区块1,4;则这两个比对层不一致。此时,需要将这两个比对层合并,也即将同步图与有向图的比对层求并集。如该示例中,将两个比对层合并得到合并后的比对层包括区块1、2、3、4。将合并后的比对层中的各区块指向比对层的上一层的各区块,是指将合并后的比对层分别作为更新后的比对层,将该更新后的比对层中的各区块指向更新前该比对层各区块所指向的区块,即更新前该比对层的上一层的各区块。假设有向图中比对层更新前区块1、2、3指向区块0,更新图中比对层更新前区块1、4也指向区块0,则更新后,有向图的比对层更新后区块1、2、3、4指向区块0,更新图的比对层更新后区块1、2、3、4指向区块0。由于该有向图和更新图中比对层的上一层内容一致,都是包括区块0,此时,可以结束更新过程。
假设有向图的比对层更新前区块1、2、3指向区块5,更新图的比对层更新前区块1、4指向区块6,则更新后,有向图的比对层更新后区块1、2、3、4指向区块5,更新图的比对层更新后区块1、2、3、4指向区块6。由于该有向图和更新图中比对层的上一层不同,需要继续迭代执行比对层的更新,将比对层更新为原比对层的上一层,即有向图中区块5所在的图层,也即更新图中区块6所在的图层。此时,有向图的比对层与更新图的比对层不一致,因此,需要继续将比对层合并,得到合并后的比对层包括区块5、6,然后在有向图中,将该合并后的比对层的区块5、6,指向有向图的比对层合并之前指向的区块,也即使得区块6也指向区块5所指向的区块。在更新图中,将该合并后的比对层的区块5、6,指向该同步图的比对层合并之前指向的区块,也即使得区块5也指向区块6所指向的区块。
基于本实施例的区块数据存储方法,提供一种具体的区块链节点信息同步方案。如此,可以提高区块链平台的稳定性。
在一个具体实施例中,站在第三人的视角,如图6所示,各区块链节点先通过P2P握手协议与其它区块链节点通信;判断是否遍历完区块链平台中所有的区块链节点,若没有选出两个区块链节点,从导航层开始逐层对比,当两个比对层不一致时,合并两个比对层,将合并后的比对层指向该比对层在更新前的上一层的各区块。其中导航层为导航区块所属的图层。当两个区块链节点在某一层信息一致时,退出该层循环,继续合并其它区块链节点,直到遍历完区块链平台中所有的区块链节点。至此,区块链平台中各区块链节点的信息就得以同步。
其中,该选出的两个区块链节点,对于一个区块链节点而言,就是该区块链节点以及发送同步图的节点。
假设区块链节点A的有向图比对层中,包括区块1、2、3;区块链节点B的有向图中的区块图中,包括区块1,4;则这两个比对层不一致。此时,需要将这两个比对层合并,也即将区块链节点A与区块链节点B的有向图的比对层求并集,如该示例中,将两个比对层合并得到合并后的比对层包括区块1、2、3、4。将合并后的比对层中的各区块指向比对层的上一层的各区块,是指将合并后的比对层分别作为两个区块链节点中有向图更新后的比对层,将该更新后的比对层中的各区块指向更新前该比对层各区块所指向的区块,即更新前该比对层的上一层的各区块。
假设区块链节点A中比对层更新前区块1、2、3指向区块0,区块链节点B中比对层更新前区块1、4也指向区块0,则更新后,区块链节点A的比对层更新后区块1、2、3、4指向区块0,区块链节点B的比对层更新后区块1、2、3、4指向区块0。由于该两个区块链节点中比对层的上一层在两个区块链节点中内容一致,都是包括区块0,此时,可以结束更新过程。假设区块链节点A的比对层更新前区块1、2、3指向区块5,区块链节点B的比对层更新前区块1、4指向区块6,则更新后,区块链节点区块链A的比对层更新后区块1、2、3、4指向区块5,区块链节点B的比对层更新后区块1、2、3、4指向区块6。由于该两个区块链节点中比对层的上一层不同,需要继续迭代执行比对层的更新,将比对层更新为原比对层的上一层,即区块链节点A中区块5所在的图层,也即区块链节点B中区块6所在的图层。此时,区块链节点A的比对层与区块链节点B的比对层不一致,因此,需要继续将比对层合并,得到合并后的比对层包括区块5、6,然后在区块链节点A中,将该合并后的比对层的区块5、6,指向该区块链节点A的比对层合并之前指向的区块,也即使得区块6也指向区块5所指向的区块。在区块链节点B中,将该合并后的比对层的区块5、6,指向该同步图的比对层合并之前指向的区块,也即使得区块5也指向区块6所指向的区块。
在其中一个实施例中,在插入新增区块时,将新增区块指向目标层的上一层的K个区块之后,还包括:针对有向图,遍历更新层的各区块,将区块中的交易存储至交易集合中;执行交易集合中的每一笔交易,并根据交易结果更新世界状态(world state)。
其中,世界状态包括每个交易对象的状态信息,该状态信息包括交易对象的账户余额。更新层是指有向图中当前进行世界状态更新的图层。基于本实施例的区块数据存储方法,可以遍历区块链平台中的所有交易信息,并执行所有交易。执行交易的过程可以包括根据交易对象及交易金额,以及交易动作,计算各交易对象的账户余额。其中,交易动作可以包括转出和转入。如对象A转出100数值至对象B,在执行该交易时,对象A的账户余额减100,对象Bd的账户余额加100。在遍历区块链平台的所有交易信息时,可以从有向图的稳定层的下一层开始,逐层进行遍历。其中,稳定层是指为保证区块链平台稳定,设置的有向图应该大于的最大图层数量。如此,对世界状态进行更新,从而提高存储数据的适用性。
进一步地,执行交易集合中的每一笔交易,并根据交易结果更新世界状态,包括:对交易集合中的交易,按照交易金额大小进行排序;按照排序结果执行交易集合中的每一笔交易,并根据交易结果更新世界状态。
在本实施例中,在执行交易之前,先对交易按照交易金额的大小进行排序,然后按照排序的先后顺序执行交易,并根据交易结果更新世界状态。如此,可以优先保证金额较大的交易执行,从而可以降低因技术问题而导致的交易损失,提高存储数据的安全性。
在一个具体实施例中,世界状态的更新过程如图7所示,首先判断更新层是否大于稳定层(stable_level),若否,则结束更新。若是,则遍历该当前层中所有区块的交易,并存储到交易集合(tx_set)中;然后根据交易金额大小对交易结合中的交易进行排序;接着按照排序结果执行交易集合中的每一笔交易,并根据交易结果更新世界状态(world_state)。最后,将更新层指向更新层的下一层,迭代进行世界状态的更新。
在一个具体实施例中,区块数据存储方法包括:
获取基于区块的有向图,区块为包括存储数据及指向关系的数据结构对象;有向图将区块作为有向图的顶点、将区块的指向关系作为有向图的有向边;有向图逐层排列,有向图的宽度为K,K为大于或等于2的自然数;
确定有向图的目标层;
在插入新增区块时,验证目标层的前预设数量层的各区块的合法性;
当目标层的前预设数量层的各区块合法时,若目标层的上一层区块数量大于K,则执行(1)和(2);
(1)将新增区块指向上一层的K个候选人区块;候选人区块为上一层中、反向连通度按照从大到小的顺序排在前K个的区块;其中,上一层的各区块的反向连通度的确定过程,包括:确定有向图中各区块的连通度;连通度等于区块到创世区块的路径数量;将连通度最大的区块,确定为导航区块;确定上一层的区块的反向连通度,等于上一层的区块到导航区块的路径数量;
(2)将反向连通度较小的M个区块,作为下一轮插入的新增区块;其中,M的值等于上一层的区块数量减K;
当接收到用于信息同步的同步图时,在同步图与有向图的比对层不一致时,将同步图与有向图的比对层合并;其中,同步图与有限图的数据结构相同;
将合并后的比对层中的各区块指向比对层的上一层的各区块;
针对有向图,遍历更新层的各区块,将区块中的交易存储至交易集合中;
对交易集合中的交易,按照交易金额大小进行排序;
按照排序结果执行交易集合中的每一笔交易,并根据交易结果更新世界状态。
通过以上过程,每个新加入的新增区块都能找到一个合适的层次,并且整个有向图始终能够保持结构稳定,提高了区块数据存储的稳定性。因为新加入新增区块,需要验证前预设数量层的区块,保证了每个区块的验证时间,所以可以克服传统有向图中容易出现的区块验证时间不固定的缺点,提高了区块数据存储的吞吐量。由于本申请的区块数据存储方法中使用的有向图宽度始终是固定的,整个有向图结构始终是稳定的,因此收敛时间能够得到保证,提高了区块数据存储的吞吐量及稳定性。同时,本申请中的有向图结构并没有引入其他的数据结构。它只是对原有的有向图结构进行了结构上的改进,保持了简单的数据结构,提高了该区块数据存储方法的适用性。
在一个具体实施例中,本申请中将区块作为顶点、将区块的指向关系作为有向边、逐层排列、宽度为K的有向图,可以记为CoDAG(Compacted Directed Acyclic Graph,坚实的有向图)。基于该CoDAG实现区块数据存储的系统框架如图8所示,主要包括了以下五个模块:
网络模块:利用P2P协议进行区块链节点间的通信等功能;如,可以包括
CoDAG模块:定义了底层区块链的数据结构,以及维护整个结构的稳定性;
矿工模块:区块链平台中的区块链节点通过PoW共识机制进行挖矿,并且根据实际情况调整挖矿难度值;
共识算法模块:使得区块链平台中的区块链节点形成共识,即达到各区块链节点存储数据一致的状态;
底层数据结构:包括Merkle Tree(默克树),哈希计算模块等。
区块链平台中的区块链节点通过贡献自己的算力,共同维护CoDAG的正常运行,实现了去中心化。在CoDAG中,交易对象之间可以相互转账,并且转账信息不会遭到篡改。开发者可以基于CoDAG结构,通过编写代码开发自己的DApp(应用程序),实现自己想要的功能。该DApp可以基于部署有RPC(Remote Procedure Call Protocol,远程过程调用协议)的控制台(Console)实现对网络模块、CoDAG模块、矿工模块、共识算法模块及底层数据结构的调用。
如图9所示,在一个实施例中,提供了一种区块数据存储装置,该装置600包括:
有向图获取模块902,用于获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
目标层确定模块904,用于确定所述有向图的目标层;
新区块插入模块906,用于在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
上述的区块数据存储装置,获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;确定所述有向图的目标层;在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。由于组织区块的有向图的宽度为K,K为大于或等于2的自然数,相较于宽度为1的链式结构,能够使得区块链平台具有更大的吞吐量。又由于将有向图的宽度限定为K,并限定该有向图逐层排列可以限制有向图的发散性,使得有向图成为有层次有宽度的有向图,有利于提升区块链平台存储数据的稳定性。在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,可以维持有向图中的每一个区块均指向该区块上一层的所有区块的稳定结构,从而可以提高区块链平台存储数据的稳定性,并提高存储数据的安全性。从而,基于本实施例的区块数据存储装置,能够在提高区块链平台吞吐量的前提下,提高区块链数据平台存储数据的稳定性及安全性。
在其中一个实施例中,新区块插入模块,用于在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
在其中一个实施例中,还包括:
连通度确定模块,用于确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
导航区块确定模块,用于将所述连通度最大的所述区块,确定为导航区块;
反向连通度确定模块,用于确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
在其中一个实施例中,新区块插入模块,用于在插入所述新增区块时,若所述目标层的上一层区块数量大于K,还将所述反向连通度较小的M个所述区块,作为下一轮插入的新增区块;其中,M的值等于所述上一层的区块数量减K。
在其中一个实施例中,新区块插入模块,还用于在插入新增区块时,若所述目标层的上一层的区块数量等于K,则将所述新增区块指向所述上一层的K个所述区块。
在其中一个实施例中,还包括:
同步信息接收模块,用于接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;
信息同步更新模块,用于将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
在其中一个实施例中,信息同步更新模块,用于在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。
在其中一个实施例中,还包括:
世界状态更新模块,用于针对所述有向图,遍历更新层的各所述区块,将所述区块中的交易存储至交易集合中;执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在其中一个实施例中,世界状态更新模块,还用于对所述交易集合中的交易,按照交易金额大小进行排序;按照排序结果执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在其中一个实施例中,还包括:合法性验证模块;
合法性验证模块,用于在插入新增区块时,验证所述目标层的前预设数量层的各区块的合法性;
新区块插入模块,用于当所述目标层的前预设数量层的各区块合法时,将所述新增区块指向所述目标层的上一层的K个所述区块。
图10为一个实施例中计算机设备的内部结构示意图。参照图10,该计算机设备可以是图1中所示的区块链节点210中的各个服务器。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行一种区块数据存储方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种区块数据存储方法。计算机设备的网络接口用于进行网络通信。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的区块数据存储装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该区块数据存储装置的各个程序模块,比如,图9所示的有向图获取模块902、目标层确定模块904以及新区块插入模块906。各个程序模块所组成的计算机程序用于使该计算机设备执行本说明书中描述的本申请各个实施例的区块数据存储方法中的步骤,例如,计算机设备可以通过如图9所示的区块数据存储装置中的有向图获取模块902获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数。计算机设备可以通过目标层确定模块904确定所述有向图的目标层。计算机设备可以通过新区块插入模块906在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述区块数据存储方法的步骤。此处区块数据存储方法的步骤可以是上述各个实施例的区块数据存储方法中的步骤。
如,在一个实施例中,一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则
将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
在一个实施例中,所述上一层的各所述区块的反向连通度的确定过程,包括:
确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
将所述连通度最大的所述区块,确定为导航区块;
确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
在一个实施例中,在插入所述新增区块时,若所述目标层的上一层区块数量大于K,还:
将所述反向连通度较小的M个所述区块,作为下一轮插入的新增区块;
其中,M的值等于所述上一层的区块数量减K。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,若所述目标层的上一层的区块数量等于K,则
将所述新增区块指向所述上一层的K个所述区块。
在一个实施例中,所述获取基于区块的有向图之后,还包括:
接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;
将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
在一个实施例中,所述将所述同步有向图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新,包括:
在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;
将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块之后,还包括:
针对所述有向图,遍历更新层的各所述区块,将所述区块中的交易存储至交易集合中;
执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态,包括:
对所述交易集合中的交易,按照交易金额大小进行排序;
按照排序结果执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,验证所述目标层的前预设数量层的各区块的合法性;
当所述目标层的前预设数量层的各区块合法时,将所述新增区块指向所述目标层的上一层的K个所述区块。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述区块数据存储方法的步骤。此处区块数据存储方法的步骤可以是上述各个实施例的区块数据存储方法中的步骤。
如,在一个实施例中,一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则
将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
在一个实施例中,所述上一层的各所述区块的反向连通度的确定过程,包括:
确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
将所述连通度最大的所述区块,确定为导航区块;
确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
在一个实施例中,在插入所述新增区块时,若所述目标层的上一层区块数量大于K,还:
将所述反向连通度较小的M个所述区块,作为下一轮插入的新增区块;
其中,M的值等于所述上一层的区块数量减K。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,若所述目标层的上一层的区块数量等于K,则
将所述新增区块指向所述上一层的K个所述区块。
在一个实施例中,所述获取基于区块的有向图之后,还包括:
接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;
将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
在一个实施例中,所述将所述同步有向图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新,包括:
在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;
将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块之后,还包括:
针对所述有向图,遍历更新层的各所述区块,将所述区块中的交易存储至交易集合中;
执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态,包括:
对所述交易集合中的交易,按照交易金额大小进行排序;
按照排序结果执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
在一个实施例中,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,验证所述目标层的前预设数量层的各区块的合法性;
当所述目标层的前预设数量层的各区块合法时,将所述新增区块指向所述目标层的上一层的K个所述区块。
应该理解的是,虽然本申请各实施例中的各个步骤并不是必然按照步骤标号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种区块数据存储方法,所述方法包括:
获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;
所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;
所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
确定所述有向图的目标层;
在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
2.根据权利要求1所述的方法,其特征在于,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则
将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
3.根据权利要求2所述的方法,其特征在于,所述上一层的各所述区块的反向连通度的确定过程,包括:
确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
将所述连通度最大的所述区块,确定为导航区块;
确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
4.根据权利要求2所述的方法,其特征在于,在插入所述新增区块时,若所述目标层的上一层区块数量大于K,还:
将所述反向连通度较小的M个所述区块,作为下一轮插入的新增区块;
其中,M的值等于所述上一层的区块数量减K。
5.根据权利要求1所述的方法,其特征在于,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,若所述目标层的上一层的区块数量等于K,则
将所述新增区块指向所述上一层的K个所述区块。
6.根据权利要求1所述的方法,其特征在于,所述获取基于区块的有向图之后,还包括:
接收用于信息同步的同步图,所述同步图与所述有限图的数据结构相同;
将所述同步图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新。
7.根据权利要求6所述的方法,其特征在于,所述将所述同步有向图与所述有向图进行逐层比对,并进行信息合并以对所述有向图进行同步更新,包括:
在所述同步图与所述有向图的比对层不一致时,将所述同步图与所述有向图的所述比对层合并;
将合并后的所述比对层中的各所述区块指向所述比对层的上一层的各所述区块。
8.根据权利要求1所述的方法,其特征在于,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块之后,还包括:
针对所述有向图,遍历更新层的各所述区块,将所述区块中的交易存储至交易集合中;
执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
9.根据权利要求8所述的方法,其特征在于,所述执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态,包括:
对所述交易集合中的交易,按照交易金额大小进行排序;
按照排序结果执行所述交易集合中的每一笔交易,并根据交易结果更新世界状态。
10.根据权利要求1所述的方法,其特征在于,所述在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块,包括:
在插入新增区块时,验证所述目标层的前预设数量层的各区块的合法性;
当所述目标层的前预设数量层的各区块合法时,将所述新增区块指向所述目标层的上一层的K个所述区块。
11.一种区块数据存储装置,所述装置包括:
有向图获取模块,用于获取基于区块的有向图,所述区块为包括存储数据及指向关系的数据结构对象;所述有向图将所述区块作为所述有向图的顶点、将所述区块的所述指向关系作为所述有向图的有向边;所述有向图逐层排列,所述有向图的宽度为K,K为大于或等于2的自然数;
目标层确定模块,用于确定所述有向图的目标层;
新区块插入模块,用于在插入新增区块时,将所述新增区块指向所述目标层的上一层的K个所述区块。
12.根据权利要求11所述的装置,其特征在于:
所述新区块插入模块,用于在插入所述新增区块时,若所述目标层的上一层区块数量大于K,则将所述新增区块指向所述上一层的K个候选人区块;所述候选人区块为所述上一层中、反向连通度按照从大到小的顺序排在前K个的所述区块。
13.根据权利要求12所述的装置,其特征在于,还包括:
连通度确定模块,用于确定所述有向图中各所述区块的连通度;所述连通度等于所述区块到创世区块的路径数量;
导航区块确定模块,用于将所述连通度最大的所述区块,确定为导航区块;
反向连通度确定模块,用于确定所述上一层的所述区块的反向连通度,等于所述上一层的所述区块到所述导航区块的路径数量。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至10中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至10中任一项所述方法的步骤。
CN201910666566.0A 2019-07-23 2019-07-23 区块数据存储方法、装置、计算机设备及存储介质 Active CN110362633B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910666566.0A CN110362633B (zh) 2019-07-23 2019-07-23 区块数据存储方法、装置、计算机设备及存储介质
CN201910859383.0A CN110569246B (zh) 2019-07-23 2019-07-23 区块链节点信息同步方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910666566.0A CN110362633B (zh) 2019-07-23 2019-07-23 区块数据存储方法、装置、计算机设备及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201910859383.0A Division CN110569246B (zh) 2019-07-23 2019-07-23 区块链节点信息同步方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110362633A true CN110362633A (zh) 2019-10-22
CN110362633B CN110362633B (zh) 2023-12-05

Family

ID=68219633

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910859383.0A Active CN110569246B (zh) 2019-07-23 2019-07-23 区块链节点信息同步方法、装置、计算机设备及存储介质
CN201910666566.0A Active CN110362633B (zh) 2019-07-23 2019-07-23 区块数据存储方法、装置、计算机设备及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910859383.0A Active CN110569246B (zh) 2019-07-23 2019-07-23 区块链节点信息同步方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (2) CN110569246B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110989934A (zh) * 2019-12-05 2020-04-10 达闼科技成都有限公司 区块链节点数据存储方法、区块链系统及区块链节点
CN111061735A (zh) * 2019-12-13 2020-04-24 上海优扬新媒信息技术有限公司 一种基于单链区块链的扩容方法及装置
CN111340623A (zh) * 2020-02-21 2020-06-26 上海优扬新媒信息技术有限公司 一种数据存储方法及装置
CN113300889A (zh) * 2020-12-31 2021-08-24 恬家(上海)信息科技有限公司 链宽调节方法及区块链网络系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110943869B (zh) * 2019-12-16 2022-03-04 杭州复杂美科技有限公司 一种区块共识和广播方法、设备及存储介质
CN111935005B (zh) * 2020-08-07 2023-10-24 腾讯科技(深圳)有限公司 数据传输方法、装置、处理设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067201A1 (en) * 2005-07-15 2007-03-22 Grzegorz Malewicz Method and system for parallel scheduling of complex dags under uncertainty
US20070083730A1 (en) * 2003-06-17 2007-04-12 Martin Vorbach Data processing device and method
CN108805570A (zh) * 2018-06-01 2018-11-13 腾讯科技(深圳)有限公司 数据处理方法、装置及存储介质
CN109544344A (zh) * 2018-12-24 2019-03-29 众安信息技术服务有限公司 基于dag的区块链的交易处理方法及设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255108B2 (en) * 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
US9985964B2 (en) * 2016-03-28 2018-05-29 Black Gold Coin, Inc. Systems and methods for providing block chain-based multifactor personal identity verification
CN107147735B (zh) * 2017-05-12 2020-08-11 北京博晨技术有限公司 一种基于分层结构的分布式账本系统
CN107977340A (zh) * 2017-12-27 2018-05-01 邵美 一种区块链交易网络节点的重要性排序方法
CN108765151A (zh) * 2018-05-11 2018-11-06 深圳市恋上互联网技术有限公司 一种基于区块链的交易方法
CN108769154B (zh) * 2018-05-15 2021-01-01 北京工业大学 基于有向无环图和分布式账本的数据存储方法
CN110378694B (zh) * 2018-05-21 2021-01-12 腾讯科技(深圳)有限公司 区块链数据处理方法、装置、计算机设备和存储介质
CN108985732B (zh) * 2018-06-08 2020-09-04 中国地质大学(武汉) 基于无区块的dag技术的共识和账本数据组织方法及系统
CN108595720B (zh) * 2018-07-12 2020-05-19 中国科学院深圳先进技术研究院 一种区块链时空数据查询方法、系统及电子设备
CN109523260A (zh) * 2018-11-28 2019-03-26 段红 一种动态节点选举的高并发共识机制
CN109815208B (zh) * 2018-12-13 2021-03-26 重庆邮电大学 一种基于区块链的电池管理系统
CN109672733B (zh) * 2018-12-20 2022-06-07 众安信息技术服务有限公司 基于dag的区块链的账本同步方法及设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070083730A1 (en) * 2003-06-17 2007-04-12 Martin Vorbach Data processing device and method
US20070067201A1 (en) * 2005-07-15 2007-03-22 Grzegorz Malewicz Method and system for parallel scheduling of complex dags under uncertainty
CN108805570A (zh) * 2018-06-01 2018-11-13 腾讯科技(深圳)有限公司 数据处理方法、装置及存储介质
CN109544344A (zh) * 2018-12-24 2019-03-29 众安信息技术服务有限公司 基于dag的区块链的交易处理方法及设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110989934A (zh) * 2019-12-05 2020-04-10 达闼科技成都有限公司 区块链节点数据存储方法、区块链系统及区块链节点
CN110989934B (zh) * 2019-12-05 2023-08-25 达闼机器人股份有限公司 区块链节点数据存储方法、区块链系统及区块链节点
CN111061735A (zh) * 2019-12-13 2020-04-24 上海优扬新媒信息技术有限公司 一种基于单链区块链的扩容方法及装置
CN111061735B (zh) * 2019-12-13 2023-07-25 度小满科技(北京)有限公司 一种基于单链区块链的扩容方法及装置
CN111340623A (zh) * 2020-02-21 2020-06-26 上海优扬新媒信息技术有限公司 一种数据存储方法及装置
CN111340623B (zh) * 2020-02-21 2023-10-24 度小满科技(北京)有限公司 一种数据存储方法及装置
CN113300889A (zh) * 2020-12-31 2021-08-24 恬家(上海)信息科技有限公司 链宽调节方法及区块链网络系统

Also Published As

Publication number Publication date
CN110362633B (zh) 2023-12-05
CN110569246B (zh) 2022-03-11
CN110569246A (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
CN110362633A (zh) 区块数据存储方法、装置、计算机设备及存储介质
AU2019204722B2 (en) System and method for parallel-processing blockchain transactions
Yu et al. Repucoin: Your reputation is your power
CN111612613B (zh) 一种部署有中心化系统的区块链网络
CN110163600B (zh) 区块链系统及应用其的方法
Tao et al. On sharding open blockchains with smart contracts
CN108717630B (zh) 一种出块方法及其实现系统
CN109471744B (zh) 基于区块链的主链加并行多子链系统架构
US11836720B2 (en) Infinitely scalable cryptocurrency system with fast, secure verification
CN107276762B (zh) 一种多协议区块链的工作方法及装置
CN108776929A (zh) 基于区块链数据库的账单处理方法、系统和可读存储介质
KR101827373B1 (ko) 채굴 제한을 위한 합의 알고리즘을 포함하는 블록윈도우 모듈 및 관리 서버 그리고 가상화폐 거래 시스템 및 방법
CN110474774A (zh) 基于区块链的系统中的区块创建方法及区块链节点
CN109547211B (zh) 应用数字签名技术的分级并发拜占庭共识方法及系统
CN109871669A (zh) 一种基于区块链技术的数据共享解决方法
CN110741373A (zh) 用于管理区块链网络上的大区块的计算机实现的系统和方法
CN112907252B (zh) 一种基于多人链下通道的区块链交易方法及系统
CN109522362A (zh) 基于区块链数据的非完全数据同步方法、系统及设备
CN112988073B (zh) 一种可降低区块链存储开销的阶梯式数据存储方法及系统
CN109347868A (zh) 一种信息验证方法、装置及存储介质
CN113452747B (zh) 可扩展和安全的共识方法、系统、存储介质、智能终端
CN107930127A (zh) 游戏中实现团队转移场景的方法、装置、存储介质及设备
CN107634989A (zh) 一种云钱包构建方法及服务器
CN111798234A (zh) 一种轻量级区块链系统及构造方法
CN114328518A (zh) 基于utxo模型的低存储消耗的方法和系统

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: 40009328

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