mt logoMyToken
ETH Gas
EN

Liquid Network 的4000枚比特币是怎么凭空走出金库的?

Favoritecollect
Shareshare

9 月 6 日,约 4000 枚比特币(按当时价格约 3.2 亿美元)离开了 Liquid Network 的钱包。这是 2026 年至今金额最大的一起加密资产被盗事件。

但这起案子最值得琢磨的地方,不是金额。

没有一把私钥被偷,没有一台 HSM(硬件安全模块)被攻破,没有任何人被钓鱼,也没有内鬼。管理这个金库的 15 家机构,每一家的钥匙都完好无损地待在自己的保险柜里,而且每一次签名都是它们主动、自愿、按规则完成的。

钱就这么走了出去。

要理解这是怎么发生的,我们得先花几分钟搞懂这个金库是怎么设计的。

一、一个由 15 家机构共管的比特币金库

比特币主网有个众所周知的问题:慢,而且贵。一笔交易平均要等十分钟才进区块,手续费还随挖矿难度波动。这对一个想做大额频繁转账的交易所或量化团队来说不太够用。

Liquid Network 是 Blockstream 给出的一个解法。它是一条"侧链"——你可以把它想成比特币主网旁边的一条快车道。

用法很朴素:你把真的比特币存进一个共管金库,金库给你开一张等额的存单,这张存单叫 L-BTC,可以在这条快车道上一分钟一笔地快速流转。想拿回真比特币时,你把存单交回去注销,金库从里面取等额的真币还给你。前一个动作叫 peg-in(锚入),后一个叫 peg-out(锚出)。理论上,链上流通的 L-BTC 总量,永远等于金库里躺着的真比特币数量——这就是所谓的 1:1 锚定。

关键在于这个金库由谁管。Liquid 的答案是:不交给任何一家,而是交给 15 家已知机构组成的"联邦",成员包括多家交易所和基础设施服务商。这 15 个节点各持一把密钥,存放在自己的专用硬件安全模块(HSM)里,任何一次开金库的操作,都需要其中至少 11 把钥匙同时签名,也即 11/15 多签。

同时,这 15 个节点也负责轮流出块、相互验证。也就是说,它们既是金库的保管员,也是这条链的记账员。

这个设计的用意很清楚:单点作恶行不通,你得同时说服 11 家互不相干的机构才能偷到钱。从"防坏人"的角度,它确实做得不错。

二、一个保密的账本,和"不打开信封的验钞"

Liquid 还有一个特色:它的交易金额是对外保密的。

在比特币主网上,任何人都能看到每笔转账的具体数额。对机构来说这很难受——你的大额调仓会被全世界围观。Liquid 用一项叫"机密交易"(Confidential Transactions)的技术解决了这件事:金额被加密隐藏,链上只留下一个数学承诺,外人看不到具体数字。

但这立刻带来一个新麻烦。如果金额是看不见的,节点怎么知道这笔交易没有作弊?比如凭空写个负数,或者把数字撑到溢出?

解决办法叫"范围证明"(range proof)。打个比方:把金额装进一个不透明的信封,同时附上一份数学证明,这份证明能让任何人在不打开信封的前提下,确信里面的数字落在合法范围内。节点逐一检查这些证明,确认每笔交易的收支都对得上,但始终不知道具体金额是多少。

这套机制本身是可靠的密码学。问题出在它的性能优化上。

三、漏洞:一台记性太好、但记错了重点的验钞机

验证范围证明的计算开销很大。为了不让节点被拖垮,Elements(Liquid 使用的开源节点软件,是比特币核心代码的一个分支)做了一件所有工程师都会做的事:加缓存。

验过一次的证明,把结果记下来,下次遇到同一个就直接放行,不再重算。

现在问题来了:怎么判断"遇到的是同一个"?

Elements 的做法是用两样东西拼出一个索引键:证明本身的字节,加上那个被加密的金额承诺。

漏掉了什么?漏掉了这是哪种资产,以及这笔钱要付给谁(输出脚本)。

用收银台打个比方。柜台上有一台验钞机,它验过的钞票会被记下编号,下次同一编号直接通过。但它记编号时,只记了钞票的水印花纹和面额,没记这张钞票是哪国货币、也没记它是要交给哪个收款人。于是同一份"验过了"的结论,就可能被搬到一个完全不该适用的场景里去用。

