9 月 6 日,约 4000 枚比特币从 Liquid Network 的钱包转出,按当时价格约为 3.2 亿美元。这是 2026 年以来金额最大的一起加密资产失窃事件。

这起事件最反常的地方,不在金额,而在路径。没有私钥被盗,没有硬件安全模块(HSM)被攻破,也没有钓鱼或内鬼迹象。负责保管资产的 15 家机构,各自持有的密钥都还在原处;每一次签名也都是按既定规则完成。资金却还是离开了金库。
15 家机构共管的比特币金库
Liquid Network 是 Blockstream 推出的比特币侧链方案,目标是处理比特币主网转账慢、手续费波动较大的问题。用户把真实比特币存入联邦金库后,会在 Liquid 链上获得等额的 L-BTC。L-BTC 可以在这条链上流转;需要赎回真实比特币时,再把 L-BTC 注销,从金库中提取等量 BTC。
前者叫 peg-in,后者叫 peg-out。理论上,链上流通的 L-BTC 总量,应始终等于金库里持有的真实比特币数量,也就是所谓的 1:1 锚定。
这个金库并不由单一机构控制,而是由 15 家已知机构组成的联邦共同管理,其中包括多家交易所和基础设施服务商。15 个节点各自持有一把密钥,并保存在专用 HSM 中。任何一次打开金库的操作,都需要至少 11 把钥匙共同签名,也就是 11/15 多签。
这 15 个节点还承担轮流出块和相互验证的职责。换句话说,它们既管理储备,也维护账本。这个设计本来是为了避免单点作恶:如果想直接偷走资产,理论上必须同时说服 11 家互不相干的机构。
机密交易怎样隐藏金额
Liquid 的另一项重要设计,是对交易金额保密。比特币主网上,任何人都能直接看到每笔转账的具体金额;对机构用户来说,大额调仓会完全暴露。Liquid 使用机密交易(Confidential Transactions)来隐藏金额,链上只保留一个数学承诺,外部看不到具体数字。
问题也随之出现:如果金额不可见,节点如何确认这笔交易没有作弊,比如写入非法数值或制造溢出?Liquid 的做法是使用范围证明(range proof)。
这个机制的作用,是让节点在不知道具体金额的前提下,确认该金额落在合法范围内。节点能检查交易收支是否成立,却始终不知道每一笔转账到底是多少。问题不在密码学本身,而在后续的软件实现。
漏洞出在缓存:证明验过,但上下文不对
Liquid 使用的开源节点软件是 Elements,它是比特币核心代码的一个分支。范围证明验证开销较大,为了降低计算负担,Elements 对已验证结果做了缓存:某个证明一旦被验过,后续再次遇到时,就可以直接通过,不必重复计算。
问题在于,Elements 判断「是不是同一个证明」时,索引键只使用了两部分内容:证明本身的字节,以及被加密的金额承诺。它没有把资产类型,也没有把输出脚本纳入这个索引。

这意味着,同一份已经通过验证的结论,可能被搬到一个本不适用的交易上下文中重复使用。根据研究者复盘,攻击者在正式出手前约 14 个小时,陆续向链上送入了 68 个完全相同的范围证明,把这些「已验证」结果反复喂进各个节点的缓存。等到时机成熟,再把同一份证明放进一个本应被拒绝的场景中提交。
节点查询缓存后,认为这份证明已经通过验证,于是予以放行。结果是,3,996 枚没有真实比特币支撑的 L-BTC 被直接记入了账本。由于金额本来就被机密交易隐藏,链上观察者无法直接看到这笔额外生成的资产。
35 分钟内,假 L-BTC 被换成了真 BTC
北京时间 9 月 6 日 23:53,也就是 15:53:10 UTC,Liquid 区块 4,050,336 打包了这笔伪造交易。
随后,这批凭空生成的 L-BTC 被转入提供 peg-out 服务的第三方平台 SideSwap 钱包。进入该地址后,它们在账本层面与正常的 L-BTC 没有区别。
十几分钟后,一笔 4,000 L-BTC 的 peg-out 请求被提交。联邦 15 个节点开始履行提币流程。它们的 HSM 会检查两项内容:提币地址是否在白名单内,以及销毁的 L-BTC 数量是否与申请提取的比特币数量一致。两项检查都通过了。
但 HSM 不会,也无法回答另一个问题:这些 L-BTC 最初是如何产生的。于是 11 把钥匙照常完成签名。约 35 分钟后,比特币主网确认了这笔交易,3,996 枚真实比特币离开联邦钱包。
Liquid 其实还设计了一道应急路径:如果正常签名路径不可用,需要 2/3 的备份密钥,并等待 56 天才能动用资金。但这次攻击并没有触发这条保险机制,因为攻击者走的是正常流程。多签限制的是「谁能签」,却不能判断「被签的对象是否真实有效」。一旦错误发生在节点软件识别真假的那一层,多高的签名门槛都只能把错误执行得更完整。
事件如何暴露:不同节点给出了不同答案
这次漏洞还有一个副作用:它会让不同节点之间出现分歧。同一个区块,有的节点接受,有的节点拒绝,区别只在于各自缓存中此前存过什么。
比特币核心开发者 Antoine Poinsot 当时公开指出,关键区块「被 mempool 拒绝、但被 Blockstream 接受」。而 mempool.space 本身就是联邦成员之一。
mempool.space 的实时审计程序捕捉到一笔 -4,019 BTC 的异常提取,而 Liquid 官方面板当时并未同步反映这笔损失,两套监控系统呈现出不同结果。随后链上的数字也变得非常明显:流通中的 L-BTC 达到 4,205 枚,而联邦钱包在处理几笔后续提现后,仅剩 197 枚真实比特币,支撑率不足 5%。

