DAG(Directed Acyclic Graph),中文译作“有向无环图”,作为一种新的底层账本结构被重新提出来。“有向”指有方向,“无回”指没有回路。在第一篇文章里我们通过讨论区块链提炼了两个关键词:账本结构和共识机制。这篇文章将着重从结构上介绍一下DAG和区块链的关系。在后续的文章里将依次介绍与这种结构相对应的共识机制。
1 DAG长什么样
我都非常熟悉Merkle树的这种数据结构,比特币每个区块的内部就是用Merkle树来记录交易信息的,见图片1。
图片1 区块结构
来源:邹均 张海宁 唐屹 李磊,《区块链技术指南》,机械工业出版社
可以看出来,Merkle树属于一种有向树结构,树里的每个顶点只能指向一个之前的顶点,整个数据有个明显流动方向。DAG结构则可以允许每个顶点指向多个之前的顶点,整个数据流也有一个明显的方向。另一种数据结构为有向图,与DAG不同的是有向图允许有数据回流,整个结构的数据流不是很明显。三者之间的区别见图片2。
图片2 有向树、DAG图和有向图示