攻击者正是这么做的,而且很有耐心。据研究者复盘,在动手之前的约 14 个小时里,他向链上陆续送入了 68 个完全相同的范围证明——一次次把这些"已验证"的结论喂进各个节点的缓存。等到时机成熟,他再把同一份证明放到一个本该被拒绝的上下文里提交。

节点查了一下缓存,发现"这个我验过,没问题",于是放行。

于是,3,996 枚没有任何真比特币支撑的 L-BTC,被凭空记进了账本。

由于金额本来就被机密交易隐藏着,链上没有任何观察者能看见多出来的这笔钱。

四、那 35 分钟:每一步都合规

北京时间 9 月 6 日 23:53(15:53:10 UTC),Liquid 区块 4,050,336 打包了这笔伪造交易。

接下来发生的每一步,都完全符合规则,这是整件事最令人不安的部分。

这批凭空铸造的 L-BTC 被转入了 SideSwap(一家提供 peg-out 服务的第三方平台)的钱包,混进去之后,它们和任何一枚正常的 L-BTC 再无区别。在账本眼里,它们就是真钱。

十几分钟后,一笔 4,000 L-BTC 的 peg-out 请求提交上来:注销存单,取走真比特币。

15 个节点开始履行职责,它们的硬件安全模块会做两项校验:提币地址是否在白名单内,以及销毁的 L-BTC 数量是否与申请的比特币数量相符。两项都对得上。

它不会、也没有能力追问第三个问题:这些 L-BTC 最初是怎么来的?

11 把钥匙如常签名。约 35 分钟后,比特币主网确认了那笔交易,3,996 枚真比特币离开了联邦钱包。

值得一提的是,Liquid 设计过一道紧急保险:如果正常签名路径失效,需要用 2/3 的备份密钥并等待 56 天才能动用资金。这道保险从未被触发——因为攻击者根本没去撞后门,他走的是正门,而正门为他打开了。

多签门槛管的是"谁能签",它无法回答"签的这个东西对不对"。 当伪造发生在比签名更靠下的那一层——节点软件对什么是真钱的判断——门槛再高,也只是把一笔错误的支出签得更整齐。

五、它是怎么被发现的

讽刺的是,这个漏洞会在不同节点之间造成分歧:同一个区块,有的节点接受,有的节点拒绝——这取决于各自的缓存里之前存了什么。

比特币核心开发者 Antoine Poinsot 当时就公开指出,那个关键区块"被 mempool 拒绝、但被 Blockstream 接受"。

而 mempool.space 本身就是联邦成员之一。它的实时审计程序捕捉到了一笔 -4,019 BTC 的异常提取,而 Liquid 官方面板当时并未同步反映这笔损失——两套监控系统给出了不同的世界。

随后的数字很刺眼:链上流通着 4,205 枚 L-BTC,而联邦钱包里的真比特币,在几笔后续提现处理完之后,只剩下 197 枚,支撑率不足 5%。

这里也藏着机密交易的另一面:隐私的代价是可核验性。金额被隐藏,外部就没有任何人能实时比对"账本上的存单总量"和"金库里的真币余额"。1:1 从一个人人可验的事实,退化成一句需要被相信的声明。等到它被证伪时,缺口已经 3.2 亿美元了。

六、比漏洞更刺眼的,是那个补丁

如果故事到这里结束,它只是一起高水平的密码学攻击。但还有后半段。

那个缓存缺陷的修复代码,8 月 3 日就已经提交到代码库,标题写得明明白白:把范围证明缓存绑定到资产和输出脚本。9 月 2 日,它被并入主分支。

而事发时,联邦节点运行的是 23.3.3 版本——4 月 13 日发布的版本,不含这个修复。9 月 6 日案发后不到三小时,这个补丁被紧急合入发布分支。

需要说明的是,官方并未正式确认这次事件就是这处缺陷所致,上述对应关系来自外部研究者的复盘。但时间线本身已经足够说明一个更普遍的问题:漏洞被修好,和修好的代码真正跑在生产环境上,是两件事,中间可以隔着五个月。

Casa 的安全负责人 Jameson Lopp 还指出了另一件事:联邦节点的代码库公开记录显示,上一次提交是 2024 年 4 月——距事发超过两年。

