掌桥专利:专业的专利平台
掌桥专利
首页

基于AMTs的区块链可验证存储方法

文献发布时间:2023-06-19 19:28:50


基于AMTs的区块链可验证存储方法

技术领域

本发明涉及大数据处理及信息技术领域,更具体地,涉及一种基于可验证多点评估树(Authenticated Multipoint Evaluation Trees,AMTs)的区块链可验证存储方法。

背景技术

随着区块链技术的发展和应用场景的逐步丰富,完整的区块链系统内部一定会包含一个存储模块,整体而言,区块链系统确实可以起到持久化数据的作用。当前典型的区块链系统采用的是Key-Value形式进行区块链账本状态的存储,主key是关键字,value是值。

key-value形式的分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。

然而,key-value形式的分布式存储系统不能进行复杂的条件查询。当修改其中的一个key-Value键值对时,需要对从叶子结点到根结点路径上的所有节点Hash进行计算更新。

请参阅图1,图1所示为key-value形式的分布式存储系统的结构示意图。如图1所示,路经上的每个更新都将放大底层存储的I/O读写操作,如一个简单的支付交易也至少包含了两个账本的状态更新,即扣除和增加两个账户的余额。由于当前新的区块链的吞吐量已接近每秒数千次的交易,存储已经成为区块链发展新的瓶颈。

目前业界已有一些方案,对上述问题进行优化,如基于AMTs(authenticatedmultipoint evaluation tree)的方法来进行定时更新,可以减少I/O的读写。

例如,以n=8为例,AMTs计算其拉格朗日插值,即满足f(i)=a

首先将其F(X)拆分成两个函数:F

F(X)=F

其中,

类似的,依次往下拆分,可以将F

请参阅图2,图2所示为AMTs可验证存储各节点树的组成的结构示意图。如图2所示,AMTs树中的每个节点有两个部分组成:

(1)函数的承诺式;

(2)该函数始终为0的索引的批量证明。

请查阅图3,图3所示为AMTs可验证存储x=7处的值更新时涉及的变更路径以及可验证证明点的示意图。如图3所示,当需要更新一个存储条目时,AMTs会从Root到该条目对应的叶子结点,并更新路径上的关联元素,其余节点没有变化,而证明时,只需证明其邻居节点的值为0即可;因此,AMTs方案相比于MPT方案,可以花费更少的时间来维护证明。

然而,AMTs方法也有其不足之处,其使用的是复杂且昂贵的椭圆曲线乘法操作,状态的更新可能比MPT(Merkle Patricia Tree)还慢。即尽管AMTs在更新承诺证明时花费了更少的时间,但对区块链系统来说,这个时间也还是很大的,如下图显示了英特尔i9-10900K机器上的测试结果,AMTs的椭圆计算时间花费大概0.1ms,这甚至比访问磁盘存储还要慢得多(如图4所示)。

究其原因,AMTs方法使用的是复杂且昂贵的椭圆曲线乘法操作,即C’=C+δ*G,其中,C’代表需要计算的新状态,C代表前一个状态,δ代表变化的路径上的差异值,G为选取的椭圆曲线的起点参数,椭圆曲线确定的情况下,其G是一个常数。因使用的是椭圆曲线乘法操作的计算,其状态的更新可能比现有的MPT(Merkle Patricia Tree)可能还慢。因此,只使用AMTs并不能很好的解决底层存储I/O读写瓶颈的问题。

也就是说,AMTs的方案虽然可以对证明维护的量上有所改进,时间上也更为节省,但由于其使用了昂贵的椭圆乘法计算,还不能真正的解决高效的可验证存储问题。

发明内容

本发明的目的在于提供一种基于AMTs的区块链可验证存储方法,其可有效提升区块链存储的效率。

为实现上述目的,本发明的技术方案如下:

一种基于AMTs的区块链可验证存储方法,其包括基于AMTs的区块链存储步骤S1和可验证步骤S2:

所述步骤S1具体包括:

步骤S11:构建用作更新版本的变化的AMTs树,所述AMTs树中的每个节点有两个部分组成:

①、函数的承诺式;

②、该函数外存在一个始终为0的函数的证明;

