Zcash 那個藏了四年的 bug,跟 Polymarket 一場「明明賣了卻說沒賣」的鬧劇

Zcash 那個藏了四年的 bug,跟 Polymarket 一場「明明賣了卻說沒賣」的鬧劇

發布於
·21 分鐘閱讀
CryptoBitcoinDeFiWeb3投資產業觀察資安AI美股Podcast

TL;DR

  • Zcash 的 Orchid 隱私池被發現一個藏了四年的嚴重漏洞,理論上可以無上限偽造 ZEC,而且因為隱私特性,沒人能事後查出到底有沒有被人利用過。
  • Zcash 基金會第一版公告說「無法增發總供給」,結果一天後創辦人 Zooko 親自出來改口:其實可以無限偽造。市場就是看到這篇才崩的,三天跌掉快五成。
  • Polymarket 上有個市場問「MicroStrategy 五月底前會不會賣 BTC」,結果它真的賣了,UMA 預言機卻判定「沒賣」,理由是賣的當下還沒正式揭露。留言區清一色「scam」。
  • 比特幣 ETF 連續十二天淨流出、抽走約四十五億美元後,六月四號終於翻紅止血。
  • 這集真正的主軸是一件事:我們嘴上講 trustless,但到頭來你還是得相信比你懂的人說的話。

先認識這集的來源

這集是六月五號上線的 The Breakdown,Blockworks 旗下的加密貨幣 podcast,主持人是 David Canellis。這個人從 2018 年就在跑加密貨幣新聞,當過記者、也是調查媒體 Protos 的共同創辦人,作品被紐約時報、金融時報、路透甚至聯準會引用過。他的節目走的是「把複雜的東西講白、把雜訊跟訊號分開」的路線,這集是他單獨主持的週五快評,把一週的幾條線串起來聊,沒有來賓。

我蠻喜歡這種週五收尾的形式,不裝專家、就是把幾件事攤開來唸給你聽,順便講一下自己怎麼想。這集表面上講三件事,底層其實一直在繞同一個問題打轉,等等你就會看到。

一個藏了四年的 bug,最可怕的是沒人查得出來

先講 Zcash 這條線,因為它最有戲。

Zcash 是一條主打隱私的公鏈,核心賣點是 zero-knowledge proof(零知識證明,一種你可以證明「我有這筆錢」卻不用透露任何細節的密碼學技術)。它有一個叫 Orchid 的隱私池,你把資產丟進去,餘額跟交易紀錄就被遮起來,外面看不到。

問題出在 Orchid 的證明電路裡。簡單講,這個電路的工作是檢查每一筆交易合不合法,合法才放行。結果有人發現它可以被騙,把不合法的交易當成合法的吞下去。用生活化一點的比喻:這就像一個負責驗票的閘門,本來要確認你手上的票是真的才讓你進去,結果有個漏洞讓你拿一張影印的假票也能刷過。而且因為 Orchid 是隱私池,外面根本看不到誰刷了假票、刷了幾張。

最讓人不安的是時間軸。這個 bug 從 2022 年五月 Orchid 上線那天就存在,一路到 2026 年六月一號才緊急修掉。整整四年。四年裡有沒有人偷偷印過假的 ZEC,沒有人知道,因為隱私特性讓你連事後都查不出來。

公告改口那一刻,市場才真的崩了

這裡有個很值得玩味的細節。

六月三號 Zcash 基金會第一版公告是這樣寫的:這是一個「double spending(雙花)」漏洞,攻擊者可以在 Orchid 池內重複花用資金,但沒辦法增發 ZEC 的總供給量,因為有 turnstile 機制守著。聽起來嚴重,但有個天花板。

結果市場那天幾乎沒反應。Zcash 價格穩穩的。

真正崩盤是六月四號半夜開始。導火線是創辦人 Zooko Wilcox 跟另外兩位(Jason McGee、Taylor Hornby)跑到論壇補了一篇,把話講清楚:這個漏洞其實可以「無法被偵測地、無上限地偽造 ZEC」。第一版那句「無法增發總供給」是錯的。

市場看到這篇才開始狂瀉。三天跌了快四七%,單日一度跌近三成,是 Zcash 將近十年歷史上第七慘的單日崩盤,比 COVID、比 2021 年 Terra 那次都慘,只輸給 2016 年剛上市那段價格還沒穩的時期。

我覺得這裡有個產業老問題值得記下來:揭露漏洞的措辭,本身就是會移動市場的東西。同一個 bug,第一版講得有天花板、市場不動;第二版講成無上限、市場崩給你看。中間到底是溝通失誤、內部還沒搞清楚、還是其他原因,外人很難判斷。但這 24 小時的落差,剛好示範了一件事——在加密貨幣世界,資訊的「框架」跟資訊本身一樣有殺傷力。

順帶一提,找到並回報這個 bug 的安全研究員,是用 AI 工具(包括 Claude 的 Opus)去理解跟驗證這個漏洞真的存在的。AI 在資安攻防裡的角色越來越吃重,這點之前在SED News 拆解 Anthropic 的 Mythos 資安模型那篇聊過,這裡先不展開。

