這篇文章闡述了我們如何看待本週 Cloudflare 停機事件,為什麼具有時間鎖的純智能合約控制平面能改變故障模式,以及零知識證明如何發揮作用。
在 2025 年 11 月 18 日 19:20(UTC +8),Cloudflare 的邊緣節點開始對大量流量返回 5xx 錯誤。根本原因不是攻擊者;而是一個 ClickHouse 權限變更,導致查詢返回重複行。該查詢生成了一個每隔幾分鐘就發送到每個邊緣節點的機器人管理 "功能文件"。
重複項 使文件大小增加了一倍,並將 功能計數增加到超過 200。機器人模組有一個硬上限和一個在溢出時會崩潰的 unwrap() 函數。當節點每五分鐘在"舊-好"和"新-壞"輸出之間交替時,整個機群開始震盪,直到所有分片都更新並保持在壞狀態。
Cloudflare 在 22:24(UTC +8)停止了發布程序,在 22:30(UTC +8)發送了最後一個已知良好的文件,並在 01:06(UTC +8)報告完全恢復。他們列出的後續行動:強化內部配置的攝取,添加全局終止開關,並審查各模組的故障模式。
查看 Cloudflare 自己的事後分析以獲取完整時間線和代碼片段。
這個故事中有兩個獨立的問題:
你仍然可以在代碼審查中修復 (2)。但 (1) 是區塊鏈大放異彩的地方:作為部署前的 防篡改、可編程閘門。
如果將這個想法壓縮為一句話:除非智能合約允許,否則配置不會成為"當前"配置,而合約只有在時間鎖和證明成品遵守不變量後才會翻轉該標誌。這一句話暗示了一個完整的架構。
事實證明,公共區塊鏈,特別是建立在 Ethereum 上的,運行 Ethereum 虛擬機和共識層的 EVM 鏈,為該問題提供了一個很好的解決方案。
延遲適配。 Ethereum 以週期為單位完成最終確認,但 L2 在 幾秒鐘 內確認(OP Stack 目標約 2 秒;zkSync 約 1 秒;許多系統提供快速認證)。這對於五分鐘的控制平面節奏來說已經足夠好了,例如 OP 區塊時間討論或 Circle 的認證時間)。
為每個成品附加一個簡潔的證明並在鏈上驗證它。這正是我們為 Chainwall 協議所做的,儘管是針對不同類型的數據!
核心目標是證明基本屬性:row_count <= 200,按鍵排序 + 唯一,模式匹配正則表達式和類型規則,文件大小 <= N。你可以將整個邏輯放在鏈上,或者依賴 Plonk/Groth 電路處理更大的表達式。例如,zk-VM 客戶可以解析 CSV/Parquet/JSON 並發出 SNARK。你不必揭示內容,只需提供承諾。ZK 中的正則表達式已有研究和生產系統(例如,Reef 和相關的 zk-regex 工作),這使得模式檢查變得現實。
有兩條實用路徑:
邊緣節點輪詢註冊表,只採用鏈上 獲得綠燈 的成品。為避免信任第三方 RPC,在你的控制平面中運行 輕客戶端(例如,Helios)或計劃使用 Portal Network。這樣,邊緣節點在接受任何"新當前"狀態之前在本地驗證頭部和包含證明。
終止開關和回滾 只是合約中的位元,由邊緣節點遵守。Cloudflare 明確指出需要更強大的全局終止開關;將該開關放在一個小型、經過審計的合約中,可以在壓力下提供單一的真相來源。
CloudFlare 事件不是攻擊,但他們最初認為是,而且確實很可能是!正如我們在加密安全中所見:攻擊者不僅追逐密鑰;他們還 脅迫控制平面。
我們的立場:數字資產的 控制 必須存在於由 時間鎖 和 多重簽名 保護的 智能合約 中,而不是私人憑證、CI 令牌、雲 ACL 或管理儀表板中。如果你的部署或"更改所有者"操作 必須 通過合約的 schedule() 和 execute() 路徑,即使開發者筆記本上有 rootkit 也無法插隊。時間延遲是你可以依賴的斷路器,而鏈上審計跟踪是客觀的。這只留下了"如果我們正在推廣的東西格式錯誤怎麼辦?"的問題,這正是"攜帶證明的配置"所回答的。
我們也相信 最小化信任的應用程序 有相當大的市場。我們現在只是在 OKcontract Labs 為第一個明確定義的用例構建正確的基礎。
《當功能文件絆倒了互聯網》最初發表在 Medium 上的 Coinmonks,人們通過突出顯示和回應這個故事繼續對話。