这也暴露出机密交易的另一面。金额隐藏之后,外部无法实时核对「账本上的 L-BTC 总量」与「金库中的真实 BTC 储备」是否一致。原本可被公开验证的 1:1 锚定,变成了一项需要信任的声明。等到问题真正显现,缺口已经达到 3.2 亿美元。
更刺眼的是补丁早已存在
如果事件只停留在利用密码学实现缺陷,它已经足够严重。但时间线让问题更复杂。
修复这处缓存缺陷的代码,早在 8 月 3 日就已提交到代码库,标题明确写着要把范围证明缓存绑定到资产和输出脚本。9 月 2 日,这一修复被并入主分支。
然而事发时,联邦节点运行的仍是 23.3.3 版本,这是 4 月 13 日发布的版本,不包含该修复。9 月 6 日事件发生后不到 3 小时,补丁被紧急合入发布分支。
需要说明的是,Blockstream 官方并未正式确认这次事件就是由这处缺陷引发,上述对应关系来自外部研究者复盘。但这个时间顺序已经足以说明另一个问题:代码被修好,不等于修复已经进入生产环境;两者之间可以相隔数月。
Casa 安全负责人 Jameson Lopp 还提到,联邦节点代码库公开记录显示,上一次提交发生在 2024 年 4 月,距事发已超过两年。对一套托管着约 3.2 亿美元资产的软件而言,这不是单纯的密码学问题,更是运维与发布管理问题。
「我们是白帽」与公开谈判
案发当晚,收款地址通过 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 日,对方把喊话转移到公开链上,语气也出现变化。
- 指责 Blockstream 失职,称「你们只拿出 150 万美元(甚至可能是 0)去保护 50 亿美元的资产,这是对安全的公然漠视」;
- 提出条件,要求 Blockstream 以自有资金额外支付相当于 10% 的漏洞赏金,作为归还剩余部分的前提;
- 发出威胁,称若遭拒绝,就让「你的所有持有人为你的不负责和吝啬承担 15% 的损失」。
到这一阶段,「白帽」的说法已经受到明显质疑。Ledger 首席技术官 Charles Guillemet 评价称,真正的白帽会在动用抵押资产之前披露漏洞,而不是事后再谈;先搬走 95% 的储备,再提出条件,「更像勒索,而不像安全研究」。

