IOTA 学习笔记(二):DAG 与 Tangle 到底是什么?

IOTA 学习笔记(二):DAG 与 Tangle 到底是什么? 在第一期中我们先回答了一个基础问题IOTA 是什么简单来说IOTA 最早的独特性来自 Tangle。它没有采用传统区块链的“区块 链”结构而是使用一种基于 DAG 的账本结构来组织交易。也正因为如此IOTA 早期经常被介绍为一种“不是传统区块链的分布式账本”。但是DAG 和 Tangle 到底是什么为什么它们可以被用来组织交易它们和传统区块链有什么本质区别这一期就围绕这几个问题展开。1. 先从 DAG 说起DAG 的全称是 Directed Acyclic Graph中文通常翻译为“有向无环图”。这个名字看起来有点抽象但可以拆成三个部分理解。第一Graph图。图是一种由“节点”和“边”组成的数据结构。节点可以表示一个对象边可以表示对象之间的关系。例如在社交网络中人可以是节点人与人之间的关注关系可以是边在交易账本中交易可以是节点交易之间的引用关系可以是边。第二Directed有向。有向表示边是有方向的。也就是说节点 A 指向节点 B和节点 B 指向节点 A不是同一件事。在账本系统中方向通常可以表示“后来的交易引用之前的交易”。第三Acyclic无环。无环表示沿着边的方向走不会绕一圈又回到原来的节点。这个特点很重要因为账本需要表达历史顺序和依赖关系。如果交易之间可以随意形成环就很难判断谁先谁后也很难维护清晰的确认关系。所以DAG 可以简单理解为DAG 是一种由节点和有向边组成、并且不会形成循环的图结构。在 IOTA 的早期 Tangle 语境中交易可以被看作图中的节点交易对其他交易的引用可以被看作有向边。新交易引用旧交易整个账本就会逐渐形成一张不断扩展的有向无环图。2. 区块链是一条链DAG 是一张图为了理解 DAG 的特点可以先和传统区块链做一个对比。传统区块链的结构大致是这样的Block 1 → Block 2 → Block 3 → Block 4每个区块包含一批交易并且引用前一个区块。这样一来区块之间形成了明确的线性顺序。账本历史像一条链一样向前延伸。这种结构的好处是清晰、稳定、容易验证。每个区块都有明确位置每个交易最终属于某个区块整个系统围绕“最长链”或“最终确认链”形成共识。但是这种结构也意味着交易通常需要等待被打包进区块。系统吞吐量、交易确认速度和手续费机制都可能受到区块大小、出块间隔和共识机制的影响。DAG 的结构则不一样。它不是一条单线而是一张图Tx2 ↗ ↘ Tx1 Tx5 ↘ ↗ Tx3 → Tx4在这个结构中交易之间不是简单排成一行而是可以形成多条并行路径。新交易可以引用若干旧交易不同交易也可以在相近时间内并行加入账本。因此传统区块链更像“按顺序排队”DAG 更像“多条路径同时生长”。这也是 IOTA 早期选择 DAG 的重要原因它希望通过图结构来支持更高并发的交易组织方式。3. Tangle 是什么理解了 DAG就可以进一步理解 Tangle。Tangle 是 IOTA 早期提出的基于 DAG 的账本结构。它不是一条由区块组成的链而是一张由交易组成的图。在 Tangle 中交易本身就是账本结构的一部分。每一笔新交易加入网络时需要引用并确认之前的一些交易。随着越来越多交易被提交旧交易会被更多新交易直接或间接引用从而逐渐获得更强的确认。可以用一句话概括 TangleTangle 是 IOTA 中由交易相互引用形成的 DAG 账本结构。这个设计和传统区块链有一个非常明显的区别。在传统区块链中用户提交交易矿工或验证者负责把交易打包进区块。交易确认主要依赖区块生产者。而在 Tangle 中发送新交易本身也参与了确认旧交易。也就是说交易提交者不只是“使用账本的人”同时也参与了账本维护过程。这就是 Tangle 设计中很有代表性的思想系统中的交易越多参与确认的行为也越多。4. 什么是 Tip理解 Tangle 时经常会遇到一个词Tip。Tip 可以简单理解为“还没有被后续交易引用的交易”。在 Tangle 中新交易会引用旧交易。被引用的旧交易就不再是最前端的未确认端点而那些暂时还没有被后续交易引用的交易就处在图的前沿位置。它们就被称为 Tips。可以看下面这个简化例子Tx1 → Tx2 → Tx4 ↘ ↗ Tx3如果此时 Tx4 还没有被任何新交易引用那么 Tx4 就可能是一个 Tip。再比如Tx4 ↗ Tx1 → Tx2 Tx3 → Tx5如果 Tx4 和 Tx5 都还没有被后续交易引用那么 Tx4 和 Tx5 都可以被看作 Tips。Tip 的存在说明 Tangle 不是线性增长的。它的前沿可能同时存在多个未被引用的交易端点。新交易加入时需要从这些 Tips 中选择若干交易进行引用。因此Tip 是理解 Tangle 结构的关键概念之一。5. 什么是 Tip Selection既然新交易需要引用之前的交易那么问题就来了它应该引用哪些交易这就涉及 Tip Selection也就是“Tip 选择”。Tip Selection 可以简单理解为当一笔新交易加入 Tangle 时系统需要选择若干个合适的 Tip 作为它要引用和确认的对象。这个过程非常重要。因为如果 Tip 选择方式不合理可能会影响账本的确认效率、安全性和抗攻击能力。直观来说一个好的 Tip Selection 机制应该避免几个问题。第一不能总是引用很老的交易。如果新交易总是引用很早之前的交易那么图的前沿可能会变得混乱大量新 Tip 得不到及时确认。第二不能随意引用冲突交易。如果两笔交易在账本状态上互相冲突例如试图花费同一笔资产那么系统需要通过一定规则避免错误确认。第三不能让攻击者轻易操控确认路径。如果攻击者可以通过构造大量交易影响 Tip 选择就可能制造寄生链、双花或其他攻击风险。所以Tip Selection 不是一个简单的“随机选两个交易”的问题而是 Tangle 安全性和确认效率中的核心环节。在学习 IOTA 的入门阶段可以先记住这一点Tip Selection 决定了新交易如何连接到 Tangle也决定了 Tangle 如何继续生长。6. Tangle 中的“确认”怎么理解在传统区块链中确认通常和区块深度有关。例如一笔交易被打包进某个区块后后面又接上了多个新区块那么这笔交易就越来越难被回滚。在 Tangle 中确认的直观理解有所不同。因为它不是一条链而是一张图。交易的可信度来自后续交易对它的直接或间接引用。假设 Tx1 被 Tx2 和 Tx3 引用Tx2 又被 Tx4 引用Tx3 又被 Tx5 引用那么 Tx1 就不仅得到了直接确认也得到了间接确认。可以表示为Tx4 ↗ Tx1 → Tx2 Tx1 → Tx3 → Tx5这里 Tx4 和 Tx5 虽然没有直接引用 Tx1但它们通过 Tx2、Tx3 间接支持了 Tx1 所在的历史路径。因此在 Tangle 中确认不是简单地看“后面有多少个区块”而是看后续交易如何在图结构中不断累积支持。可以这样理解在区块链中确认来自后续区块的累积在 Tangle 中确认来自后续交易在图结构中的直接或间接引用。这个区别非常关键。7. 为什么 Tangle 适合高并发设想IOTA 早期强调 Tangle 的一个重要原因是它在设计目标上更适合并发交易。传统区块链中交易通常需要等待区块打包。虽然底层网络中可以同时传播很多交易但最终进入账本时仍然会被组织进一个个区块并形成线性顺序。Tangle 则允许多个交易在相近时间内加入图结构。不同交易可以引用不同的 Tips从而让账本前沿呈现多点生长状态。这带来了一个很自然的想法如果交易本身参与确认那么交易数量增加时确认行为也会随之增加。从这个角度看Tangle 试图把“更多交易”从单纯的系统压力转化为推动账本增长和确认的力量。当然这并不意味着 DAG 结构天然解决所有扩展性问题。真实系统还要面对网络延迟、冲突交易、垃圾交易、防攻击机制、最终确认规则等复杂问题。但是从账本结构设计上看Tangle 确实提供了一种不同于传统区块链的并行组织思路。8. Tangle 和区块链的核心差异可以从几个角度总结 Tangle 和传统区块链的区别。第一账本结构不同。传统区块链是线性链式结构Tangle 是图结构。第二基本单位不同。传统区块链通常以区块作为账本增长单位交易被包含在区块中。Tangle 中交易本身就是图中的节点。第三确认方式不同。传统区块链中交易确认依赖后续区块。Tangle 中交易确认依赖后续交易的直接或间接引用。第四参与角色不同。传统区块链中用户和区块生产者通常是分开的。Tangle 早期设计中发送交易的行为本身也参与确认过程。第五并发思路不同。传统区块链倾向于把交易排序进区块Tangle 则让交易在图结构中多点生长。可以简单概括为传统区块链交易 → 区块 → 链 IOTA Tangle交易 → 引用交易 → 图这句话很适合理解两者的根本区别。9. 学习 Tangle 时容易产生的误解学习 IOTA 时有几个误解需要避免。第一个误解是DAG 一定比区块链更快。这个说法太简单。DAG 结构确实提供了并行组织交易的可能性但系统性能还取决于共识机制、网络传播、节点资源、冲突处理和实现细节。不能只因为用了 DAG就直接断言性能一定更好。第二个误解是Tangle 没有区块所以就没有共识问题。这是错误的。只要是分布式账本就需要解决一致性、冲突处理和安全确认问题。Tangle 只是改变了账本结构并没有消除共识问题。第三个误解是IOTA 现在仍然只能用早期 Tangle 来理解。这也不准确。Tangle 是 IOTA 历史中非常重要的技术概念但 IOTA 的当前架构已经发生了明显演进。今天学习 IOTA还需要继续理解 Rebased、MoveVM、对象模型、验证者网络和智能合约开发。第四个误解是无手续费就等于没有成本。早期 IOTA 强调无手续费但系统仍然需要防止垃圾交易和资源滥用。因此即使没有传统意义上的交易手续费也不代表交易完全没有资源约束。10. 小结这一期主要解释了 DAG 和 Tangle。DAG 是有向无环图它不是一条线而是一张图。IOTA 早期的 Tangle 就是基于 DAG 的账本结构。在 Tangle 中交易本身是图中的节点新交易需要引用并确认旧交易。那些还没有被后续交易引用的交易被称为 Tips而新交易选择哪些 Tips 进行引用的过程就是 Tip Selection。Tangle 与传统区块链最大的区别在于传统区块链把交易打包进区块再把区块连接成链Tangle 则让交易直接组成图通过交易之间的引用关系形成确认路径。因此理解 IOTA 的第一步不是急着安装 CLI也不是马上写 Move 合约而是先理解它最初为什么选择了 TangleIOTA 希望用一种非线性的 DAG 结构探索更适合高频、并发、轻量交互的分布式账本形态。下一期我会继续梳理 IOTA 的技术演进路线从早期 Tangle到 Coordinator再到 Coordicide、Stardust、IOTA 2.0 和 Rebased。重点回答一个问题为什么 IOTA 后来不断调整自己的技术架构