3.2 亿美元的资产,托付给了一套两年没被认真维护的软件。这不是密码学的失败,是运维的失败。

七、"我们是白帽",和 Blockstream 的回答

当天晚上,收款地址向链上发出一条 OP_RETURN 消息:

we are whitehats. contact us on chain.(我们是白帽,链上联系我们。)

谈判随之开始。9 月 7 日,对方归还了 3,400 枚比特币(约 2.72 亿美元,占 85%),自留 598.5 枚(约 4,700 万美元)。

起初双方是私下沟通的,Blockstream 用加密并 PGP 签名的消息回复。但 9 月 8 日至 9 日,对方把喊话搬到了公开的链上明文,语气也变了:

指责对方失职——"你们只拿出 150 万美元(甚至可能是 0)去保护 50 亿美元的资产,这是对安全的公然漠视"

提出条件——要求 Blockstream 从自有资金中另付相当于 10% 的漏洞赏金,作为归还剩余部分的前提

以及威胁——如果拒绝,就让"你的所有持有人为你的不负责和吝啬承担 15% 的损失"

到这一步,"白帽"这个自称已经很难成立了。Ledger 首席技术官 Charles Guillemet 的评价相当直接:真正的白帽会在动用抵押资产之前披露漏洞,而不是之后;先把 95% 的储备搬空再谈条件,"更像勒索,而不像安全研究"。

对照历史也能看出差别。Nomad、SafeMoon、Team Finance 等案子里都出现过"归还大部分、留一笔赏金"的结局,但那些通常有一个明确的赏金安排,比例多在 10% 左右。这次的特殊之处是:15% 是单方面留下的,"价格"由谁定,从头到尾没有答案。

然后,Blockstream 公开拒绝了。

在一份公开声明中,Blockstream 表示不会为归还被盗资金支付赎金,并把话说得没有余地:未经授权取走资产、拒绝归还,是犯罪,不是负责任的漏洞披露,也不是白帽行为——"这是盗窃"。

声明承认此前确实本着善意进行了沟通,目的是争取用户资金回归、保护更广泛的比特币社区,但强调那不应被误读为接受对方的行为或所提条件。它同时明确拒绝开一个先例:为比特币社区福祉开发的开源软件,其开发者不应因此被迫支付一笔"远超其经济参与程度"的赎金。

针对"让持有人承担 15% 损失"这句威胁,声明的回应是一句立场宣言——比特币是硬通货,不能无成本地铸造,比特币不会为了支付赎金而对用户减记。

最后它给了两条路:现在归还,事情仍可以回到白帽的标准来处理;如果不还,Blockstream 将动用一切合法手段,与执法机构、交易所、服务提供商、链上取证专家等各方合作,追踪、追回资产并锁定责任人。并且提醒了一件加密世界的常识:比特币的设计本身就是透明的,"交易不会消失,它们留下的证据也不会"。

为什么这件事比那 4,700 万美元更重要。 过去几年,"先拿走、再谈条件"逐渐固化成一套半标准化的剧本:攻击者搬空资金,自称白帽,留下一笔自定的"赏金",项目方为了尽快止损而接受。这套剧本的实质是,一次安全事故的定价权,落在了攻击者手里——归还比例、留存额度、谈判节奏,全由对方决定。

Blockstream 这次拒绝的,与其说是那笔钱,不如说是这套剧本。代价可能是 4,700 万美元追不回来;换来的是不为下一次攻击背书定价。这个判断对不对,要看后续追查有没有结果。但它至少把一个长期被含糊处理的问题摊开了:被攻击方愿意善意沟通,和被攻击方接受条件,是两件完全不同的事。

还有一个细节值得留意。由于事发前三天恰好有一款被评价为"首个能独立发现未知漏洞"的 AI 模型发布,社群里出现过把两件事联系起来的猜测——这至今没有任何证据支持,当谈资就好。但有意思的是,Blockstream 的声明里也主动提到了 AI:"AI 的进步让世界变得不同,而比特币社区已经全力应对这一威胁。"