并且,所述AMTs树用于存储可验证存储数据的关键字和版本(key,version)的信息;当需要增加一个存储条目时,根据所述存储条目计算出节点的关键字Key,并将版本Version设置成初始值;当需要更新一个所述节点的存储条目时,从AMTs树的根Root到所述存储条目对应的所述节点,更新所述节点上的可验证存储数据的关键字和版本(key,version)中版本信息,即当所述叶子节点的数据变化时,只需要所述节点到根节点路径上关联节点的版本号加1即可;

步骤S12:将每个区块中的所述存储条目的数据扩展构建一颗Merkle树,用作存储每个交易区块的关键字、版本和数据值信息(key,version,value);

当所述AMTs树需要增加一个存储条目时,所述Merkle树增加一个新的节点,就将关键字Key、版本号信息设置成1以及Value的值,存储在所述Merkle树的一个所述节点上,形成所述关键字、版本和数据值信息(key,version,value)的数据,并生成可验证存储证明;

当所述AMTs树需要修改一个存储条目时,所述Merkle树增加一个新的节点,就将关键字Key、加1后的版本号信息以及Value的值,存储在所述Merkle树的一个所述节点上,形成所述关键字、版本和数据值信息(key,version,value)的数据,并生成可验证存储证明;

所述可验证步骤S2包括:

采用所述Merkle树所加入的节点,所述可验证存储证明根据所述AMTs树上节点的关键字和版本号信息(key,version),找到所述AMTs树上节点的Value的值。

本发明还提出一种可读存储介质,存储有可执行指令,该可执行指令用于执行所述的基于AMTs的区块链可验证存储方法。

本发明还提出一种数据处理终端,用于作为P2P网络的共识节点,接收、共识验证并存储该P2P网络中的区块,该数据处理终端包括:

上述的可读存储介质;

处理器,该处理器调取并执行所述的可读存储介质中的可执行指令,以执行基于AMTs的区块链可验证存储方法。

本发明还提出一种P2P网络,所述P2P网络的共识节点为上述的数据处理终端。

从上述技术方案可以看出,本发明所提出的是一种基于AMTs树并通过版本化的方式来更新证明的新型区块链可验证存储方法,相较于现有方案的MPT以及单纯的AMTs方案,证明的生成和维护更快,可有效提升区块链存储的效率,通过实验数据比对,与现有MPT方案相比,速度快7倍,与单纯的AMTs方案相比,速度快2.7倍。

附图说明

图1所示为key-value形式的分布式存储系统的结构示意图

图2所示为AMTs可验证存储各节点树的组成的结构示意图

图3所示为AMTs可验证存储x=7处的值更新时涉及的变更路径以及可验证证明点的示意图

图4所示为现有技术AMTs方法的椭圆计算相关操作花费的时间示意图

图5所示为本发明实施例中利用AMTs树存储版本号信息示意图

图6所示为本发明基于AMTs的区块链可验证存储方法一较佳实施例的示意图

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步的详细说明。

需要说明的是,在下述的具体实施方式中,在详述本发明的实施方式时,为了清楚地表示本发明的结构以便于说明,特对附图中的结构不依照一般比例绘图,并进行了局部放大、变形及简化处理,因此,应避免以此作为对本发明的限定来加以理解。

在以下本发明的具体实施方式中,请参阅图5,图5所示为本发明实施例中利用AMTs树存储版本号信息示意图。如图5所示,该方法包括基于AMTs的区块链存储步骤S1和可验证步骤S2。

在基于LVMT的区块链存储步骤S1中,本发明的基于AMTs方案,提出了一种版本化的新型区块链可验证存储的方法,其发明的核心思想为:通过AMTs树存储可验证存储数据的关键字和版本号信息,即(key,version);再利用merkle树来存储所述关键字、版本和数据值信息(key,version,value)的信息。

所述步骤S1具体包括:

步骤S11:构建用作更新版本的变化的AMTs树,所述AMTs树中的每个节点有两个部分组成:

①、函数的承诺式;

②、该函数外存在一个始终为0的函数的证明。

请查阅图6,图6所示为本发明实施例中在AMTs上的数据存储方式示意图。如图6左边所示,所述AMTs树用于存储每一个节点的关键字和版本(key,version)的信息;当需要增加一个存储条目时,根据所述存储条目计算出节点的关键字Key,并将版本Version设置成初始值;当需要更新一个所述节点的存储条目时,从AMTs树的根Root到所述存储条目对应的所述节点,更新所述节点(key,version)中版本信息的数据变化,即当所述叶子节点的数据变化时,只需要所述节点到根节点路径上关联节点的版本号加1即可,并生成可验证存储证明。

