区块链系统中的分布式数据管理技术——挑战与展望

于戈, 聂铁铮, 李晓华,等. 区块链系统中的分布式数据管理技术——挑战与展望. 计算机学报上2021年第一期的一篇综述。

摘要

区块链系统固有的性质使其可以用来解决不可信环境下数据管理的问题。本文阐述了区块链系统中的分布式数据管理技术,并详细分析了各个系统中(比特币、以太坊、超级账本)的数据存储结构、分布式查询处理与优化技术及其优缺点。最后还总结了此技术在多个领域中的应用与发展前景。

上图比区块链系统公认的基础架构模型多了查询层,这里只是为了后续对其查询机制进行分析。

区块链系统与分布式数据库的异同

同:

(1)分布式

  都是物理上分散(节点分布在各个不同地方)、逻辑上统一(数据逻辑上属于同一系统)的系统。

(2)透明性

(3)自治性

  区块链系统的参与节点可以独立地决定如何与其他节点通信,同时本地保存了完整的共享账本,即可本地进行查询。

(4)可伸缩性

  参与节点的规模任意扩展,不影响系统整体性能。

异:

(1)去中心化拓扑结构

  区块链系统采用P2P网络,各节点通过通信控制器(CM)基于邻居地址进行通信,加入与退出随意。

  传统分布式数据库采用中心化的主从结构。

(2)数据分布方式

  分布式数据管理的数据存储方式通常分为两类:一是分割式,数据被划分成若干个不相交的分片,分别保存在不同的节点上,数据的划分方法分为水平分片和垂直分片;二是复制式,同一个数据分片保存在一个以上的节点上,分为部分复制和全复制。

  分割式能节省存储空间,但查询效率低下;复制式提供冗余存储能提高查询效率,但耗费存储空间且需要维护数据一致性。

 (3)数据查询处理

  区块链系统在存储了完整共享账本的本地节点进行查询,由于缺少索引结构,只能通过顺序扫描进行查询。目前区块链系统常用的查询优化方式是将账本记录存储在Key-Value数据库中。比特币、以太坊等都已经使用LevelDB来存储和检索数据。

  传统分布式数据库查询处理优化是基于数据副本大小、分布场地、并行计算思想等。

 (4)数据一致性保护

  区块链系统:PoW、PoS、DPoS等

  分布式数据库系统:PBFT、Paxos、Gossip、RAFT等

(5)数据安全性机制

区块链分类

节点所具有的系统功能有:

(1)记账功能,在比特币中,最先发现区块生成哈希值随机数的节点获得记账权和代币奖励。

(2)数据存储功能,对系统中的区块数据、区块链元数据、状态余额等进行存储并验证有效性。

(3)交易提交功能,包括交易输入与输出。

(4)路由功能,用于节点在p2p网络中发现邻居节点进行通信和同步区块。

(5)钱包功能,用于生成并保存公有链账号对应的私钥、公钥和规范地址。

(6)成员管理,主要是联盟链中。

区块链系统内节点角色分类

(1)全节点

全节点有数据存储功能和路由功能,其任务是验证记账节点生成区块的有效性,帮助其他节点进行路由。全节点存储了完整的数据副本,提供查询服务。

(2)记账节点

记账节点有记账功能,数据存储功能和路由功能,主要任务是对交易进行排序打包成区块,并将区块加入区块链中。(有些记账 节点会有钱包功能)

(3)简单支付验证节点

简单支付验证(Simplified Payment Verification,SPV)节点主要是对交易进行验证,不存储区块数据。比特币系统中的SPV节点会存储区块头数据。

 (4)排序服务节点

对接收到的交易进行排序并打包生成区块。

区块链系统的外部角色分类:

(1)交易客户端

具有交易提交功能和钱包功能,主要用于用户在区块链系统上提交交易操作,如转账、提交智能合约等。客户端可以是APP,也可以是与SPV机制结合实现的轻量化的数字钱包。

(2)纯矿工节点

负责PoW难题计算任务。

区块链系统拓扑分类

 

 

(b)和(c)属于有向无环图(DAG)结构区块链,当前,基于Tangle结构账本的DAG区块链有IOTA和Byteball [33],采用Lattice结构账本的Vite项目[34]和InterValue项目[35]

 

 

区块链系统的数据存储技术

1. 数据结构

(1)Merkle树(比特币)

(2)Merkle Patircia树(以太坊)

基于Merkle树和Trie树(字典树)结合进行改进而来

2. 存储组织方式

文献[19]较好的总结了现有区块链的数据库存储方案。

(1)比特币

区块头和区块体数据以blk*.dat文件的形式存储,而包含交易花费out信息的区块“undo”数据以rev*.dat文件存储,用于区块链发生回滚时进行恢复,比特币的状态数据和区块元数据则采用LevelDB存储。状态数据存储了所有当前未花费交易输出及相关元数据,这样可以不通过扫描全部区块数据就能够验证新加入的区块和交易。区块的元数据记录着区块在磁盘上存储的位置。SPV节点使用了Bloom Filter数据结构过滤不属于钱包的状态数据。

(2)以太坊

以太坊区块头的成员变量中包含了三个Merkle Patircia树的根哈希,分别对应状态树、交易树和收据树,分别存储在三个数据库中。以太坊中共建立了三个LevelDB数据库,分别是BlockDB、StateDB、ExtrasDB。其中,BlockDB存储的是区块头和交易记录,StateDB存储的是账户的状态数据,ExtrasDB则存储收据信息和其他辅助信息。

以太坊的区块体中包含的是交易记录和Uncles成员。区块头和区块体的成员变量最终转换成RLP编码的键值对形式存储在LevelDB中。

(3)超级账本

超级账本系统与比特币和以太坊的最大区别就是支持多链,其中每个链对应一套账本,4个LevelDB数据库。图6(b)中,每个通道对应一条区块链账本,每个记账节点可以加入多个通道(数据隔离只对记账节点),排序服务节点可以接收所有通道数据。

3.存储优化技术

当前关于区块链系统的研究中所采用的存储优化方法主要包括三种:使用数据库系统管理区块数据、使用高效的索引结构提高数据访问效率和利用分布式存储策略减少节点存储负载。[不作详细阐述]

区块链数据存储的保密机制

(1)数据加密保护

典型应用有门罗币(XMR)和Zcash。

(2)数据隔离

超级账本有使用。

(3)链外存储

摩根大通的Quorum系统中私人消息采用链外中继方式,即区块链中仅记录消息的加密指纹。比特币体系下的闪电网络则属于典型的状态通道机制,其中交易明细不作为记录存储在分布式账本上,仅作为有争议发生时的单据,从而实现隐私保护的效果。

(4)其他

典型的是Corda系统的类盲签名技术,其中通过去掉敏感数据后生成Merkle树的方式实现交易的隐私保护。还有身份混淆、一次一密等。 

存储扩展技术

(1)比特币系统的OP-RETURN类型

(2)多链存储

典型的是EKT框架,该技术采用并行多主链结构,分为Token链和DApp链,其中不同的主链可以采用不同的共识机制。

(3)IPFS的文件存储

 图片引用自https://zhuanlan.zhihu.com/p/46201855

 

posted @ 2022-10-19 11:34  wuqio  阅读(439)  评论(0编辑  收藏  举报