区块链论文阅读(二)GEM2 -Tree: A Gas-Efficient Structure for Authenticated Range Queries in Blockchain

Ines ·
更新时间:2024-09-21
· 954 次阅读

GEM^2-Tree: A Gas-Efficient Structure for Authenticated Range Queries in Blockchain

Ce Zhang, Cheng Xu, Jianliang Xu, Yuzhe Tang,et al.GEM^2-Tree: A Gas-Efficient Structure for
Authenticated Range Queries in Blockchain.Proceedings of the 2019 IEEE 35th International Conference on Data Engineering (ICDE)

DOI: 10.1109/ICDE.2019.00080

gas :In asmart contract-enabled blockchain like Ethereum, users needto pay gas for storage and computation as the smart contractexecution costs miner’s resources.

本文中的两个创新点(主要挑战):
设计一种可认证数据结构authenticated data structure(ADS),可由块链有效地维护
GEM^2 Tree :这可以显著地减少智能合约的存储和计算成本。
GEM^*2 Tree:在不牺牲查询性能的条件下,可以进一步降低维护成本。

区块链2.0,即以太坊可以为更多的数据类型提供服务,例如text,documents,images,但这些类型的数据通常数据量巨大,并且直接在链上存储原始数据是不可扩展的。为了解决这个问题,常用的方法是采用混合存储体系结构:
原数据存储在专用存储服务器上,同时,将每个数据对应的密码哈希作为原始数据的公证保留在链上。虽然该方案很好地用于简单的键值查询,范围查询,但是不支持其他广泛使用的查询类型。
更新相关的问题,如果仅仅用简单的Merkel Tree作为ADS,由以下于三个方面导致更新代价高:
1.插入可能会导致叶节点中的一系列更新,以保持原数据的顺序;
2.插入需要更新所有祖先节点的huah;
3.插入可能导致递归节点分裂,这消耗大量的存储和算力来创建新节点并重新分布索引键。
因此需要提出新的ADS。

ADS> 在外包数据库中受到身份验证的查询处理的启发,直观的方法是利用智能合约在blockchain的搜索关键字的顶部构建经认证的数据结构(authenticated data structure,ADS,例如MerkleHash树)。

智能合约

在这里插入图片描述智能合约是一个可信的程序,允许用户在区块链中处理数据。程序由矿工执行,分块协商一致协议保证了程序的正确性。在执行过程中,产生的交易费用,因为矿工花费计算资源,以gas为单位。表1显示了Etherum平台中某些主要存储和计算操作的费用。

3.PROBLEM FORMULATION A. System Model

在这里插入图片描述
由四个部分组成,每个数据对象都由一个二元元组表示在这里插入图片描述

ki is the value of the search key vi denotes the rest of the data object

当有数据插入或者更新时,DO将oi= 发送给SP并将 发送给区块链。好处:在不影响完整性保证的情况下降低存储成本。
ADS由SP和智能合约共有,查询过程如下:
在这里插入图片描述

B. Threat Model

在系统模型中,假设DO、Blockchain和查询客户端是受信任方,第三方SP被视为不受信任的一方,因为它可以有意或无意地修改、添加或删除数据。因此,SP必须证明查询结果的正确性soundness和完整性completeness:

Soundness. All of the answers in the result satisfy the query criteria and are originated from the DO;
Completeness. No valid answer is missing from the query result.

4. BASELINE SOLUTIONS

主要思想:SP和blockchain都维护相同的MB-tree版本,以支持在混合型存储区块链上实现认证查询。

Merkle B-tree (MB-tree)

MB-tree可用于验证范围查询。因此可以分别构建和维护两个相同的MB-tree作为SP和智能合约的ADS,。在块链中。
验证步骤:
client --Q–>SP ==>遍历MB-Tree,得到一个VOsp(基于ADS的认证对象)
1.client从区块链上检索认证摘要VOchain
2.利用result 、VOsp在本地重构MB-Tree root
3.对比重构的MB-Tree root 与VOchain(即区块链中的Merkle root)

接下来,分析区块链中MB树的维护成本:
插入一个对象:为了减少gas cost,假设MB-tree节点容量与区块链数据访问的粒度相同,假设MB-Tree中扇出F,当前数据库大小为N。
在最坏的情况下,单个对象产生的gas:
在这里插入图片描述
个人想法: 该公式中logFN 应该是忽略了MB-tree中索引节点的大小。
在这里插入图片描述
对象插入需要查找叶节点来存储对象

1.要查找可以插入的位置需要消耗 logFNCsload gas
2.存储该对象 Csstore gas
3.更新logFN个祖先节点,每个都需要获取所有扇出的hash值、重新计算hush值、更新值 F · Csload + Chash + Csupdate gas 在这里插入图片描述
此外,在最坏的情况下,对象插入可能导致O( logFN)(个)节点分裂,以保持平衡的树结构。在每个节点拆分中,将创建一个新节点,同时进行密钥重新分配和更新节点的哈希值
4.节点创建消耗2Csstore gas来存储节点的内容和hash,因为发生了拆分所以被拆分的索引节点分为两个部分,所以公式中*2。最后将插入节点存储。

