Crypto OS
Non-Technical Crypto OS第二阶段 · Blockchain Economy

第 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 章要问稳定币的那套问题,在这里原样成立:

抵押在谁手里?足额吗?能不能被拿走?如果那条源链停了,这张凭证还剩什么?

很多人持有着好几条链上的「同一种资产」,却从没问过它们各自背后抵押的是什么。它们经常不是同一个东西。

建立模型

模型一:跨链的四步

  1. A 链上发生一件事
  2. 有人证明它发生了
  3. B 链接受这个证明
  4. B 链上产生一个结果
第二步和第三步是全部的安全所在。第一步和第四步几乎从不出问题。

判断任何一个跨链方案,只需要盯住中间两步:谁在证明,以及目标链凭什么接受。

模型二:为什么不会只剩一条链

这一章的标题值得给一个正面回答。多链不是谁推动的潮流,它是三件事共同作用的结果:

原因说明
需求被价格挤出去第 7 章讲过:单笔价值低的用途在拥堵的链上不可能存在,它们必须去别处
取舍无法统一第 8 章讲过:六个维度上的最优组合因用途而异,不存在一个通吃的配置
建一条链的成本在下降第 11 章讲过:执行可以搬出去,新网络可以借用已有的安全

三条里只要有一条成立,多链就是必然。而三条同时成立。

所以问题从来不是「会不会只剩一条链」,而是「用户要不要为此付出代价」。

模型三:从「怎么做」到「想要什么」

现在把用户的处境重新描述一遍。

一个用户真正想表达的是:「我想在 B 链上拿到 100 个 X。」

而他今天实际要做的是:选一座桥、桥过去、等待、换出、确保有原生代币付手续费、再去做他本来要做的事。这中间的每一步都是实现细节,都不是他要的东西。

一个正在发生的转变是:让用户只说出想要的结果,把怎样达成交给专门的人去竞争。

今天的流程表达结果的流程
用户说什么六个具体操作一句想要的结果
谁决定怎么做用户自己一群竞争着来完成它的人
用户要持有什么每条链的原生代币只要有他打算花的那个资产
失败时卡在中间某一步要么完成,要么没发生
用户需要相信什么自己每一步都做对了这套撮合与结算机制

最后一行说明它不是免费的午餐:你把复杂度交出去了,同时也把一部分信任交出去了。 这个交换划不划算,取决于那套机制本身是怎么设计的——这正是你要学会去查的东西。

顺着这条线再往前一步,就是这一章标题的真正含义:如果用户只需要说出结果,他还需要知道自己在哪条链上吗?

先别急着回答。做完后面的 Lab 再回来。

它叫什么

多链Multi-chain

同时存在许多条链、且用户的资产和活动分散在它们之上的状态。

要记住它是结果而不是目标:没有人希望有几十条链,它是需求被价格挤出、取舍无法统一、建链成本下降三件事共同造成的。

对研究者来说,多链意味着一件很实际的事:同一个项目在不同链上的数据要分开取,合并之前先确认口径。 第 23 章会遇到这个坑。

Bridge

在两条链之间传递消息、并据此在目标链上产生资产或操作的系统。

一定要把两件事分开:桥传递的是消息,锁住的是资产。 消息决定了安全假设,锁住的资产决定了出事时的损失规模。

这也是为什么桥在这个行业里是损失金额最集中的地方:它把一大堆被锁的资产,和一个决定消息真假的权力,放在了同一个地方。 第 24 章会把它单列为一类风险。

互操作性Interoperability

不同的链之间能否安全地互相读取状态、传递消息、触发操作。

它比「转资产」大得多:转资产只是它最初级的一种用法。更完整的形态是在一条链上发起、在另一条链上执行一个操作,比如用 A 链上的抵押品去 B 链上借钱。

判断它的标准始终是那一条:目标链凭什么相信源链上发生的事。

意图Intent

用户表达「想要的结果」而不是「要执行的步骤」。

「我要在 B 链上拿到 100 个 X,最多愿意付 2 个」是一个意图。「先桥、再换、再转」是一串步骤。

它的价值不只是省事:当用户只说结果时,完成它的人之间会互相竞争,用户拿到的通常比自己操作更好。 代价是要相信这套撮合与结算机制,以及它在极端行情下还能不能工作。

链抽象Chain Abstraction

把「在哪条链上」这件事从用户的决策里拿掉。

完整的形态包括几件事:一个跨链通用的账户、不需要为每条链单独准备手续费、用户只表达结果、以及背后自动选路。

它是方向,不是已经完成的现实。而且它有一个必须诚实说出来的代价:当用户看不见链的时候,他也看不见自己承担了哪条链的风险。 这是产品便利和风险知情之间一个尚未解决的矛盾。

把整章收成一句话:

多链是结果,抽象是方向;跨链传的是消息,不是资产本身。

判断任何一个跨链方案,只问一句:谁在担保那条消息为真?

动手

