
DAG:有向无环图
DAG 是 Directed Acyclic Graph 的缩写,即有向无环图。“图”由顶点和连接顶点的边组成;“有向”表示边有方向;“无环”表示沿边的方向前进,不能绕回起点。它是一种通用数据结构,单凭这一名称无法判断系统采用什么共识规则。
例如,约定箭头从前置任务指向后续任务,甲完成后才能进行乙、乙完成后才能进行丙,就形成甲到乙再到丙的依赖。若丙又成为甲的前置条件,便构成环,不再符合 DAG 的定义。

顶点、边与网络节点
理解技术文档时,先确认顶点表示什么:可以是交易、区块,也可以是其他对象。边则可能表示引用或依赖,具体方向需要遵循文档定义。图中的“节点”通常指顶点,运行软件并参与通信的“网络节点”则是另一层概念,二者不能混用。

DAG 可以表达分支与汇合。两个顶点之间若没有可达路径,图结构本身未必规定它们的先后关系;这种局部先后约束称为偏序。拓扑排序可以将这些约束排列为线性顺序,但结果不一定唯一。
区块连接与交易依赖是不同层次
比特币开发者指南说明,区块通过前一区块头的哈希相连,交易则通过花费先前交易的输出建立联系。尚未被花费的输出称为 UTXO,同一输出不能在有效账本中被重复花费。区块内部还使用默克尔树汇总交易哈希。
因此,讨论“链还是 DAG”时,需要明确观察的是区块组织还是交易依赖。若把有效交易画成顶点,把输出被后续交易花费画成边,就能分析交易的依赖结构;这种观察方式并不改变区块层面的组织规则。
路由领域的 DAG 术语适用在哪里
RFC 6550 描述的是面向低功耗有损网络的 IPv6 路由协议 RPL,其内容涉及 DODAG、Rank、路由构建及环路避免。这些术语服务于网络路由,不能据此推导某种区块链的确认机制或性能。
同一个图论概念可以用于不同领域,但顶点、边与规则的含义随应用而变。阅读包含 DAG 的资料时,应先判断它讨论的是数据转发路径,还是账本记录之间的关系。
常见问题:无环是否意味着安全或高性能
无环不等于解决双重支付。两笔相互冲突的交易都可能引用同一个输出,却没有形成有向环;系统仍需通过验证与共识规则决定哪些记录能够被接受。被引用、通过验证和获得确认,也需要分别理解。
DAG 同样不自动保证更高吞吐量或更快确认。数据结构提供组织关系的方式,实际效果还受通信、验证、资源消耗和协议规则影响。判断具体方案时,需要有相应机制说明与测试证据,不能仅凭名称得出结论。