Suppressed Merkle B-tree (SMB-tree)

维护区块链中的MB-tree会由于大量的写操作(即存储和更新),消耗大量的gas。同时,可以观察到,在查询处理期间仅使用根hashVOchain。提出SMB-Tree 只实现块链中的根节点(抑制其他的节点)。插入对象时,智能合约将在Fly上计算SMB-tree的所有节点,并且只将根hash更新到BlockChain存储。 在这里插入图片描述
1.智能合约将所有数据从块链存储加载到内存中:N· Csload
2.对一存在内存中的数据进行排序: NlogN· Cmem,其中 NlogN 应该为排序的复杂度,查阅资料后满足的排序方法为分治排序。
3.计算hash值,需要计算N/F个hash: N/F · Chash
4.将插入对象和更新的根hash写入区块链存储:Csstore + Csupdate

ADS设计原则

基于以上MB-Tree和MBS-Tree
1.避免维护长排序列表。随着数据库规模的增加,高的更新成本会削弱系统的性能。
2.采用更多的读操作(减少写操作)。由于共识协议,区块链中的写成本远高于读成本。因此,对于中间变量,我们可以在内存中计算它们,并且只在块链中维护最终的计算结果,以降低存储成本。
3.适应不同规模的数据库。数据库大小对ADS的维护性能有影响,ADS应该能够适应不同大小的数据库。

GAS-Efficiency Merkle merge TRREE(merkle混合树) GEM2-tree Structure

支持多种独立的结构:一个大型的完全结构化的MB树作为主要索引;一系列小型结构压制的SMB-Tree用于索引新插入的对象。
优势:
1.一个新的对象可以插入到较小的SMB-Trees,这是更节省gas开销
2.由SMB-树索引的对象可以批量合并到MB-Tree中,以节省更新开销
关于SMB-Tree,每个对象插入都需要重新构建SMB-Tree的内部结构,以便更新根哈希。为了降低更新成本,我们将存储空间构建为一组指数大小的分区,每一个分区,最多可以维护两个SMB-Tree,因此可以合并多个插入。分区是合乎逻辑的,因为它们将随着合并而动态更改。分区优点:
1.由于可以将新对象插入定向到最小的分区,所以在根哈希更新期间需要读取和计算的数据更少;
2.对象写入储存后不需要对其重新排列;
3.节省了SP端的维护成本,不需要在每次插入对象后都重建整棵树;
4.这将确保分区总数为O(logN),这将有利于查询处理。
在这里插入图片描述
1&2在区块链和SP之间共享,3只存在于区块链中
值得注意的是,区块链中的搜索键(3)仍未排序,以降低gas成本;它们基本上是按插入顺序存储的。此外,虽然SMB-Tree结构在区块链中被抑制,但它们在SP处完全实现,以支持高效查询。
(2)对于每个分区,最多含有两个SMB-Tree(分别表示用Tl和Tr表示)

GEM2-tree Maintenance

GEM 2-树有三种维护操作:
(1)插入(2)更新(3)删除(删除操作可以看作是用虚拟对象更新数据对象,因此,我们只关注插入和更新操作。)
算法不做详解

Authenticated Query Processing

由于GEM2-Tree由一个MB-Tree组成和多个SMB-Tree组成,SP需要遍历所有树,对每一棵都进行范围查询,SP将每个树的结果对象和VO组合起来生成最终查询结果和VOsp。
首先SP检查查询范围是否与当前树根的边界重叠。
没有重叠,则表示当前树对查询结果没有作用,在这种情况下,编码边界信息的root hash可以直接用作VO,并停止查询。
重叠,范围查询可以作为广度第一搜索。从根节点开始,如果某个非叶节点与查询范围相交,将进一步探索其子树;如果非叶节点与查询范围没有交集,则其hash将作为VO的一部分。
到达叶节点时,SP将查询每个基础对象。属于查询范围的对象将被添加到查询结果中,而其他对象的hash将被附加到VO中。
在客户端,验证过程由两个步骤组成,即检索VOchain和结果验证。

客户端从区块链中检索GEM2-Tree中所有树的Merkle根。VOchain可以由客户端根据最新的块使用区块链共识协议进行验证。 客户端从两个方面检查每棵树的VOsp:
• Soundness Check 客户端利用查询结果R和VOsp中兄弟叶节点和相邻非叶节点的hash来重新构造树的根hash。如果重构的根hash与从VOchain获得的相应根哈希相同,则通过检查。
• Completeness Check 如果当前树范围与查询范围不相交,客户端可以通过检查与查询范围有关的边界信息来确保没有丢失结果。否则,客户端可以通过检查边界搜索键来确认完整性。
查询例子:
在这里插入图片描述
R = {10, 13}
VOsp = {vo1.l, vo2.l, vo2, r, vo3.l}
VOchain = {h7, h10, h13, h14}
作者:断断断就断了



区块链论文 RANGE IN for gem tree 区块链

需要 登录 后方可回复, 如果你还没有账号请 注册新账号