动手跨一次链,把那份资产的抵押来源查清楚一座跨链桥 + 两条链的区块浏览器测试网 0 元;如果走主网,金额控制在几美元以内

这个 Lab 涉及真实资产,请务必用测试网,或者把金额控制在几美元以内。 桥是这个行业出事最集中的地方,第 24 章会专门讲。这里要的是一次完整的观察记录,不是一笔有意义的转账。

先做功课,再动手。 选一座桥,在动手之前先回答:它属于四种做法里的哪一种?谁在担保消息为真?

在它的官方文档里找答案,找不到就换一座。找不到这个答案本身就是一个结论。

跨一笔小额资产。 记下三个时间:你发起的时间、源链上交易确认的时间、目标链上到账的时间。

记下你付的全部费用,分成三块:源链手续费、桥的服务费、目标链手续费(如果有)。

在源链上找到被锁住的那笔钱。 去源链的区块浏览器,找到你的资产转进了哪个地址。

点进那个地址,看一件事:它现在一共锁着多少钱? 记下这个数字和查询时间。

在目标链上查你拿到的那个资产。 打开它的合约页面,回答:

  • 它的总供应量是多少?和源链上锁住的数量对得上吗?
  • 谁有权增发它?
  • 这份合约能不能被升级?谁有权限?

第二个问题是整个 Lab 的核心。 如果某个地址能凭空增发这个资产,那么这座桥的全部安全就等于那把钥匙的安全。

填完这张表。

问题你查到的
这座桥属于哪一种做法
谁在担保消息为真
到账用了多久
总费用及构成
源链上锁着多少资产
目标链上的总供应量
谁能增发目标链上的凭证
合约有没有升级权限、有没有时间锁

最后回答一个问题:如果这座桥明天被攻破,你手上这份资产会变成什么?

再想一想:如果你在三条链上各持有一份「同一种资产」,它们背后抵押的东西,是不是同一批?大多数人从没查过这件事。

AI Lab

AI Lab让 AI 列出三类跨链方案的信任假设,用一次真实事故去检验它Level 2 · AI Copilot

先让 AI 做一遍:

把跨链方案分成三类:依赖单一外部方担保、依赖一组外部方投票、
由目标链自己验证源链状态。

对每一类,写清楚:
1. 完整的信任假设清单:用户在使用它时,需要相信哪些事成立
2. 这些假设分别怎样被打破
3. 成本和速度上的取舍

然后挑一次真实发生过的桥被攻击事件,按步骤还原:
攻击者做了什么、哪一条信任假设被打破、损失规模、事后如何处理。
附官方事后报告链接和事件时间。不确定的写「不确定」。

然后做这个 Lab 真正的部分:拿它列的信任假设清单,去对照那次真实事故,看它漏了哪一条。

模型在这类任务上有一个很稳定的盲区:它擅长列出「设计上」的信任假设,不擅长列出「运维上」的信任假设。

它会写清楚需要多少个签名者同意,却不会问:

  1. 这些签名者的私钥分别存在哪里
  2. 签名者名单能不能被更换?谁有权更换?
  3. 合约本身能不能被升级
  4. 有没有一个紧急暂停或提款的权限,在谁手里?
  5. 被锁住的资产是不是全部集中在一个地址

历史上金额最大的几次桥事故,打破的几乎都是这五条里的某一条,而不是那个签名门槛本身。代码没错,钥匙丢了,钱就没了。 第 9 章的那次教训在这里原样重演。

把它漏掉的每一条补进清单。这份清单会成为你判断任何跨链产品的常备工具。

AI 说完之后,你必须自己验证

  • 它列出的信任假设里,有没有漏掉「消息的证明者能不能被替换」这一条
  • 它有没有把「多方签名」自动等同于「去中心化」——要看这些人是否真的独立
  • 它说的那次事故,时间、金额、攻击路径,能不能在官方事后报告里核对上
  • 它有没有把两次不同的桥事故混成一个
  • 它有没有区分「私钥被盗」和「合约逻辑被利用」——这是两类完全不同的攻击
  • 它有没有提到被锁资产的规模,这决定了事故的损失上限
  • 凡是具体数字,有没有标注来源与时间

真实案例

桥被攻破,单次损失达到这个行业的最高量级2021 至 2022 年多次

在那一段时间里,多起金额极大的攻击事件都发生在跨链桥上,单次损失可达数亿美元级别。

攻击路径主要有两类:一类是拿到了签名者的私钥,攻击者伪造了一条「源链上发生了存款」的消息,在目标链上凭空增发;另一类是合约验证逻辑存在缺陷,攻击者构造了一条能通过验证的假消息。

两类攻击的共同点是:目标链信了一条假消息。 这正是本章模型里的第二步和第三步。

源链停摆,桥上的凭证失去支撑多次发生

当一条链因为故障长时间停止出块,桥在这条链上的资产既无法验证也无法取出。

在此期间,另一条链上的那份凭证仍然可以自由交易,但它的支撑处在不确定状态,价格通常会明显偏离。

