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 作为一家托管服务商,这次事件里最让我们警醒的不是漏洞本身,而是它暴露出三个本可以提前管理的动作:
资产准入不能只审发行方,铸造逻辑、赎回通道、储备可核验程度必须一并评估,缺乏独立核验手段的资产应当单独归类、单独设限。
任何依赖单一数据源的入账确认都是脆弱的,关键链上状态值得用两家独立的节点服务商交叉验证——这次的缺口,恰恰就是被"两个节点给出了不同答案"抓住的。
用户资产按地址隔离存放并定期对账,能把任何一次判断失误的爆炸半径限制在可承受范围内。
安全这件事,最终不是比谁的锁更结实,而是比谁需要相信的对象更少。
免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。