兩層信任,你都得閉著眼睛吞下去

Grayscale 的法務長 Craig Salm 出來幫 Zcash 緩頰,他的邏輯大概是:你要相信這 bug 真的被人利用過,你得同時相信兩件事。第一,有個攻擊者比 ECC、Shielded Labs、Zcash 基金會這些核心開發跟安全團隊「加起來」都還更仔細地讀過 Zcash 的程式碼。第二,這個人在一場 20 倍漲幅的大牛市裡,居然忍住沒把偽造的 ZEC 全部倒出來變現。他覺得這不太可能。

這套說法聽起來合理,但 David 點出一個我也認同的破綻:說「不可能有攻擊者比所有官方安全研究員更仔細讀過程式碼」,這個邏輯本身就不太站得住腳。資安史上一堆案例就是某個外部的人比官方更早、更深地看懂了某段 code。

而 David 接下來那段反思才是這集的精華。他說,這已經是 Zcash 第二次要你「閉著眼睛相信一切都沒事」了。

第一次是 Zcash 早期那場 key ceremony(金鑰儀式)。當年有六個人各自短暫掌握過一段私鑰碎片,如果這六個人聯手把碎片拼起來,理論上就能拿到一把能解開整條鏈密碼學的「萬能鑰匙」。他們在儀式上把這些碎片銷毀了。你必須相信這場儀式是乾淨的、這六個人沒有偷偷留一手。

現在加上這個四年漏洞,你又得相信「沒有駭客利用它偽造過 ZEC」。兩層信任疊在一起,都得你自己吞。

David 講了一句我覺得很誠實的話:當然啦,整天相信最壞情境、相信各種陰謀論,會讓你錯過所有上漲,這種心態拿來投資一點都不務實。但問題是,當市場對「修正版揭露」反應這麼大的時候,他開始懷疑這些東西是不是正在某些人腦中慢慢累積。尤其是那些不是把加密貨幣當身分認同、只是看看新聞標題的一般人。他們看到這個也出事、那個也出事,心裡會想:這些超級專業的人講的話,我到底能信幾分?因為我又不懂密碼學、不懂電腦科學,我根本沒辦法自己驗證真相。

這就是 trustless 最尷尬的地方

這段我想多停一下,因為它戳到加密貨幣的核心矛盾。

整個產業天天喊 trustless(無需信任),但對絕大多數普通人來說,它其實是「信任轉移」:你不用信任銀行了,改成信任一群你看不懂他們在寫什麼的工程師跟密碼學家。那場金鑰儀式是不是真的銷毀了鑰匙、那個 bug 修補到底乾不乾淨,你都只能聽人家說。

說白了,這跟一般人剛開始接觸投資時的處境一模一樣——你沒有能力分辨一個東西底下藏了多少風險,腦力頻寬只夠看「漲了多少」。之前在Vitalik 上 a16z 講 Sanctuary Tech那篇也聊過類似的焦慮:當技術複雜到一個程度,普通人的能動性其實正在被稀釋。

我自己的判斷是,Zcash 團隊的安全文化在業界確實是頂尖的,這個 bug 被內部發現、緊急修補、誠實揭露,這套流程本身值得肯定。他們也說會推一次網路升級,未來能夠盤點、驗證 ZEC 的供給完整性。但在那個工具真正上線、而且能同時驗證總供給跟隱私池內供給之前,你能做的就只有「相信」。這件事會在 Zcash 頭上懸蠻久的。如果它撐過了當年金鑰儀式的 FUD,或許這次也撐得過去,這部分要留意,但別急著下定論。

Polymarket:明明賣了,預言機說沒賣

第二條線換個口味,但骨子裡還是信任問題。

事情是這樣:MicroStrategy(現在叫 Strategy)六月一號交了一份 8-K,揭露它在五月二十六到三十一號之間賣了 32 顆比特幣,均價約七萬七千美金,總共套現兩百五十萬美金左右。這是它自 2022 年十二月以來第一次賣幣。量超小,Galaxy 算過只佔它總持倉的 0.0038%,而且詭異的是它幾天前才剛買進,所以根本搞不清楚為什麼要賣這一點點。

重點在 Polymarket 上有個每季滾動的市場:「MicroStrategy 五月三十一號前會不會賣任何比特幣?」標題白紙黑字寫著 sells any Bitcoin。它真的在那個區間賣了。照理說答案是 Yes,對吧?

結果 UMA 預言機判定:No,不算。

理由是:在五月三十一號這個截止點之前,沒有任何來自 Strategy 的官方揭露、鏈上數據或可信報導能確認它賣了幣。揭露是六月一號才出來的,超過截止日,所以「在截止時點上沒有東西可以裁決」。

事件日 vs 揭露日,一個價值幾十萬的爭議