再请查阅图5,AMTs树用作更新版本的变化,即更新节点关键字和版本(key,version)信息数据的变化,当节点信息数据变化时,只需要该节点到根节点路径上的版本号加1即可,其进行的运算为加法运算,C’=C+G,其中,C’代表需要计算的新状态,C代表前一个状态,G代表椭圆曲线的起点参数,椭圆曲线确定的情况下,其为常数。

请查阅图6的右边所示:

步骤S12:将每个区块中的所述存储条目的数据扩展构建一颗Merkle树,用作存储每个交易区块的关键字、版本和数据值信息(key,version,value);

当所述AMTs树需要增加一个存储条目时,所述Merkle树增加一个新的节点,就将关键字Key、版本号信息以及Value的值,存储在所述Merkle树的一个所述节点上,形成所述关键字、版本和数据值信息(key,version,value)的数据。

当所述AMTs树需要修改一个存储条目时,所述Merkle树增加一个新的节点,就将关键字Key、版本号信息设置成加1以及Value的值,存储在所述Merkle树的一个所述节点上,形成所述关键字、版本和数据值信息(key,version,value)的数据。

也就是说,扩展的Merkle树可以用作存关键字、版本和数据值信息(key,version,value),其利用了merkle树加入节点和生成证明快(由于修改和更新数据慢,故Merkle树不作更新),只做数据加入,使每个区块都对应生成一颗Merkle树,每个版本的变化都要加入作为所述Merkle树的一个节点。

因此,从上述本发明的技术方案可以看出,其可以不用在AMTs树上进行证明的乘法计算,而是变成了加法计算(乘法计算需要160us,而加法计算只需要1us),可验证存储的生成和维护上,节省了大量的时间。

更进一步地,通过在扩展的merkle树上进行关键字、版本和数据值信息(key,version,value)节点生成,value的改变不会在merkle树上进行值的更新,而是先通过版本的变化,在merkle树上加入新的节点,并生成证明,从而节省大量的时间。

所述可验证步骤S2包括:

采用所述Merkle树所加入的节点,所述可验证存储证明根据所述AMTs树上节点的关键字和版本号信息(key,version),找到所述AMT树上节点的Value的值。

总结一下,在本发明的实施例中,如果要修改存储值Value,需要在AMTs上版本信息加1并生成证明,在扩展merkle树上存储(key,version,value)信息并生成证明。

具体地,修改某个存储节点的值,首先根据key值找到AMTs对应的点,并将该版本号加1,同时沿线的节点版本也做加1处理;也就是说,利用AMTs树来保存版本号信息,节点的value的变化通过版本号的变化来代替,将AMTs的多项式乘法运算转变为加法运算,节省计算时间,同时也减少底层I/O的读写次数。

并且,在扩展的merkle树上,增加一个节点,将key、加1后的版本号信息以及Value的值,存储在merkle树的一个新的节点上,并生成可验证存储证明,证明根据(key,version),确实能找到这个Value的值。即通过扩展的merkle树来存储(key,version,value)并生成证明,该树只通过增加节点用于存储值,而不做值的修改,提升可验证存储的效率。

本发明还提出一种可读存储介质,存储有可执行指令,该可执行指令用于执行所述的基于AMTs的区块链可验证存储方法。

本发明还提出一种数据处理终端,用于作为P2P网络的共识节点,接收、共识验证并存储该P2P网络中的区块,该数据处理终端包括:可读存储介质;处理器,用于调取并执行该可读存储介质中的可执行指令,以执行基于AMTs的区块链可验证存储方法。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。

本发明还提出一种P2P网络,其中该P2P网络的共识节点为前述的数据处理终端。

以上所述的仅为本发明的优选实施例,所述实施例并非用以限制本发明的专利保护范围,因此凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

相关技术
  • 基于区块链的建筑总包企业信用评价方法、区块链及存储介质
  • 基于区块链存储的可验证的可搜索对称加密方法
  • 基于区块链的双重可验证云存储方法
技术分类

06120115921412