官方没有说这次攻击用了 AI。但一家刚刚损失 3.2 亿美元的公司,在事故声明里把 AI 写进威胁背景,本身就说明了行业的判断:发现深层漏洞的成本正在下降,而修补与部署的速度并没有同步变快。这次事件里那个躺了五个月的补丁,就是这句话最具体的注脚。

八、现在的状况

Liquid 已于 9 月 10 日 12:26 UTC 恢复出块,但暂不打包用户交易;peg-in 与 peg-out 仍处于暂停状态,官方给出了三阶段的恢复路径——先恢复出块,再重放已验证交易,最后在网络状态确认无误后重开锚定操作。

3,400 枚比特币归还后,L-BTC 的支撑率回到约 86%。Blockstream 联合创始人 Adam Back 公开表示,1:1 的 LBTC 锚定会被兜住,并劝持有人不要在场外恐慌抛售。

随着 Blockstream 公开拒付,剩下那 598.5 枚比特币已经不再是一个谈判问题,而变成了一个追查问题——链上取证、交易所协查、执法介入,周期以月甚至年计,结果高度不确定。

这也让"1:1 会被兜住"这句承诺的含义变得清楚:缺口由 Blockstream 与联邦自己的资产负债表承担,而不是让持币人按比例减记。这正是声明里"比特币不会为了支付赎金而对用户减记"那句话的落点。对 L-BTC 持有者而言,这意味着眼下是一场为期数日到数周的流动性冻结,而不是本金损失——前提是这个兜底承诺被完整执行。这句"前提"该由持有人自己去评估,而不是替他们乐观。

九、机构的昂贵学费

这起事件不需要你懂密码学也能读出几个结论。

第一,"包装资产"不等于原资产

你手里的 L-BTC、各种跨链 BTC、各种封装代币,都不是原生资产本身,而是一张存单。它的安全性等于三层里最弱的一层:发行方是否可信、节点软件实现有没有 bug、以及出入金通道能否分辨真假。这次出问题的是第二层,而承接了坏钱的是第三层——SideSwap 全程没有过错,它只是无从分辨。多数人在评估风险时,只看了第一层。

第二,看得见比看不见重要

隐私是真实需求,但当储备的可核验性被牺牲掉,你就失去了在事故变大之前发现它的能力。这次缺口能被抓住,靠的是不同节点意外给出了不同答案,而不是任何一套设计好的核验机制。

第三,你的风险包含别人的运维节奏

一个补丁躺了五个月没上线、一套代码两年没人动——这些不写在任何白皮书里,但它决定了你的钱有多安全。评估一个协议时,除了读它的设计文档,也值得看一眼它的代码提交记录和版本发布纪律。

第四,多签是必要的,但它防的是坏人,不是坏代码

11/15 在密钥被盗的场景下是一道好防线;在软件把假钱认成真钱的场景下,它毫无作用,甚至会让这笔错误的支出显得格外规范、格外合法。

第五,"白帽"是一种行为标准,不是一个可以自称的身份

区别不在于最后还了多少,而在于顺序:先披露、再协作,还是先搬空、再开价。这次 Blockstream 宁可冒着 4,700 万美元收不回来的风险也要公开拒付,给行业留下的正是这个界线。它未必能追回钱,但它至少让下一个攻击者无法确定"自称白帽"还能不能换到一张免罪券。

Cactus Custody 作为一家托管服务商,这次事件里最让我们警醒的不是漏洞本身,而是它暴露出三个本可以提前管理的动作:

  • 资产准入不能只审发行方,铸造逻辑、赎回通道、储备可核验程度必须一并评估,缺乏独立核验手段的资产应当单独归类、单独设限。
  • 任何依赖单一数据源的入账确认都是脆弱的,关键链上状态值得用两家独立的节点服务商交叉验证——这次的缺口,恰恰就是被"两个节点给出了不同答案"抓住的。
  • 用户资产按地址隔离存放并定期对账,能把任何一次判断失误的爆炸半径限制在可承受范围内。

安全这件事,最终不是比谁的锁更结实,而是比谁需要相信的对象更少。

Disclaimer: This article is copyrighted by the original author and does not represent MyToken’s views and positions. If you have any questions regarding content or copyright, please contact us.(www.mytokencap.com)contact
More exciting content is available on
X(https://x.com/MyTokencap)
or join the community to learn more:MyToken-English Telegram Group
https://t.me/mytokenGroup