Galaxy 把這個爭議拆得很清楚,核心就一句話:到底是「事件發生的日期」說了算,還是「事件被確認的日期」說了算?

市場原始規則的文字是 event-based(以事件為準)——只要 Strategy 在截止前賣了任何比特幣就結算 Yes,規則裡完全沒寫「賣出動作必須在截止前被公告」。但後來那份補充公告卻變成 confirmation-based(以確認為準)。對下注的人來說,這根本就是事後改規則。

而且真的有人重押。消息出來時 Yes 的賠率從 10% 一路噴到 80%,有個參與者用約 76 美分的價格掃了七十萬股 Yes,把它當成一筆穩賺的套利機會,因為每股賭對了能換一美元穩定幣。結果規則被「重新詮釋」,這筆套利直接變壁紙。

Polymarket 留言區的反應很有畫面:往下滑全部都是 scam、scam、rules change、scammed,一路洗下去。

David 的態度是這樣:你可以說留言區不重要、忽略就好,重要的是預測市場整體在成長、選舉季跟運動季的量在衝。這我同意。但他補了一句我覺得很關鍵——總有一天,留言區的這些東西會滲出螢幕、流進現實,到時候反噬的不只是 Polymarket,而是整個預測市場這個賽道。

風險來自大樓內部,這才是問題

最扎心的是他那句:「我懂這是賭博、什麼都可能發生、你會賠錢,這些我都懂。但當風險是來自大樓內部的時候,我不太知道我們要怎麼走下去。」

買實驗性代幣、在實驗性又不夠流動的市場下注,這些風險參與者本來就該心裡有數。但「規則本身在結算後被改」這種風險,不是你 DYOR 能防的。這就是為什麼這件事比單純賭輸還傷——它傷的是這套機制能不能被信任。

David 自稱還是個 decentralization maxi(去中心化最大化主義者),他講得很白:他依然看好去中心化預測市場,甚至希望未來是用戶自己能開市場,而不是只有 Polymarket 一家在開。但 UMA 預言機現在這個狀態,還沒能證明它有辦法做出讓使用者信服、而且可以「一次又一次複製」的裁決。一次又一次,下注的人以為規則是黑白分明的,結算卻給你另一個答案。

他的建議蠻實際:市場設計時就該預留幾天的緩衝期,給「事件發生」跟「正式揭露」之間留空間,這樣這種鬧劇就不會重演。要嘛 UMA 需要多非常多的持有者跟投票者、需要更好的誘因讓人來當預言機節點;要嘛乾脆打掉重練。預測市場的預言機問題之前在The Breakdown 拆不丹抓頂那集也提過,這已經不是第一次了。

ETF 流向:十二天連續失血後終於止住

最後一條線很快帶過。比特幣現貨 ETF 經歷了大概十二個交易日連續淨流出,總共被抽走約四十五億美金,應該是新紀錄。這段同時也疊加了比特幣本身跌破七萬的修正,兩件事攪在一起。

六月四號終於翻紅,美國現貨比特幣 ETF 淨流入約三百二十萬美金,主要靠 BlackRock 的 IBIT 進帳四千七百多萬撐起來,其他幾乎都還是零變動或負流出。以太坊 ETF 也止血,淨流入約一千九百三十萬;Solana 的 ETF 當天完全沒動靜;Hyperliquid 的現貨 ETF 倒是有意思,進帳約一千兩百二十萬,而且到目前為止沒有任何一天淨流出,雖然量不大,累積總流入約一億五千八百萬。

ETF 這條線本身沒太多戲,就是告訴你資金面在修正中喘了口氣。買在低點的人透過 ETF 這個包裝進場,連續失血的曲線暫時被擋住。

一個收尾的判斷

把三條線擺在一起看,你會發現它們其實是同一個故事的三個切片。

Zcash 的 bug、Polymarket 的裁決、甚至那場金鑰儀式,共同的底色都是:在一個號稱不需要信任的系統裡,普通人到頭來還是得相信某些他無法親自驗證的東西。Zcash 你得信工程師說 bug 沒被利用;Polymarket 你得信預言機會照規則的字面意思裁決;這兩個信任這集都被戳了一下。

我自己的 takeaway 是這個:trustless 從來不是「不需要信任」,而是「把信任搬到不同的地方」。搞懂你到底把信任交給了誰、那個對象的誘因結構長什麼樣,比追逐那 500% 的漲幅重要得多。下次有人跟你說某個協議是無需信任的,多花三十秒問一句——那如果它出事了,我有沒有辦法自己查證?查不了的話,我信的其實是人,不是程式碼。

想看更多這類加密貨幣產業的拆解,我會持續更新在 wilsonhuang.xyz,有興趣的話歡迎訂閱追蹤。

Sources:Blockworks - David Canellis Speaker ProfileThe Breakdown Podcast - Blockworks

推薦閱讀

喜歡這篇文章嗎?

訂閱電子報,每週收到精選技術文章與產業洞察,直送你的信箱。

💌 隨時可以取消訂閱,不會收到垃圾郵件