第 12 章 · 为什么未来不会只有一条链
用户以后还需要知道自己在用哪条链吗?
- 练习的能力
- Protocol LiteracySystem Thinking
- 动手
- 用一座桥把小额资产跨到另一条链,记录到账时间,并查清桥上那份资产的抵押来源。
- AI Lab
- 让 AI 列出三类跨链方案的信任假设,再对照一次真实的桥被攻击事件,看它漏了哪一条。
一个现实问题
你想用一个应用。点开,它弹出一行字:请切换到 XX 网络。
你切过去,发现余额是零——你的钱在另一条链上。于是你去找一座桥,把资产转过来,等了几分钟。转完之后再点,它又提示:手续费不足。
你的钱确实到了,但你没有这条链的原生代币,付不起手续费。于是你要再去弄一点,而弄这一点的过程通常又需要一次兑换、一次转账,可能还要一个交易所账户。
四步之后,你还没有开始用那个应用。
现在对比一件你每天都在做的事:给一个用别家邮箱服务的人发邮件。
你不需要知道对方用的是哪个服务商,不需要先「切换到对方的邮件网络」,不需要持有那个服务商的代币才能发信。你甚至不知道这些东西存在。
信息做到了,钱没做到。
问题不在于用户懒。问题在于:为什么这件事这么难?
思想实验
回到镇子。第 11 章之后,镇上已经不止一块板了。
有一块主板,负责最终裁决和保存数据。上面挂着几块处理日常事务的副板,各自有自己的书记员。另外还有两三块完全独立的板——隔壁村自己立的,规矩和主板不一样,因为他们有不同的需求。
现在你的问题很具体:你在 A 板上记着 10 枚硬币,你想在 B 板上买东西。
第一个念头是「把硬币转过去」。但请仔细想一想:硬币在哪里?
它不在任何地方。A 板上只有一行字:「某某有 10 枚硬币」。 这行字是 A 板的记录,B 板上的人从来没见过 A 板,凭什么认这行字?
所以「把硬币转过去」这件事,物理上不存在。真正能做的只有一件事:
让 B 板相信「A 板上发生了某件事」。
一旦接受了这个转述,剩下的问题就变得非常具体了:谁来告诉 B 板?B 板凭什么信他?
镇上出现了四种做法。
第一种:找一个大家都信的人当信使。 他跑一趟 A 板,回来说「这个人锁了 10 枚」,B 板就照他说的发 10 枚新硬币给你。快,便宜。前提是他不撒谎,也不被人冒充。
第二种:找一群人投票。 九个人各自去看 A 板,回来投票,五票以上算数。比一个人可靠,但如果有五个人串通,或者这九个人其实归同一个老板管,结果一样。
第三种:让 B 板自己去核对。 B 板保存一份 A 板的规则,自己验证 A 板的记录是不是真的。最可靠——不需要相信任何人。也最贵:B 板要额外做一堆工作,而且 A 板的规则变了它还得跟着改。
第四种:根本不转。 你在 A 板上把 10 枚硬币给张三,张三在 B 板上把他自己的 10 枚给你。两块板各记各的,谁也没有「跨过去」。
第四种最有意思:它把一个跨板问题,变成了一次对敲。 前提是要找到一个正好在两边都有钱、而且愿意做这笔交换的人。
你来决定
你要把一笔钱从 A 板挪到 B 板去用。
观察结果
四个选项的差别很大,但它们在同一件事上是一致的:
跨链传的从来不是资产,而是一条关于「另一条链上发生了什么」的消息。
这句话是本章的全部。它一旦被接受,很多看起来复杂的问题立刻变简单:
- 「我的资产跨链时在哪里?」——在原来那条链上锁着,你在新链上拿到的是一张凭证。
- 「这座桥安全吗?」——等于问「谁在担保那条消息为真」。
- 「为什么桥总是出事?」——因为它同时集中了两样东西:一大堆被锁住的资产,和一个决定消息真假的权力。
把四种做法按信任假设排一次:
| 做法 | 谁在担保消息为真 | 出事的方式 | 成本 |
|---|---|---|---|
| 单一信使 | 一个实体 | 他作恶、被攻破、或被冒充 | 最低 |
| 多人投票 | 一组人 | 串通,或者钥匙集中被一锅端 | 低 |
| 目标链自己验证 | 两条链的规则本身 | 规则实现有 bug,或源链规则升级导致失效 | 高 |
| 对敲 | 撮合机制与对手方 | 一方履约一方不履约,或撮合方资金不足 | 中 |
还有第二个必须记住的问题。你在 B 链上拿到的那个东西,是一张凭证,不是原来那枚币。 所以第 13 章要问稳定币的那套问题,在这里原样成立:
抵押在谁手里?足额吗?能不能被拿走?如果那条源链停了,这张凭证还剩什么?
很多人持有着好几条链上的「同一种资产」,却从没问过它们各自背后抵押的是什么。它们经常不是同一个东西。
建立模型
模型一:跨链的四步
- A 链上发生一件事
- 有人证明它发生了
- B 链接受这个证明
- B 链上产生一个结果
判断任何一个跨链方案,只需要盯住中间两步:谁在证明,以及目标链凭什么接受。
模型二:为什么不会只剩一条链
这一章的标题值得给一个正面回答。多链不是谁推动的潮流,它是三件事共同作用的结果:
| 原因 | 说明 |
|---|---|
| 需求被价格挤出去 | 第 7 章讲过:单笔价值低的用途在拥堵的链上不可能存在,它们必须去别处 |
| 取舍无法统一 | 第 8 章讲过:六个维度上的最优组合因用途而异,不存在一个通吃的配置 |
| 建一条链的成本在下降 | 第 11 章讲过:执行可以搬出去,新网络可以借用已有的安全 |
三条里只要有一条成立,多链就是必然。而三条同时成立。
所以问题从来不是「会不会只剩一条链」,而是「用户要不要为此付出代价」。
模型三:从「怎么做」到「想要什么」
现在把用户的处境重新描述一遍。
一个用户真正想表达的是:「我想在 B 链上拿到 100 个 X。」
而他今天实际要做的是:选一座桥、桥过去、等待、换出、确保有原生代币付手续费、再去做他本来要做的事。这中间的每一步都是实现细节,都不是他要的东西。
一个正在发生的转变是:让用户只说出想要的结果,把怎样达成交给专门的人去竞争。
| 今天的流程 | 表达结果的流程 | |
|---|---|---|
| 用户说什么 | 六个具体操作 | 一句想要的结果 |
| 谁决定怎么做 | 用户自己 | 一群竞争着来完成它的人 |
| 用户要持有什么 | 每条链的原生代币 | 只要有他打算花的那个资产 |
| 失败时 | 卡在中间某一步 | 要么完成,要么没发生 |
| 用户需要相信什么 | 自己每一步都做对了 | 这套撮合与结算机制 |
最后一行说明它不是免费的午餐:你把复杂度交出去了,同时也把一部分信任交出去了。 这个交换划不划算,取决于那套机制本身是怎么设计的——这正是你要学会去查的东西。
顺着这条线再往前一步,就是这一章标题的真正含义:如果用户只需要说出结果,他还需要知道自己在哪条链上吗?
先别急着回答。做完后面的 Lab 再回来。
它叫什么
同时存在许多条链、且用户的资产和活动分散在它们之上的状态。
要记住它是结果而不是目标:没有人希望有几十条链,它是需求被价格挤出、取舍无法统一、建链成本下降三件事共同造成的。
对研究者来说,多链意味着一件很实际的事:同一个项目在不同链上的数据要分开取,合并之前先确认口径。 第 23 章会遇到这个坑。
在两条链之间传递消息、并据此在目标链上产生资产或操作的系统。
一定要把两件事分开:桥传递的是消息,锁住的是资产。 消息决定了安全假设,锁住的资产决定了出事时的损失规模。
这也是为什么桥在这个行业里是损失金额最集中的地方:它把一大堆被锁的资产,和一个决定消息真假的权力,放在了同一个地方。 第 24 章会把它单列为一类风险。
不同的链之间能否安全地互相读取状态、传递消息、触发操作。
它比「转资产」大得多:转资产只是它最初级的一种用法。更完整的形态是在一条链上发起、在另一条链上执行一个操作,比如用 A 链上的抵押品去 B 链上借钱。
判断它的标准始终是那一条:目标链凭什么相信源链上发生的事。
用户表达「想要的结果」而不是「要执行的步骤」。
「我要在 B 链上拿到 100 个 X,最多愿意付 2 个」是一个意图。「先桥、再换、再转」是一串步骤。
它的价值不只是省事:当用户只说结果时,完成它的人之间会互相竞争,用户拿到的通常比自己操作更好。 代价是要相信这套撮合与结算机制,以及它在极端行情下还能不能工作。
把「在哪条链上」这件事从用户的决策里拿掉。
完整的形态包括几件事:一个跨链通用的账户、不需要为每条链单独准备手续费、用户只表达结果、以及背后自动选路。
它是方向,不是已经完成的现实。而且它有一个必须诚实说出来的代价:当用户看不见链的时候,他也看不见自己承担了哪条链的风险。 这是产品便利和风险知情之间一个尚未解决的矛盾。
把整章收成一句话:
多链是结果,抽象是方向;跨链传的是消息,不是资产本身。
判断任何一个跨链方案,只问一句:谁在担保那条消息为真?
动手
这个 Lab 涉及真实资产,请务必用测试网,或者把金额控制在几美元以内。 桥是这个行业出事最集中的地方,第 24 章会专门讲。这里要的是一次完整的观察记录,不是一笔有意义的转账。
先做功课,再动手。 选一座桥,在动手之前先回答:它属于四种做法里的哪一种?谁在担保消息为真?
在它的官方文档里找答案,找不到就换一座。找不到这个答案本身就是一个结论。
跨一笔小额资产。 记下三个时间:你发起的时间、源链上交易确认的时间、目标链上到账的时间。
记下你付的全部费用,分成三块:源链手续费、桥的服务费、目标链手续费(如果有)。
在源链上找到被锁住的那笔钱。 去源链的区块浏览器,找到你的资产转进了哪个地址。
点进那个地址,看一件事:它现在一共锁着多少钱? 记下这个数字和查询时间。
在目标链上查你拿到的那个资产。 打开它的合约页面,回答:
- 它的总供应量是多少?和源链上锁住的数量对得上吗?
- 谁有权增发它?
- 这份合约能不能被升级?谁有权限?
第二个问题是整个 Lab 的核心。 如果某个地址能凭空增发这个资产,那么这座桥的全部安全就等于那把钥匙的安全。
填完这张表。
| 问题 | 你查到的 |
|---|---|
| 这座桥属于哪一种做法 | |
| 谁在担保消息为真 | |
| 到账用了多久 | |
| 总费用及构成 | |
| 源链上锁着多少资产 | |
| 目标链上的总供应量 | |
| 谁能增发目标链上的凭证 | |
| 合约有没有升级权限、有没有时间锁 |
最后回答一个问题:如果这座桥明天被攻破,你手上这份资产会变成什么?
再想一想:如果你在三条链上各持有一份「同一种资产」,它们背后抵押的东西,是不是同一批?大多数人从没查过这件事。
AI Lab
先让 AI 做一遍:
把跨链方案分成三类:依赖单一外部方担保、依赖一组外部方投票、
由目标链自己验证源链状态。
对每一类,写清楚:
1. 完整的信任假设清单:用户在使用它时,需要相信哪些事成立
2. 这些假设分别怎样被打破
3. 成本和速度上的取舍
然后挑一次真实发生过的桥被攻击事件,按步骤还原:
攻击者做了什么、哪一条信任假设被打破、损失规模、事后如何处理。
附官方事后报告链接和事件时间。不确定的写「不确定」。然后做这个 Lab 真正的部分:拿它列的信任假设清单,去对照那次真实事故,看它漏了哪一条。
模型在这类任务上有一个很稳定的盲区:它擅长列出「设计上」的信任假设,不擅长列出「运维上」的信任假设。
它会写清楚需要多少个签名者同意,却不会问:
- 这些签名者的私钥分别存在哪里?
- 签名者名单能不能被更换?谁有权更换?
- 合约本身能不能被升级?
- 有没有一个紧急暂停或提款的权限,在谁手里?
- 被锁住的资产是不是全部集中在一个地址?
历史上金额最大的几次桥事故,打破的几乎都是这五条里的某一条,而不是那个签名门槛本身。代码没错,钥匙丢了,钱就没了。 第 9 章的那次教训在这里原样重演。
把它漏掉的每一条补进清单。这份清单会成为你判断任何跨链产品的常备工具。
AI 说完之后,你必须自己验证
- 它列出的信任假设里,有没有漏掉「消息的证明者能不能被替换」这一条
- 它有没有把「多方签名」自动等同于「去中心化」——要看这些人是否真的独立
- 它说的那次事故,时间、金额、攻击路径,能不能在官方事后报告里核对上
- 它有没有把两次不同的桥事故混成一个
- 它有没有区分「私钥被盗」和「合约逻辑被利用」——这是两类完全不同的攻击
- 它有没有提到被锁资产的规模,这决定了事故的损失上限
- 凡是具体数字,有没有标注来源与时间
真实案例
在那一段时间里,多起金额极大的攻击事件都发生在跨链桥上,单次损失可达数亿美元级别。
攻击路径主要有两类:一类是拿到了签名者的私钥,攻击者伪造了一条「源链上发生了存款」的消息,在目标链上凭空增发;另一类是合约验证逻辑存在缺陷,攻击者构造了一条能通过验证的假消息。
两类攻击的共同点是:目标链信了一条假消息。 这正是本章模型里的第二步和第三步。
当一条链因为故障长时间停止出块,桥在这条链上的资产既无法验证也无法取出。
在此期间,另一条链上的那份凭证仍然可以自由交易,但它的支撑处在不确定状态,价格通常会明显偏离。
这件事把本章的核心讲得很直白:你手上的凭证,值多少取决于另一条链上那笔抵押还在不在、拿不拿得到。 第 13 章问稳定币储备的那套问题,在这里一字不差地适用。
一个用户把稳定币桥到一条新链,到账了,余额显示得清清楚楚。然后他发现自己做不了任何事:没有这条链的原生代币,付不起手续费。
这是链抽象要解决的最基础、也最常被低估的问题。它不涉及任何安全假设,纯粹是产品设计的缺失。
今天已经有多种做法在解决它:用你持有的资产直接付手续费、由应用方代付、或者在桥接时自动附带一点原生代币。这类改进对用户体验的提升,往往比性能提升更明显。
一种被广泛使用的资产,在不同链上可能由完全不同的方式发行:有的是官方发行方直接在那条链上发行的,有的是通过某座桥锁定后映射过去的,有的甚至经过了两次桥接。
它们在钱包里显示同一个名字、同一个图标、同一个价格。但它们的风险完全不同。
判断的唯一依据是合约地址,不是名字。 这个习惯会在你研究任何链上资产时反复用到,值得从今天开始养成。
改一个变量
跨链问题消失了,桥的风险消失了,用户再也不用切换网络。
但第 7 章那个问题会立刻回来,而且更严重:所有需求挤在同一块区块空间里,价格由最有钱的那批用途决定,所有低价值的用途被永久挡在门外。
同时,第 8 章的取舍问题也无解了:这条链在六个维度上的设定,必须同时服务储蓄、游戏和清算这三种冲突的需求。
多链的成本是真实的,但单链的成本同样真实。 这不是一个可以通过「统一」来解决的问题。
互操作性会变得像今天的网络协议一样标准化:新链接入只需要实现一套规范,不需要为每一对链单独造一座桥。
被锁资产会从几十个分散的桥合约里集中出来,攻击面大幅收窄。
但要注意代价:标准化意味着单一失败点也被标准化了。 那套共用规范一旦出现缺陷,影响的是所有链,而不是一座桥。这是所有基础设施标准化都要面对的权衡。
体验会好得多,这就是链抽象的目标,也是本章标题想引出的那个问题。
但有一件事必须说出来:用户看不见链,不等于风险不存在。 他的资产可能正待在一条安全假设薄弱的链上,或者刚刚经过了一座由五个人控制的桥。
这里有一个还没有答案的产品问题:怎样在不暴露复杂度的前提下,让用户知道自己承担了什么风险? 传统金融用监管和披露解决它,链上世界还没有定论。第 27 章会认真讨论这个矛盾。
链上的记录不会消失,你在目标链上那份凭证还在。
但赎回路径断了:没有人来担保「你想把它换回源链」这条消息。你手上会剩下一张暂时无法兑现的凭证。
这和第 13 章那个「某国禁止持有美元稳定币」的推演是同一个结构:链上的所有权很难被剥夺,但链与链、链与现实之间的接口一直是可以被掐断的。
带走的问题
跨链这件事把这一问逼到了极致:这条消息,为什么必须由链来担保?
如果两条链之间的价值转移完全由一个中心化实体担保,那它和一次券商之间的内部转账在信任结构上没有区别——只是账记在链上。这不一定是坏事,但你要知道自己拿到的是哪一种。
链抽象的用户是谁?是那个连「网络」是什么都不想知道的人。
这决定了产品方向:对他而言,任何一次「请切换网络」都是一次流失。 但同一个判断也带来了本章那个未解的问题——他既然不想知道,你怎么告诉他风险?
说不清用户是谁,就分不清哪些复杂度该藏、哪些必须露出来。
跨链的成本比表面看到的多。除了桥收的服务费,还有两条链的手续费、兑换的滑点、以及等待期间的价格风险。
更隐蔽的一笔是:对敲类方案里,有人先垫钱给你,他要为这段时间的资金占用和价格波动收费。 这笔钱没有写在任何一栏上,它藏在你拿到的汇率里。第 15 章会教你怎么把它算出来。
这一章的答案很清楚:承担风险的是持有跨链凭证的那个人。
桥被攻破时,攻击者拿走的是被锁住的资产,而损失落在所有持有对应凭证的人头上——包括那些从没用过这座桥、只是在市场上买到了这份凭证的人。
这是本章最需要带走的一条实务提醒:你可能在完全不知情的情况下承担了某座桥的风险。 查合约地址,不要查名字。
本章自测
因为资产从来不存在于任何可以搬运的地方。A 链上只有一行记录:某个地址有多少余额。这行记录是 A 链的,B 链从来没见过它。
所以唯一能做的事是:让 B 链相信「A 链上发生了某件事」,然后在 B 链上据此产生一个结果。
接受这一点之后,「这座桥安全吗」就有了唯一正确的问法:谁在担保那条消息为真?
因为它把两样东西放在了同一个地方:一大堆被锁住的资产,和一个决定消息真假的权力。
前者决定了损失的上限,后者决定了攻破的方式。拿到那个权力,就能凭空在目标链上增发,然后把真实资产换走。
历史上最大的几次事故,打破的大多不是签名门槛本身,而是运维层面的东西:私钥保管、签名者名单能被替换、合约能被升级、紧急权限在个人手里。代码没错,钥匙丢了,钱一样没了。
三个原因,各自独立,而且同时成立:
- 需求被价格挤出去。 单笔价值低的用途在拥堵的链上不可能存在。
- 取舍无法统一。 六个维度上的最优组合因用途而异,不存在通吃的配置。
- 建链成本在下降。 执行可以搬出去,新网络能借用已有的安全。
所以问题不是「会不会统一」,而是「用户要不要为此付出代价」。链抽象就是在回答后半句。
通常不是。
同一个名字在不同链上可能是:官方发行方直接发行的、通过某座桥映射过去的、甚至经过两次桥接的。它们显示同样的名字、图标和价格,但背后抵押的是完全不同的东西,风险也完全不同。
唯一可靠的判断依据是合约地址。 把这个习惯养成,它会在你之后研究任何链上资产时反复救你。
这是本章的核心问题,也是整个第二阶段的收尾问题,没有标准答案。
支持隐藏的一方:用户发邮件不需要知道对方的服务商,转账也不该需要。每一次「请切换网络」都是一次流失,而复杂度本来就该由产品吸收。
反对隐藏的一方:链的选择直接决定了用户承担的风险——这条链的安全预算、这座桥的信任假设、这份凭证的抵押来源。看不见就问不出,问不出就无法选择。
检查你的回答有没有做到这三件事:
- 你有没有区分「用户不需要操作」和「用户不需要知道」?这是两件事。
- 你有没有给出一个具体的披露方案——什么时候必须告诉用户,用什么方式?
- 你有没有承认这个矛盾今天还没有被解决?
第二阶段到这里结束。回到阶段作品:把你在第 8 章做的三条链对比表拿出来,加上一行——「一个不知道自己在用哪条链的用户,在这条链上承担了什么?」
答得出这一行,这个阶段你就真的过了。
一句话带走
多链是结果,抽象是方向;跨链传的是消息,不是资产本身。