文章还提到,Nomad、SafeMoon、Team Finance 等事件中,也曾出现「归还大部分、保留一部分作为赏金」的处理方式,但通常前提是项目方有明确赏金安排,比例多在 10% 左右。而在这次事件中,15% 的保留比例由对方单方面设定,谁来定价,没有答案。
Blockstream 公开拒绝支付赎金
随后,Blockstream 发布公开声明,明确表示不会为归还被盗资产支付赎金。声明称,未经授权转移资产并拒绝归还,是犯罪行为,不属于负责任的漏洞披露,也不是白帽行为,「这是盗窃」。
声明承认,此前确实出于善意进行过沟通,目的是尽可能让用户资金回归,保护更广泛的比特币社区;但同时强调,这不应被解读为对对方行为或条件的接受。
Blockstream 还表示,不会为开源软件开发者树立一个被迫支付高额赎金的先例,尤其是在这笔金额「远超其经济参与程度」的情况下。对于「让持有人承担 15% 损失」的威胁,Blockstream 的回应是:比特币是硬通货,不能被无成本铸造,比特币不会为了支付赎金而对用户减记。
声明最后给出两条路径:若对方现在归还,事件仍可按白帽标准处理;若拒不归还,Blockstream 将与执法机构、交易所、服务提供商和链上取证专家合作,追踪资产并锁定责任人。声明同时强调,比特币交易具有透明性,相关证据不会消失。
事件争议不只在 598.5 枚比特币
这起事件的争议,并不只围绕那 598.5 枚尚未归还的比特币。文章指出,过去几年里,「先拿走资金,再自称白帽,最后留下一笔自定赏金」几乎形成了半标准化剧本。项目方为了尽快止损,往往会接受这种安排。
这套剧本的核心,是把安全事故的定价权交给攻击者:返还多少、留下多少、何时谈判,都由对方决定。Blockstream 这次公开拒绝的,实际也是这套逻辑本身。代价可能是 4,700 万美元无法收回;但它试图阻止下一次攻击继续沿用同样的定价方式。
文章还提到一个细节:案发前三天,恰逢一款被评价为「首个能独立发现未知漏洞」的 AI 模型发布,社群中曾出现把两件事联系起来的猜测,但目前没有任何证据支持。Blockstream 在声明中确实主动提到 AI,称「AI 的进步让世界变得不同,而比特币社区已经全力应对这一威胁」。官方没有表示本次攻击使用了 AI,但把 AI 写进事故声明,本身反映出行业对漏洞发现成本下降的警觉。
Liquid 当前恢复到哪一步
Liquid 已于 9 月 10 日 12:26 UTC 恢复出块,但暂时不打包用户交易;peg-in 与 peg-out 仍处于暂停状态。官方公布的恢复路径分为三个阶段:先恢复出块,再重放已验证交易,最后在网络状态确认无误后,重启锚定操作。
在 3,400 枚比特币归还之后,L-BTC 的支撑率回升至约 86%。Blockstream 联合创始人 Adam Back 公开表示,1:1 的 L-BTC 锚定会被兜住,并建议持有人不要在场外恐慌抛售。

随着 Blockstream 公开拒绝支付额外赏金,剩余 598.5 枚比特币已不再是单纯谈判问题,而进入追查阶段。文章称,这意味着后续可能涉及链上取证、交易所协查和执法介入,周期可能按月甚至按年计算,结果仍存在高度不确定性。
这也解释了「1:1 会被兜住」这句话的具体含义:缺口将由 Blockstream 与联邦自身的资产负债表承担,而不是让 L-BTC 持有人按比例减记。对持有人而言,当前更像是一段持续数日到数周的流动性冻结,而不是本金直接损失;前提是这一兜底承诺能被完整执行。
这次事件留下的几层风险信号
文章最后从托管与资产风险角度,梳理了这起事件暴露出的几个问题。
第一,L-BTC 这类包装资产并不等于原生 BTC,本质上更接近一张存单。它的安全性取决于发行方可信度、节点软件实现,以及出入金通道能否识别真伪。此次出问题的是软件实现层,而承接了伪造资产流转的是赎回通道层。文章同时指出,SideSwap 在流程上并无过错,因为它无法辨别这些 L-BTC 最初的来源是否异常。
第二,隐私与可验证性之间存在直接取舍。金额被隐藏后,外部就失去了持续核对储备的能力。这次缺口之所以被抓住,靠的是不同节点意外给出了不同答案,而不是设计中原本就存在的一套外部核验机制。
第三,用户承担的风险,也包含项目方的运维节奏。一个补丁 5 个月未上线,一套代码两年缺乏更新,这些都不会写在白皮书里,但会直接决定资金实际暴露在什么级别的风险下。
第四,多签当然重要,但它主要防的是密钥失窃和单点作恶,不是坏代码。当软件已经把假币认成真币,多签只会把错误支出合法化、规范化。
第五,「白帽」不是自我定义的身份,而是一套行为标准。关键区别不在于最后返还多少,而在于顺序:是先披露再协作,还是先挪走资产再开条件。
文章还以 Cactus Custody 作为托管服务商的视角补充了三点操作层警示:资产准入不能只看发行方,铸造逻辑、赎回通道、储备可核验程度应一起评估;任何依赖单一数据源的入账确认都较脆弱,关键链上状态值得用两家独立节点服务商交叉验证;用户资产按地址隔离并定期对账,可以压缩一次误判造成的爆炸半径。
就这起事件而言,最终暴露出的并不只是一个缓存漏洞,而是一整套信任链条里最薄弱的环节。锁够不够结实是一层,系统需要相信多少对象,是另一层。