这件事把本章的核心讲得很直白:你手上的凭证,值多少取决于另一条链上那笔抵押还在不在、拿不拿得到。 第 13 章问稳定币储备的那套问题,在这里一字不差地适用。

到了新链,却动不了每天都在发生

一个用户把稳定币桥到一条新链,到账了,余额显示得清清楚楚。然后他发现自己做不了任何事:没有这条链的原生代币,付不起手续费。

这是链抽象要解决的最基础、也最常被低估的问题。它不涉及任何安全假设,纯粹是产品设计的缺失。

今天已经有多种做法在解决它:用你持有的资产直接付手续费、由应用方代付、或者在桥接时自动附带一点原生代币。这类改进对用户体验的提升,往往比性能提升更明显。

同一个名字,三条链上是三个东西今天

一种被广泛使用的资产,在不同链上可能由完全不同的方式发行:有的是官方发行方直接在那条链上发行的,有的是通过某座桥锁定后映射过去的,有的甚至经过了两次桥接。

它们在钱包里显示同一个名字、同一个图标、同一个价格。但它们的风险完全不同。

判断的唯一依据是合约地址,不是名字。 这个习惯会在你研究任何链上资产时反复用到,值得从今天开始养成。

改一个变量

如果全世界只剩一条链

跨链问题消失了,桥的风险消失了,用户再也不用切换网络。

但第 7 章那个问题会立刻回来,而且更严重:所有需求挤在同一块区块空间里,价格由最有钱的那批用途决定,所有低价值的用途被永久挡在门外。

同时,第 8 章的取舍问题也无解了:这条链在六个维度上的设定,必须同时服务储蓄、游戏和清算这三种冲突的需求。

多链的成本是真实的,但单链的成本同样真实。 这不是一个可以通过「统一」来解决的问题。

如果所有链都用同一种方式互相验证

互操作性会变得像今天的网络协议一样标准化:新链接入只需要实现一套规范,不需要为每一对链单独造一座桥。

被锁资产会从几十个分散的桥合约里集中出来,攻击面大幅收窄。

但要注意代价:标准化意味着单一失败点也被标准化了。 那套共用规范一旦出现缺陷,影响的是所有链,而不是一座桥。这是所有基础设施标准化都要面对的权衡。

如果用户界面上再也不显示链的名字

体验会好得多,这就是链抽象的目标,也是本章标题想引出的那个问题。

但有一件事必须说出来:用户看不见链,不等于风险不存在。 他的资产可能正待在一条安全假设薄弱的链上,或者刚刚经过了一座由五个人控制的桥。

这里有一个还没有答案的产品问题:怎样在不暴露复杂度的前提下,让用户知道自己承担了什么风险? 传统金融用监管和披露解决它,链上世界还没有定论。第 27 章会认真讨论这个矛盾。

如果担保跨链消息的那些实体被监管要求停止服务

链上的记录不会消失,你在目标链上那份凭证还在。

但赎回路径断了:没有人来担保「你想把它换回源链」这条消息。你手上会剩下一张暂时无法兑现的凭证。

这和第 13 章那个「某国禁止持有美元稳定币」的推演是同一个结构:链上的所有权很难被剥夺,但链与链、链与现实之间的接口一直是可以被掐断的。

带走的问题

2
为什么需要 Blockchain?

跨链这件事把这一问逼到了极致:这条消息,为什么必须由链来担保?

如果两条链之间的价值转移完全由一个中心化实体担保,那它和一次券商之间的内部转账在信任结构上没有区别——只是账记在链上。这不一定是坏事,但你要知道自己拿到的是哪一种。

4
用户是谁?

链抽象的用户是谁?是那个连「网络」是什么都不想知道的人。

这决定了产品方向:对他而言,任何一次「请切换网络」都是一次流失。 但同一个判断也带来了本章那个未解的问题——他既然不想知道,你怎么告诉他风险?

说不清用户是谁,就分不清哪些复杂度该藏、哪些必须露出来。

5
谁在支付?

跨链的成本比表面看到的多。除了桥收的服务费,还有两条链的手续费、兑换的滑点、以及等待期间的价格风险。

更隐蔽的一笔是:对敲类方案里,有人先垫钱给你,他要为这段时间的资金占用和价格波动收费。 这笔钱没有写在任何一栏上,它藏在你拿到的汇率里。第 15 章会教你怎么把它算出来。

9
谁承担风险?

这一章的答案很清楚:承担风险的是持有跨链凭证的那个人。

桥被攻破时,攻击者拿走的是被锁住的资产,而损失落在所有持有对应凭证的人头上——包括那些从没用过这座桥、只是在市场上买到了这份凭证的人。

这是本章最需要带走的一条实务提醒:你可能在完全不知情的情况下承担了某座桥的风险。 查合约地址,不要查名字。

本章自测

一句话带走

多链是结果,抽象是方向;跨链传的是消息,不是资产本身。

做完这一章的动手环节了?勾上它查看全部进度

本页目录