品书网
返回上一页

区块链在交易可信管理上的研究综述*

时间:2023-08-16 04:18:27

毛湘科 李 超,2 张桂刚,4 张 健 蔚 欣 邢春晓,2,3

(1.清华大学信息国家研究中心 北京 100084)(2.清华大学计算机系 北京 100084)(3.清华大学互联网产业研究院 北京 100084)(4.中国科学院自动化研究所 北京 100190)

1 引言

2008 年,中本聪发表了关于加密数字货币的论文,标志着区块链技术的诞生[1]。区块链是一种通过共识协议、P2P 网络、加密算法和链式数据结构等来实现去中心化环境下数据一致性的技术。在十余年的发展过程中,区块链技术从最初的加密货币领域发展遍及到物联网[2]、供应链[3]、医疗健康[4]、金融科技[5]等众多领域。从任何用户都可以参与的公链发展出需要获得许可认证的联盟链。从存储地之间的转账交易发展成了存储文本、图片和表格等多种类型的数据;从完全的去中心化、脱离监管法,发展成了多中心化和强调监管的重要性。这些发展趋势都越来越凸显区块链所具备的防篡改、透明和可追溯等特性对交易数据的可信管理能力。

区块链具备与分布式数据库相类似的数据存储管理能力,已经有一些学者就区块链和分布式数据库在存储、共识算法和查询等方面进行了详细的对比[6]。相比传统的分布式数据库,区块链在数据管理方面最大的优势在于实现了去中心化环境下对交易的可信管理。区块链能够实现对数据的可信管理主要体现在三个方面:1)区块链的共识协议、链式结构和加密算法确保了去中心化环境下各节点间的数据的一致性,这是数据可信的前提。2)区块链提供的可验证查询方法,确保了不同类型节点在执行查询访问结果的完整性和可信性。3)区块链上存储的交易数据是透明的、全过程留痕的和可追溯的,任何参与者都可以对交易的真实性进行验证。

与已有的数字货币、共识协议、系统架构、交易分析等类型的区块链技术综述文章不同,本文的主要工作是从区块链对数据可信管理的角度出发,对近些年区块链在数据可信管理上相关的研究工作进行梳理。首先,我们从区块链的底层实现出发,对去中心化环境下提供区块链实现可信管理的共识协议算法和ADS进行了简单的梳理分析。接着,从区块链进行数据管理所需要的最基础的查询功能出发,对区块链上查询方法的改进进行了归纳总结,并且从医疗数据管理、物联网数据管理和数据溯源三个方面对查询的应用进行了讨论。

2 区块链交易可信管理的基础

区块链作为一种去中心化的分布式账本,共识算法、可验证数据结构是实现区块链对交易可信管理的基础。

2.1 区块链共识算法

共识算法是维护区块链在互不信任的环境中各节点间数据一致性的基础,各节点间数据的一致性是交易可信管理的最低要求。在比特币中,中本聪设计了基于工作量证明的共识算法(Proof of Work,PoW),通过消耗计算资源解决难题的方式来达成一致共识,是目前区块链系统中最常用的共识算法。随着区块链技术的发展和在不同场景下的应用,一些新的共识算法也被相继提出,例如权益证明(Proof of Stake,PoS)[7]、委托权益证明(Delegated Proof of Stake,DPoS)[8]和实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)[9]算法等。

2.2 可信数据结构

为了实现对区块链中存储的交易数据进行快速的可信查询验证,区块链在设计的时候提供了ADS数据结构来对交易进行组织。

1)Merkle Hash Tree

Merkle Hash Tree(MHT)是由密码学家Merkle提出来的。MHT 通过树状结构把一系列的元素组织起来,通过树内路径就可以快速完成验证其中某个元素。

MHT 是一棵由哈希值构成的二叉树,通过对一组有序的数据集合进行哈希运算,并将哈希值作为叶子节点,通过二叉树的构建和哈希运算构建MHT。首先将数据块集合D中的所有元素进行哈希运算,得到有序的哈希集合。有序的哈希集合H作为叶子节点层,按照排序对每两个相邻的节点进行拼接,并进行哈希运算作为两个节点的父节点。自底向上如此返回对每层节点进行运算,最后得到一个MHT根的值。

2)Merkle Patricia Tree

在以太坊[10]和Hyperledger Fabric[11]等区块链系统中,除了包含有交易数据的Merkle 根外,还含有针对账户状态数据的状态Merkle根(State Root),以太坊块头还含有针对交易执行日志的收据Merkle 根(Receipts Root)。以太坊计算Merkle 根使用的是Merkle Patricia 树,虽然区块中的交易数据是不变的,但状态数据经常改变且数量众多,构建新区块时,MPT 仅需计算在新区块中变化了的账户状态,状态没有变化的分支可直接引用,而无需重新计算整棵树。在MPT 树中,包含了扩展节点、分支节点和叶子结点。扩展节点包含了共同的Key 前缀;分支节点通常在扩展结点之后,基于单个16 进制字符的key 前缀实现了树的分支;叶子结点包含一个以太坊账户状态。MPT 树实质上是融合了MHT 和前缀树,因此其具有查找能力。以一个以太坊账户地址为查找路径,能够快速地从MPT 根向下查找到叶子节点中账户的状态数据,这种查找能力是MHT树所不具备的。

3)Merkle Bucket Tree

在Hyperledger Fabric 中计算状态Merkle 根使用的是Merkle Bucket 树,Merkle Bucket 树是多叉树,每个叶子结点是一个桶,桶中存放的是Key-Value类型的状态数据集。为新区块计算状态根时,没有变化的桶可以被跳过,因而可快速计算状态根。Merkle Bucket 树可通过调整桶数和分支树控制树的深度和宽度,从而可在不同的性能和资源需求间权衡。

3 区块链查询

区块链具备与数据库相类似的存储功能,其也经常被用来与分布式数据库进行比较。对于区块链上交易数据的可信管理,离不开数据查询。在比特币、以太坊和超级账本三种典型的区块链系统中,均采用Key-Value 数据库对数据进行存储,有限的表达能力限制了这些系统定义更复杂的查询。同时,受限于可信数据结构(ADS)所支持的查询类型,这些系统只支持交易验证、账户状态查询等简单查询,无法支持更丰富的可验证查询。特别是,区块链通常为链式结构,当存储的交易数据量较大时,执行复杂查询的效率会十分低下,无法满足大规模的查询需求。为了提升区块链上查询的可信度、高效性和支持复杂查询,已经有许多的研究者进行了大量的研究工作。接下来,将从对区块链的查询改进和查询应用两方面分别进行叙述。

3.1 查询改进

区块链作为仅追加的链式结构,其提供的简单的查询功能难以满足用户的需求。为了提升查询的效率,支持更复杂的查询类型,许多的研究工作对原有区块链的查询方案进行了改进。

受启发于传统数据库提供的丰富查询功能和区块链系统的防篡改性,已经

提醒您:因为《区块链在交易可信管理上的研究综述*》一文较长还有下一页,点击下面数字可以进行阅读!

《区块链在交易可信管理上的研究综述*》在线阅读地址:区块链在交易可信管理上的研究综述*

123
经典故事
小灰兔和小鸭子
小猫和鸭子
小草和大树
“螳臂当车”新解
让神为难的心愿
空心树
狮子与驴的博弈
受伤的盘羊
老虎的胡须
小鲨鱼的贪婪
热门书籍