Layer 2 是一条独立的网络,它便宜地处理交易,然后定期把结果发到某条 Layer 1 上去结算;这意味着你的手续费下降,你的等待时间换了个形状,而你的资产最后待在一个不完全是你以为的那个地方。
如果只读一段
- 这个题目下几乎每篇指南都从一张架构图开始。那是错的那一端。
- 从这里开始:你付多少、你等多久、你的余额在哪条网络上。
- 同名的币在两条网络上是两份不同的余额。这是最烧钱的一部分。
- 要在网络之间搬资产就得用跨链桥,而桥有桥自己的风险。
- 从 Layer 2 提回 Layer 1,在某些设计上会牵扯到以天计的延迟。
先从手续费讲起
你想给某人转五十美元的稳定币。在一条繁忙的 Layer 1 上,这可能要花掉好几美元。在 Layer 2 上,可能只要不到一美分的零头。这就是 Layer 2 的全部商业理由,其余一切都是为它服务的工程。
这个差价从哪来?Layer 1 向你收的,是网络里每一个节点都必须永久存储并验证的那块区块空间的钱。那确实很贵,而且因为空间是固定的,价格会随需求上涨。
Layer 2 把计算放在别的地方做,然后把许多笔交易压缩成一份摘要,作为单独一批发到 Layer 1 上。你那笔交易在这一批里所占的份额,才是你在底层链上真正付的钱,再加上一点 Layer 2 自身运作的费用。把一次结算成本摊到几千笔交易上,它就变得很小了。
所以 Layer 2 的手续费有两个组成部分:你在发往 Layer 1 的那一批里的份额,以及 Layer 2 自己收的那部分。前者随 Layer 1 的拥堵而动,这就是为什么当底层链变忙时,Layer 2 的手续费也会涨,哪怕 Layer 2 自己闲着。
区块空间为什么会值钱
这里值得停一下,因为原因并不显然,而它解释了后面大部分内容。
当你在 Layer 1 上付一笔手续费时,你付的不是「一台电脑跑一次你这笔交易」的电费。你付的是:网络里每一个节点都要收到它、验证它,并且永久保留由此产生的状态。今天多加一笔交易,就等于给未来所有会跑节点的人,多加了一份小小的、永久的义务。
这就是为什么不能简单地把区块调大直到手续费消失。更大的区块意味着每个节点要存储和验证更多数据,意味着能负担得起跑节点的人更少,意味着这条网络由更少的独立参与方来检查。手续费不是一种税;它是一项确实稀缺的资源的价格,而它稀缺,恰恰是因为「让验证保持便宜」本身就是目的。
Layer 2 改变的是这道算术:它把执行搬到一个经济结构不同的地方。一台机器跑这些交易。Layer 1 存一份摘要。强加给每个节点的那份永久义务,大致按压缩比缩小,手续费也随之下降。
你到底在为什么付钱,逐项拆开
在一条 rollup 上,单次转账的成本拆成三块,而弄清哪块是哪块,就能解释手续费为什么是那样的行为。
- 你在发往 Layer 1 的数据里的那一份。通常是最大的一块。它被这一批里的所有人分摊,价格取决于 Layer 1 当时对数据收多少。
- Layer 2 自己的执行费。很小,而且通常稳定,因为 Layer 2 大多数时候有富余容量。
- 运营方的利润。总得有人跑排序器和生成证明的机器,那要花钱。有些网络对此说得很明白,有些没有。
实际结论:当有人说某条 Layer 2 便宜时,问一句「相对什么便宜」,以及「在 Layer 1 拥堵到什么程度时」。rollup 的手续费是底层链手续费的一个导出量,而导出量会动。
这些都不适用于那些自己本来就便宜的链。Solana 没有 Layer 2 也有低手续费,靠的是在 Layer 1 层面做了另一套取舍。波场又是另一条路,按质押来的资源收费而不是按笔收费。「便宜」和「Layer 2」不是同义词。
然后是等待
在 Layer 2 上确认通常很快——常常不到一秒,因为是单个排序器在给交易排序,而不是一组分布式验证者在达成一致。
费时间的是另一个方向。把资产从 Layer 2 搬回它的 Layer 1,可能牵扯到一个内建的延迟,而在一种常见设计上,这个延迟在一周左右。它的存在是为了让任何人都能在一个无效状态被最终确定之前提出挑战,那是安全机制按设计运作,不是 bug。
多数人从来没体验过它,因为第三方服务提供即时提现:他们先垫付资金,自己去等那段延迟——收一笔费用。那是一项真实的服务,也值得理解:你是在付钱请人替你承担一段时间风险。
所以对时间的诚实总结是:用起来快,离开时可能慢,而慢的那部分是可以花钱避开的。
接着:我的币在哪?
这一节能省钱。
当你在 Layer 2 上持有一个代币时,你一般并不持有那个 Layer 1 代币。你持有的是 Layer 2 上的一份表示,它由锁在 Layer 1 某个合约里的真实资产背书。这份表示之所以值钱,只是因为那把锁存在,而且桥在正常工作。
实际后果来得很快:
- 地址可以长得一模一样。在兼容 EVM 的网络上,地址格式到处都一样。同一串字符在 Layer 1 上是有效地址,在二十条 Layer 2 上也是。它本身不包含任何信息告诉你发送方指的是哪条网络。
- 交易所提币会问你选哪条网络。那个下拉框不是走形式。选错了,就是把真实资产发到一条你钱包可能够不着的网络上。
- 同一个代号,不同的代币。一条 Layer 2 上的原生稳定币,和被桥接上去的同一种稳定币,可以同时存在,代号相同而合约地址不同。它们不会自动同价,也不能互换。
- 你需要所在网络的 gas 代币。带着资产到了一条新网络却没有 gas,是一个常见又恼人的死胡同。
同样的问题不需要 Layer 2 也会出现。Avalanche 的主网络跑着三条链,同一项资产在每条链上有各自的余额。USDT 同时原生存在于好几条链上。如果你拿不准眼前是什么,地址识别工具会告诉你一个地址属于哪个家族,并解释它为什么长成这样。
跨链桥,以及它们为什么老被抢
桥把一项资产锁在一条网络上,并在另一条网络上发行一份表示。这意味着在任何时刻,某处的一个合约都持有着所有已跨过去的东西背后的真实资产。
那是一大坨静止的、公开可见的价值,而它的安全性取决于某一个具体实现。它已被证明是这个行业里最常被攻击的组件之一,有记录以来最大的几笔损失中就有好几笔是桥被攻破。原因是结构性的:复杂度,加上集中度,加上可见度。
对一个只是想搬点钱的人来说,实际含义是:
- 由网络自家团队运行、采用该网络自身安全假设的桥,和一个有自己验证者集合的第三方桥,是两回事。弄清楚你在用哪一种。
- 被桥接的资产除了自身风险之外,还带着桥的风险。一个被桥了两次的美元代币,暴露在两座桥之下。
- 如果你的目标网络上存在这项资产的原生版本,用它就能完全省掉这一层。
现在讲架构
成本和风险都摆明白之后,结构就简单了。
Layer 1 是一条自己结算自己的交易、并提供自身安全性的区块链。比特币、以太坊、Solana、Cardano 以及这个档案库里的其余网络都是 Layer 1。如果它有自己的验证者集合来决定什么是真的,它就是 Layer 1。
Layer 2 在 Layer 1 之外处理交易,并依赖它来结算、以及在不同程度上依赖它提供安全性。它没有自己独立的验证者集合来决定最终性;那是从它下面那条链继承来的。
「从……继承安全性」这句话在多数解释里承担了太多工作,而它在实践中覆盖的范围很宽。一条把全部交易数据都发到 Layer 1、并允许任何人重建并挑战其状态的 Layer 2,有充分理由用这句话。一条只发摘要、数据存在别处的,理由就弱得多。而这个标签并不区分它们。
对任何一条 Layer 2,有用的问题是:如果运营方明天消失,我还能不能只靠 Layer 1 把资产取出来?如果能,那句安全性主张就在做实事。如果不能,或者只有在别人配合的情况下才能,那你就是在信任一个运营方——这也没问题,只要你知道。
排序器,以及为什么该问的是它
今天在生产环境里跑的 Layer 2 几乎都只有一个排序器:由一个运营方接收交易、决定它们的顺序、生成区块。这就是确认能在一秒内到达的原因——根本没有别人需要去达成一致。
这同时也意味着,一方原则上可以给你的交易重新排序、拖延它,或者拒绝它。它偷不走你的资金,因为它发布的状态仍然必须是有效的,但排序是有价值的,而对排序的控制就是对某种真实事物的控制。
多数设计提供的缓解手段是一个逃生舱:一条能把交易直接提交到 Layer 1、而 Layer 2 有义务把它包含进去的通道;或者在排序器停止响应时,仅凭 Layer 1 上的数据把资产提出来。这个舱口存不存在、有没有被真的试过、用起来要多久——这三个问题,把有真实安全性主张的 Layer 2 和只有营销主张的那种区分开来。
把排序器去中心化,写在多数路线图上。请去查你正要使用的那条网络上它有没有发生,而不是查它有没有被计划。
数据可用性,不讲行话的版本
还有一个概念,因为新一代设计真正拉开差距的正是这条轴。
任何人要检查一条 Layer 2 有没有诚实行事,都需要交易数据。如果那份数据被发到了 Layer 1 上,任何人都能下载它、自己重建状态,并在有欺诈时证明欺诈。Layer 1 于是成了一块谁也撤不掉的公共告示板。
如果数据被存在别的地方——一个委员会、运营方自己的服务器——那么只要那一方肯配合,一切照常运转;而独立检查的能力,在他们不配合的那一刻就断了。状态可能是可证明有效的,却仍然无法使用,因为你重建不出自己拥有什么。
这个区别,就是 rollup 和那些长得像 rollup 的更便宜设计之间的全部差别。两者都可能是合理的选择。但它们不是同一种保证,而命名并不会让这一点变得显然。
Layer 2 有哪几类,简短版
够你读懂术语就行,不多讲。
乐观 rollup假定发上去的交易是有效的,并留出一个挑战窗口,任何人都能在窗口内证明它无效。那个窗口正是以天计的提现延迟的来源。简单、被理解得透,退出慢。
零知识 rollup发上去的是一份证明该批次有效的密码学证明。不需要挑战窗口,因为有效性是被证明的而不是被假定的,所以退出更快。生成证明的计算量很大,系统也更复杂。
Validium 之类使用有效性证明,但把交易数据留在 Layer 1 之外。更便宜,代价是多了一条假设:持有数据的那一方会把数据提供出来。那条假设就是这里的取舍。
状态通道让两方在链下直接交易,最后把一个终值结算到链上。对同样两方之间的反复支付非常好用,但不是一个通用网络。
你不需要能解释什么是有效性证明。你需要知道的是:提现延迟、数据可用性假设和对运营方的依赖,在这几种之间各不相同,而真正会影响到你的正是这三件事。
术语对照,以及提币页面上那个下拉框
这个题目下的中文材料译法混乱,而你真正要打交道的界面——交易所的提币页、钱包的网络切换、以及每一条 Layer 2 自己的文档——基本都是英文的。所以在动手之前,把词对上。
| 英文 | 本站用法 | 要留神什么 |
|---|---|---|
| rollup | rollup | 中文里有「卷叠」「汇总」等译法,本站保留原词以免和别的概念混淆 |
| sequencer | 排序器 | 决定交易顺序的那一方,目前多数是单个运营方 |
| settlement | 结算 | 指状态在 Layer 1 上被确定,不是指你收到钱 |
| finality | 最终性 | 与「确认」不是一回事,见共识对照那一页 |
| data availability | 数据可用性 | 指别人能不能拿到重建状态所需的数据 |
| challenge window | 挑战窗口 | 乐观 rollup 提现要等的那段时间 |
| escape hatch / force inclusion | 逃生舱 / 强制包含 | 排序器不理你时,绕过它的那条通道 |
| bridged / wrapped | 桥接 / 包装 | 不是原生资产,多带一层合约风险 |
| native | 原生 | 由发行方直接在这条网络上发行,少一层桥 |
| gas token | gas 代币 | 在这条网络上付手续费用的那个币 |
下拉框里那些名字到底在说什么
交易所提币页面上的「网络」下拉框,是这整篇里唯一一个你必须自己做对的动作,而它的选项命名并不统一。同一条网络在不同平台上可能有三种写法,而有些写法看起来像币名、其实是网络名。
三条读法能覆盖绝大多数情况。
选项说的是网络,不是代币。你在提 USDT,而下拉框里的选项是在问「走哪条路」。同一个 USDT 在好几条链上都存在,选项之间不是同一个东西的不同别名。
带 ERC20、BEP20、TRC20 这类后缀的,说的是代币标准加所在链。它们分别对应以太坊、BNB Chain 和波场。这类标签是最省事的一种命名,因为它同时告诉了你链和格式。
只写链名的,你得自己确认那是主网还是某条 Layer 2。这是最容易出事的一类:一条 Layer 2 的名字对不熟悉的人来说和一个项目名没有区别,而选错的后果不是慢,是资产落在一个你的钱包看不见的地方。
唯一可靠的做法是从接收端倒推:先看你的钱包或对方的交易所在充值页面上写着接受哪条网络,再回到提币页面去选同一条。不要从发送端猜。
一份实操清单
在网络之间搬任何东西之前:
- 两端都确认网络。发送方的下拉选项必须和接收方的预期一致。在你粘贴地址之前做这件事,不是之后。
- 确认目的地支持它。交易所并不接受来自每一条网络的充值,而一笔不受支持的充值往好里说也是一张工单。
- 目的地上要有 gas。动不了的资产,等于你没有的资产。
- 金额有分量、路径又是新的时候,先发一笔试探性的小额。多付一笔手续费,比另一种结局便宜。
- 进去之前就搞清楚退出路径和它的耗时,别等到想出来的时候。
- 有原生版本就优先用原生的,别用桥接版。
这些都不需要你理解密码学。它需要你知道:网络是彼此分开的地方,资产一次只住在一个地方,而在它们之间移动是要花钱、也带风险的。
一次转账,从头跟到尾
为了把这些抽象说具体,下面是你把一笔稳定币从交易所转给一位朋友的 Layer 2 地址时,按发生顺序真正会发生的事。
- 你在提币页面选了一条网络。这是最要紧的一个决定,而它只需要点一下。你要发过去的那个地址在所有这些网络上都有效;只有你朋友的钱包知道它实际能看见哪一条。
- 交易所在那条网络上发出。如果它持有的是 Layer 1 上的代币而你要的是 Layer 2,它会在内部走一次桥——这就是为什么同一家交易所提到不同 Layer 2 的速度和费用会不一样。
- 你朋友的钱包显示出一个余额。那个余额是 Layer 2 上的一份表示,由锁在 Layer 1 某合约里的资产背书。它只能在那里花,别处不行。
- 他们想把它转出去,转不了。那条网络上没有 gas 代币。极其常见,完全可以避免,也正是为什么要顺带发一点那条网络的原生资产过去。
- 之后,他们想把它弄到 Layer 1 上。这时退出路径就要紧了:要么走原生提现、承受该设计带来的那段延迟,要么用第三方服务垫资、付一笔费用。
五步,其中四步都是「一个错误假设就要花钱」的地方。没有一步需要你理解某个证明系统。
什么时候 Layer 2 是错的答案
值得写出来,因为这个话题的默认框架总假定越便宜越好。
对于大额、低频的持仓,省下的手续费无关紧要,而多出来的面——一座桥、一个排序器、一段提现延迟——是一笔成本,另一边却没有对应的收益。一年只动两次的东西,不需要一条为「不停地动」优化的网络。
当目的地不支持它的时候,而这比你预期的更常见。交易所只支持一部分网络的充值,而且那和它支持提现的那部分网络往往不是同一组。
当一条便宜的 Layer 1 就能办事的时候,很多转账都属于这一类。有好几条底层链在完全没有 Layer 2 的情况下就手续费很低,靠的是在 Layer 1 上做了不同的取舍。因为 rollup 是「时下的答案」就伸手去够,这不构成理由。
当你回答不上排序器那个问题的时候。如果你不知道自己即将把价值放上去的那条网络上有没有逃生舱,那这本身就是一个先去弄清楚、而不是事后再说的理由。
主要参考资料
- Ethereum.org 的乐观式 rollup 文档:批处理、挑战期与退出。
- Ethereum.org 的零知识 rollup 文档:有效性证明与数据可用性。
- Ethereum.org 的跨链桥概览:桥的模型与安全取舍。
这篇指南描述的是机制,不是在报数字,所以它不引用任何带日期的数值。手续费水平、提现窗口以及被支持的网络清单都会变;具体参数请查那条 Layer 2 自己的文档,而它今天到底支持什么,请查你所用交易所的提币页面。