【注】全文统一用分布式账本技术来等效替代区块链一词
基本信息
- 论文链接:《Chain or DAG? Underlying data structures, architectures, topologies and consensus in distributed ledger technology:A review, taxonomy and research issues》
- 论文类别:区块链综述
- 论文年份:2022
- 关键字:Blockchain,Direct acyclic graph,Distributed ledger technology,System architecture,Data structure,Review
- 期刊:CCF B,《Journal of Systems Architecture》
- 文章核心结构
- section3:介绍传统的分布式账本结构和它的变体
- section4,5:分别介绍了基于链和基于 DAG 结构的分布式账本技术
- section6:总结了不同分布式账本结构的设计动机和目的
- section7:总结这些结构,并指出未来的研究方向
简介
自 2009 年分布式账本技术(区块链,DLT,…)被提出以来,大家熟知的区块链一般是以链式结构构成,近些年,为了满足一些特殊场景的需求(比如,IoT 环境),也就是迈向“区块链+”的阶段,传统的链式结构和区块结构不能满足通用性的需求,在保证分布式账本本身的特性下,涌现出了大量新的分布式账本的数据结构。
这些结构从大类上分为了传统的链式结构和 DAG 结构,而这两个分类下,又分为对区块(block)的修改,对链结构的修改。
文章贡献
- 总结了当前各种分布式账本的数据结构
- 分析了为什么会提出这些新型的数据结构,这些新的数据结构有什么用
- 新型数据结构对共识算法的带来的影响和变革
- 分析了不同数据结构带来的安全问题
- 指出了在分布式账本数据结构和相关共识算法的当前挑战和未来研究的方向
其中文章的创新点在于作者第一次以综述的方式总结了各种数据结构,拓扑结构以及某些应用场景和它们对应的解决方案。
传统分布式账本结构和它的变体
传统的区块链结构
传统的分布式账本结构是指传统的区块链结构,而传统的区块链结构是从 Bitcoin 中抽象而来的。
具体的结构是这样的,它由一个包含元数据的区块头和紧跟其后的占据区块最大空间的一长串交易列表组成,每个区块通过一个经过 hash 计算的引用前后连接。
其中最核心的部分是区块头,它的组成如下:
- Version:矿工挖掘当前区块使用的软件的版本,以及遵循的区块验证规则
- Preivous block header hash
- Merkle root hash:代表了本区块中所有交易的一种摘要
- Time:时间是矿工开始为挖掘进程散列报头的Unix纪元时间
- nBits(Bits):寻找当前区块的 Nonce 的难度版本
- Nonce:要被矿工寻找的一个值
可以说大多数基于区块链的系统都是按照这样的数据结构进行设计的。
变体
为了让分布式账本满足新的环境需求,一些针对其数据结构和拓扑结构微小改动的方式被提了出来。
- 往区块头和区块体中增加一些元素,比如 Bitcoin-NG
- 为了让分布式账本变得可以修改,改变区块头中的 hash 为顺序值
- 为了缓解节点存储的压力,增加了一些特殊的区块,比如检查点区块(checkpont block)
- 为了加快区块链 + IoT 环境下数据检索的速度,提出了二维链(two-dimension chain)和可追加链(Appendable-block blockchain)
- 为了解决扩展性问题,提出了 DAG 结构的分布式账本结构
这些分布式账本数据结构的变体,我会选择一部分在接下来的章节中描述一些细节。
变体详解
正如前文所讲过的,分布式账本的数据结构的变体分为三大类:一类是对块(block)的修改,一类是对链(chain)的修改,还有一类是基于 DAG 这种的新型数据结构。
对块的修改
对块的修改,主要是增删区块中的某些组成元素(比如,删除 nonce,增加某种时间戳等),目的是为了满足使用场景的需求(比如,对扩展性,对时间)。
比如基于 PoAh 共识机制的分布式账本,PoAh 旨在为保持分布式账本中数据的不变性和可追溯性的条件下提供轻量级的共识算法。
它的工作原理大致如下:
- 参与者首先将交易打包成一个区块,在这一阶段,区块的组成基本和传统的区块结构一样
- 然后节点对块进行签名,并将区块和签名一起广播
- 受信任节点会验证签名,如果验证成功会继续向全网广播
基于 PoAh 共识的分布式账本同传统分布式账本最大不同在于,它将受 PoAh 共识保护的信息作为了区块组成元素的一部分。
其余类似修改块结构的分布式账本在这里不再赘述,它们大致有以下这些:Block-DEF,基于 LDC 共识,polynomial-based modifiable blockchain,PBE-DA 等等。
对链的修改
对链的结构进行改动主要是为了满足能够对链执行修改和撤销操作。总体的思路如下:
- 增加链中特殊的区块
- 增加多条链
- 改变链上的规则
这里介绍文章中提到的 Bitcoin-NG 这种分布式账本技术,它继承了 Bitcoin 中的 UTXO 账户模型,PoW 共识机制和 Bitcoin 的信任模型,但增加了特殊的区块,改变了传统分布式账本中的链上规则。
为了提升扩展性和减少能耗,Bitcoin-NG 使用了两种区块:一个是 key block,一个是 microblocks 来促进吞吐量。
- key block:包含了对前一个区块的引用,并且不包含任何交易。前一个区块要么是 key block,要么是 microblocks
- microblocks:包含了账本的入口,区块头(头里面包含了对前一个区块的引用,Unix 时间,账本入口的 hash,头的签名等)
每一个 key block 后面都跟了一组 microblocks。一旦下一个 key block 出现,那么领导权(mining)将被转移)。一旦 miner 变成了领导者,它可以无需执行 mining 操作就产生 microblocks。
从上图中可以看到,Bitcoin-NG 将一轮时间分为了几个阶段,每轮将会在 key block 之间移动领导权。
接下来介绍另一种针对链结构的修改的分布式账本技术 HIBEChain。提出它的目的是为了在 IoT 和边缘计算中减轻网络资源的需求到线性量级。
因此它的提出者在 IoT 设备和数据管理系统上构建了一个基于区块链的分层架构。受到 DNS 和公钥基础设施架构的影响,作者将这种分布式账本结构设计成了树形,每一个叶节点都是一个链,从根到叶,每一个链都关联着不同的区域或等级。
基于 DAG 的分布式账本结构
图天生比线性链具有更高的横向扩展性。
按照实施 DAG 的结构位置可以分为:TDAG(transaction-based DAG)和 BlockDAG;
按照架构又可以分为原生 DAG(Naive DAG),基于主链的 DAG(Main Chain-based DAG) 和基于并行链的 DAG(Parallel Chain-based DAG)。
下面我简单按照架构的分类,介绍其中比较代表的架构方案。
Naive DAG
顾名思义 Naive DAG 就是原生的 DAG,并且不施加任何对该结构的限制。DagCoin 是最早采用该种结构的架构方案,它的目标是为交易构建极低手续费用的扩展网络。
基于并行链的 DAG
在基于并行链的 DAG 中,每一个节点维持一个单独的链来存储本地数据,然后通过同其它节点的交互形成并行链的结构。
并行链不同于多链(multiple chain),因为后者不存在底层的交互功能。
Hashgraph 是比较流行的,且典型的基于并行链的 DAG。在 Hashgraph 中,每个成员维持一个链,并且通过 gossip 协议与其它节点通信,通过随机介入(random access)的方式和邻居节点进行交互同步。
基于主链的 DAG
基于主链的 DAG 的核心就是共识发生在主链上,这种架构模型允许容忍一定程度的分叉,但最终又会汇合到一条主链上。
有一种基于树状结构的 DAG 共识叫做 GHOST 采用了这种模型。它的目标是解决传统分布式账本中的高并发问题,因为在这种情况下,双花问题可能会发生。
如图所示是 GHOST 的结构。它采用”可观察的贪心最重子树“(greedy heaviest-observed sub-tree)来替代最长链(Longest chain rule)从而选择出主链。
如上图所示,蓝色圈的部分为子树,这棵树的块个数为 6,而基于最长链的子树块个数为 5,被遗弃。链的增长递归的采用这种规则进行主链的选择,目的是为了用这种方式提升其安全性。
总结
这些新型分布式账本的结构和架构被提出来的原因,主要是为了利用自己设计的功能而不丢失原有的分布式账本的属性,同时提升分布式账本本身的扩展性和吞吐量。
本篇文献总结了很多不同的分布式账本的数据结构和架构,比如,修改区块中的元素,在一些用于溯源和证据链的环节中,像加密的元数据,名字,签名等信息替代了传统的分布式账本中的数据信息。
文章也提出了一些未来研究的方向,如下所示:
- 适合新共识的结构:一般来说共识算法和分布式账本的结构是相辅相成的,但实际研究中,研究者往往要么只提出算法,要么只提出新结构,那么这里面就存在优化的切入点
- 确认块的问题:在 DAG 结构的分布式账本中,最终块的确认称为了难点(传统方式是用最长链),所以如何在 DAG 中确认下一个块也许是一个研究点
- 分层的分布式账本结构,分层的结构有助于提升单一层结构的性能问题,甚至可以在不同层次融合多种分布式账本的结构
- 可撤销和可修改的结构:虽然不变性是分布式账本的核心属性,但一些场景下,我们也需要撤销和修改的功能,比如账本中存在恶意信息等,所以这也是一个研究点,在保留其它分布式账本特性的情况下,如何实现这个目标呢?
- 简化结构:分布式账本还存在另一个无可避免的原生性问题,那就是不断增长的存储空间,尤其是在 IoT 这样的环境下,这种特性成了瓶颈所在
以上便是本篇论文的赏析内容,原始论文综述了当前分布式账本的数据结构和架构,总结了近一,两年这方面技术的进展,对于对这方面感兴趣的研究者有高屋建瓴的帮助。
本篇赏析,选取了文献的基础信息和我认为比较重要的内容,为没有阅读过本文的研究者搭建了一个文献本身的框架,让大家了解这篇文献大概讲了些什么内容。有需要的研究者可以深入阅读原始文献。
编辑于 2023-03-21 16:44・IP 属地四川
https://zhuanlan.zhihu.com/p/612101353