在第一期中,我们先回答了一个基础问题: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 中,交易本身就是账本结构的一部分。每一笔新交易加入网络时,需要引用并确认之前的一些交易。随着越来越多交易被提交,旧交易会被更多新交易直接或间接引用,从而逐渐获得更强的确认。
可以用一句话概括 Tangle:
Tangle 是 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 合约,而是先理解它最初为什么选择了 Tangle:IOTA 希望用一种非线性的 DAG 结构,探索更适合高频、并发、轻量交互的分布式账本形态。
下一期,我会继续梳理 IOTA 的技术演进路线:从早期 Tangle,到 Coordinator,再到 Coordicide、Stardust、IOTA 2.0 和 Rebased。重点回答一个问题:为什么 IOTA 后来不断调整自己的技术架构?