Liquid Network 的4000枚比特幣是怎麼憑空走出金庫的?
- 核心觀點:2026年9月Liquid Network因節點軟體快取缺陷被利用,攻擊者無需竊取私鑰或突破多簽,僅憑偽造的範圍證明在合規流程下憑空鑄造4,000枚L-BTC並成功提取約3.2億美元真比特幣,暴露了「包裝資產」在軟體實現層與運維層的系統性風險。
- 關鍵要素:
- 攻擊者未攻破任何私鑰或HSM,利用Elements節點範圍證明快取未綁定資產與輸出腳本的缺陷,提前14小時向鏈上注入68個相同證明「餵養」快取,最終以11/15多簽合規簽名完成提幣。
- 漏洞修復補丁8月3日已提交、9月2日併入主分支,但聯邦節點仍運行4月13日發布的舊版本,補丁在生產環境落後達五個月;聯邦節點程式碼庫上一次提交為2024年4月,距事發超兩年。
- 事件暴露儲備可核驗性缺失:機密交易隱藏金額,外部無法即時比對L-BTC流通量與聯邦錢包真幣餘額,鏈上流通4,205枚L-BTC時真幣僅剩197枚,支撐率不足5%。
- 攻擊者自稱白帽,歸還3,400枚比特幣(85%),自留598.5枚(約15%),並要求額外10%漏洞賞金,Blockstream公開拒付贖金,明確稱此為「盜竊」而非白帽行為。
- 事件後L-BTC支撐率回升至約86%,Blockstream承諾兜底1:1錨定、不讓持幣人減記,剩餘598.5枚比特幣轉入鏈上取證與執法追查階段。
- 核心教訓:包裝資產安全性取決於發行方信用、節點軟體實現與出入金通道三層中最弱一環;多簽防的是壞人而非壞代碼;「白帽」應以先披露後協作為行為標準。
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 枚比特幣已經不再


