一 一致不等於真
預言機這個問題,最好從狀態機複製講起,而不是從區塊鏈與現實世界隔絕這個比喻講起。
以太坊的官方開發文檔把技術邊界寫得很清楚:智能合約默認不能訪問區塊鏈之外的信息;而執行要求確定性,也就是同一個初始狀態加同一筆交易輸入,應當在每一個執行節點上產生同樣的狀態結果。
假如驗證節點在執行合約的時候,各自去請求一個交易所的接口,一個網頁,一個天氣服務或者一家銀行的服務器,它們可能得到不同的答案。原因可以是請求的時刻不同,地理位置不同,網絡延遲不同,接口臨時故障,緩存,訪問權限,乃至服務器主動對不同的來訪者返回不同內容。
這些不同的答案如果直接參與執行,節點就不能僅憑區塊裡那些相同的輸入,重演出同一個結果。
所以這不是網絡請求在區塊鏈上沒法實現的工程限制。
也不是有哪一條密碼學定理說鏈外的事實不可知。
它是確定性的狀態機複製,與非確定性的外部輸入之間的接口限制。
預言機的作用,是先把某一個外部信息變成一個可以被共識處理的鏈上輸入;之後節點才可以對它進行確定性的計算。
這一層區分,直接改寫了一句幾乎所有人都在用的話。
鏈上知道 BTC 是 65,000 美元,嚴格說不成立。
鏈上真正知道的是:某一個地址,或者某一組地址,按照某一套協議,在某一個時刻,向鏈上提交了表示 65,000 的數據;並且這次提交通過了該協議規定的簽名,聚合,時效和權限檢查。
至於 65,000 是不是真的是市場價格,那屬於鏈外的語義問題。
鏈上不知道 65,000。
鏈上知道的是,有人說了 65,000。
這兩句話之間的距離,決定了後面七節要處理的所有事情。
它們在絕大多數時候是重合的:說的人有理由說真話,數據是從真實成交裡算出來的,而聚合和檢查都做過了。而它們只要有一次不重合,下游那些按這個數執行的合約,就會照常執行。
這也解釋了為什麼預言機問題和區塊鏈自身的容錯不是同一個問題。
共識可以回答:多數驗證者,或者達到規定閾值的驗證者,對這一段鏈上狀態是否達成一致。
它本身不能回答紐約昨天下了多少毫米雨,某家公司今晚收盤價是多少,或者某個航班是不是真的取消了。
即使一萬個驗證節點都一致接受了一個錯誤的報價,一致性也沒有自動變成真實性。
一致不等於真。
而這一句在這個系列裡的位置很特別。
第五篇裡,構遇到了一個在邏輯上不可判定的問題,它的辦法是給這個問題定價:算不出它什麼時候停,那就讓它買多少跑多少。
這一次沒有東西可以定價。
因為要辦成的那件事,不屬於共識做得到的範圍。
餘項因此有一個前面九篇都沒有出現過的位置。
它不在被壓進尺子的那些東西裡,也不在溢出尺子的那些東西裡。它在尺子和被量的對象之間那個交接的地方。
二 換了位置
早期的方案大致把這個無法消失的信任,放在四個不同的地方。
一台服務器查詢接口之後寫鏈,信任落在運營方和它的數據源上,而控制那台服務器就可以改變輸入。
由第三方證明某台服務器確實返回過這段內容,能提高來源和傳輸的可驗證性,而證明不了源頭所說的東西本身是真的,信任落在數據源加那套證明系統上。
由交易所或者數據商自己簽發數據,鏈上驗簽,來源認證很強,而它要求原始數據商改變自己的發佈基礎設施,信任仍然落在那個源頭上。
由多個人提交事實再投票或者仲裁,靈活,而慢,貴,不適合高頻價格,還要解決參與者的激勵與串謀。
這四條局限不是後來的項目為了競爭而做的營銷總結。
Chainlink 最早的設計材料裡就已經逐項討論過:中心化的預言機是單點控制;人工預言機資源密集,不適合實時數據;由數據源簽名可以增強來源認證,而要求數據提供方改變基礎設施。
所以後來的設計並沒有真正刪除鏈外的信任。
更準確地說,它們回答的是三個更窄的問題:由誰觀察,怎樣把多個觀察合成一個結果,以及觀察錯了的時候誰有經濟動機去糾正或者承擔成本。
Chainlink 當前公開的數據 feed 架構是兩級聚合。上游通常先有專業的市場數據提供方,它們從多個交易場所取得原始報價,清洗異常值,形成自己的數據產品;多個獨立的節點再分別向這些供應商或者別的接口取數;節點之間交換並簽名各自的觀察值,聯署成一份滿足規定人數的報價;最終只由一個節點把聚合後的結果寫到鏈上,鏈上的合約驗證簽名和配置。
這樣避免了讓每一個節點每一輪都單獨發一筆昂貴的鏈上交易。
而這裡有一個容易被宣傳材料模糊的層次,值得完整寫出來。
交易所的成交數據,到專業數據商的清洗與聚合,到節點各自取數,到預言機網絡聯署出一份簽名報價,到鏈上的聚合合約,再到借貸或者衍生品協議。
所以有很多節點,不等於有很多完全獨立的經濟事實來源。
幾個節點完全可能購買同一家數據商的服務;而幾家數據商又可能大量依賴同樣那幾個交易場所。
Chainlink 自己關於數據質量的說明裡也寫過:節點可以訂閱高級數據商的接口;而數據商既可以把數據賣給節點,也可以自己去運行一個節點。
更新也不是市場價格每動一次就上鏈。
推送模式通常有兩個觸發器:價格相對上一次鏈上更新超過了設定的偏離閾值,或者即使偏離不大也已經過了最長允許的時間,也就是心跳。不同資產,不同鏈上的這兩個參數可以不同。
所以行情平穩時是心跳決定最大更新間隔,劇烈行情時可能由偏離閾值提前觸發。把某一條 feed 的某個百分比或者某個小時數寫成全網統一參數,不正確。
這又意味著最新報價等於當前市場價這句話也需要改寫。
準確的說法是:它是最近一次達到偏離閾值或者心跳條件之後,被該網絡接受並寫入鏈上的參考值。使用方還應當自己檢查更新時間這一類新鮮度信息。
管理面同樣不能漏掉。文檔本身提醒集成者檢查 feed 合約的擁有者;某些聚合器或者代理合約的擁有者是多簽,擁有改變某些變量或者函數配置的能力。
於是報價者去中心化,與配置和升級權去中心化,是兩個不同的問題。不能從前者推出後者。
Pyth 走的是另一條路。它對自己的區別描述得很明確:只有擁有一手數據的提供方才允許作為發佈者,文檔舉的類別是交易所,做市商和交易公司;當前官方文檔稱整個網絡有 120 家以上的一手提供方。
而這個數是全網絡的發佈者總數,不是每一條 feed 都有 120 個發佈者。
它的聚合也不是誰聲音大聽誰:發佈者對價格和置信區間投票,網絡使用中位數和分位數信息構造聚合價格與置信度,離群者對最終值的影響因此受到限制。
而這裡的信任只是換了位置。
它降低的是中間轉述層的來源不透明,而把更多信任放到了發佈者的身份選擇,發佈者自己的交易賬本與定價系統,以及多個發佈者之間是否真正獨立。
它的發佈者不是任意匿名地址自動加入的,申請需要獲得接納。
把這兩條路線並排,信任的落點是這樣的。
Chainlink 的剩餘信任在數據商的相關性,網絡成員,配置,以及管理多簽上。
Pyth 在發佈者的身份,他們內部的市場數據,以及發佈者集合的獨立性上。
還有兩條路線走得更遠,把信任整個挪到了別的地方去,那兩條放在第七節和准入權一起看。
而這裡沒有一條可以寫成無須信任。
差別只在於:要攻擊它,必須控制哪一層,付出什麼成本,以及錯誤多久之後還能被糾正。
三 五個來源
下面六起事故來自五個不同年份。金額故意保留互相衝突的口徑,因為攻擊者的利潤,被借走的資產,產生的壞賬,以及按事件時點價格折算的名義損失,不是同一回事。
2020 年 bZx 的第二次攻擊。攻擊者閃電借入 7,500 枚 ETH,其中約 900 枚經由一個路由在流動性很薄的市場裡大幅扭曲報價,再以約 110 萬的被高估資產作抵押借走 6,796 枚 ETH。金額有三個數:約 64 萬美元被取走,約 63.3 萬的攻擊收益,約 80 萬的資不抵債。三者量的是不同概念,不能混成一個損失。
弱點不是閃電貸本身。是可以由單筆資本衝擊的薄市場現貨,被當作了抵押定價的輸入。
2021 年 C.R.E.A.M. 那一次的性質不同。攻擊者向一個金庫捐贈資產,在份額總量很低的時候,把每一份份額的賬面價值近乎翻倍;而借貸協議讀取的正是這個可以在同一筆交易裡被改變的份額價格。
協議事後稱總影響 1.3 億美元;一家分析機構按其取價時點逐資產折算得到超過 1.36 億;另一家被同期媒體引用的攻擊者淨收益估計約 1.17 億。三者分別是協議影響額,事後資產估值和攻擊淨收益。
它暴露的是:可被操縱的衍生資產淨值與份額會計,被當成了預言機。而不是簡單地把某個交易所的現貨價拉高。
2022 年4 月的 Inverse Finance。攻擊者先在流動性很薄的池子裡推高代幣價格;而該協議使用的價格路徑含有時間加權平均,攻擊者通過資本投入和跨區塊的操作,把被操縱的狀態維持到了可以被採納的程度。
這個案子的會計表達尤其乾淨:後續的壞賬文件不用美元估算,而是列明實際被拿走的 1,594.44 枚 ETH,94.95 枚 WBTC,38.93 枚 YFI;同期按當日價格的二手估值約 1,560 萬美元。
它說明時間加權平均不是對低流動性池的數學免疫:窗口越短越容易推,越長則越滯後,而攻擊者可以跨區塊維持價格。
2022 年10 月的 Mango Markets。兩個賬戶建立相反的永續合約頭寸;隨後在給預言機供價的三個市場大量買入流動性很薄的代幣,抬高報價;膨脹出來的未實現收益被當作抵押能力,再借走其他資產。
金額有三個口徑:法院意見只作較穩妥的超過一億美元;監管機構 2023 年的起訴材料稱約 1.16 億;司法部 2024 年的審判公告稱約 1.1 億。差異來自估值方式和法律案件的口徑,不宜選一個當唯一真值。
而這個案子的法律狀態必須寫准。
法院意見把技術事實寫得很清楚:三個給預言機餵價的市場被交易抬高,抵押估值隨之增加。
而 2024 年陪審團的定罪不是當前的最終狀態。2025 年5 月23 日,地區法院撤銷了兩項商品相關的定罪,並對電匯欺詐那一項作出無罪判定。
所以今天不能寫成法院已經最終認定其犯有市場操縱罪。
而法院也並沒有否定他做了那些交易。它處理的是管轄地與刑事構成要件。
2023 年的 BonqDAO。問題出在該協議自己連接數據源的那段實現:攻擊者能夠向一個脆弱的價格更新路徑注入異常報價,先抬價鑄出巨量穩定幣,再壓價觸發其他倉位的清算。
一家機構用大約 1.2 億美元的資金來描述名義影響;另一家顯示攻擊者鑄出了 1 億枚,而只在尚有流動性的時候兌換了約 200 萬枚,其追蹤到已經洗出的資產約 1,105 枚 ETH,約 180 萬美元;還有一家給出的已轉換損失約 120 萬美元。
所以說它被預言機操縱損失 1.2 億美元,過寬。
較窄的說法是:它的集成合約存在使用者可利用的價格更新漏洞,造成約 1.2 億美元量級的名義資產與抵押影響;而攻擊者可以兌現的金額遠低於這個數。
2024 年6 月的 UwU Lend,是這一節的樞紐。
大額閃電流動性改變了多個池的狀態。而該協議的預言機對 11 個來源取中位數。
其中 5 個來源,來自可以被同一組操作相關操縱的路徑。
於是 11 個來源並不等於 11 個獨立的風險因子。
金額同樣有三個數:一家估算首輪超過 1,889 萬美元;另一家為 1,940 萬;同期媒體引用約 2,000 萬。而 6 月13 日又發生了約 370 萬的第二輪資產流出,不能簡單加進首輪的口徑,因為第二輪的機制有所不同。
它暴露的是:表面上多源,而多個來源共享同一個可被操縱的市場狀態,形成相關的失敗。
這幾個案子裡最容易被寫錯的是閃電貸攻擊這個說法。
閃電貸通常不是預言機的漏洞。它提供的是在一筆原子交易裡臨時獲得巨大資產負債表的能力。
真正決定能不能獲利的,是下游協議是否把攻擊者能夠以低成本改變的狀態,當作了可抵押的真實價值。薄池的現貨價,金庫的份額價格,流動性餘額,若干高度相關的路徑,都屬於這一類。
2020 年關於閃電貸攻擊的學術研究,已經把無抵押且可在一筆交易裡使用整個可用池,視為一個資本放大器,而不是價格預言機本身的問題。
時間加權平均也不構成從不安全到安全的二元轉換。
有分析在以太坊轉向權益證明之後專門討論過:驗證者可以預先知道自己是否連續控制後續的區塊,這消除了此前一部分由未知的下一個出塊者提供的保護;多區塊操縱在技術上並非不可能,只是成本和概率取決於流動性,窗口和連續出塊權。
而 2024 年的研究指出另一個基本權衡:延長窗口提高了操縱者必須維持異常價格的時間,卻會增加滯後和價格誤差。
所以從這些事故能夠支持的說法,不是去中心化交易所的價格不安全,也不是時間加權平均已經失效。
能夠支持的是:預言機的操縱成本,必須相對於協議可被借走或者清算的風險敞口來衡量。
一個需要五萬美元經濟成本才能顯著改變的價格,對一個只有一萬美元敞口的協議也許足夠貴;而對一個允許立即借走一億美元資產的協議,則完全是另一回事。
四 沈默
2022 年 Terra 崩潰期間還有一類事故,值得與上面那些攻擊分開。
Venus 當時公開表示,數據提供方因為極端市場情況暫停了 LUNA 的 feed 之後,該協議繼續看到最後那個約 0.107 美元的報價,而外部市場已經跌到約 0.01。
隨後兩個地址存入約 2.3 億枚 LUNA,借出約 1,350 萬美元的資產;協議估計造成約 1,120 萬美元的缺口,並表示由風險基金覆蓋。
這幾個數字的口徑分別是:存入的幣量,借出資產的名義價值,以及扣除剩餘抵押之後的估計壞賬。
而暫停這個動作本身,在設計上是保護性的。數據商停更,是因為極端行情下它對自己的報價沒有把握;繼續報一個自己都不確定的數,後果可能更壞。
於是就出現了這一節真正要說的那件事:上游按自己的職責做了一個謹慎的決定,而下游按自己的邏輯照常運行,兩邊都沒有做錯,而中間那一段沒有人負責。
這也是預言機這件事在制度上最難安排的地方。
上游是一家數據公司,它對自己的客戶負責,而它的客戶是節點,不是那個借貸池裡的存款人。中間是一個網絡,它按協議規定把數據寫上鏈,而它承諾的是按規則報價,不是承諾那個價格是對的。下游是一份合約,它按代碼執行,而代碼裡有沒有一句檢查更新時間,取決於三年前寫它的那個人有沒有想到。
這條鏈上的每一環都在履行自己那一環的職責。而沒有一環的職責是替最後那個人看住這件事。
這說明預言機停止更新,和預言機給出一個新的錯誤值,在工程上是兩件不同的事。
而對一個沒有做新鮮度檢查或者斷路器的合約,它們可以產生近似的結果。
同期另一個協議的第一方復盤同樣記錄:極端波動觸發了最低價格或者斷路器條件之後,依賴那條 feed 的應用受到了影響。
所以這一類事件暴露的是:使用方必須處理停更或者暫停的 feed,而不是僅僅驗證數據來自一個可信的合約地址。
預言機的失敗不必是被攻擊。
它可以只是不說話。
這一類失效比被攻擊更難防,原因也很樸素。
一個協議如果被餵了錯誤的價格,至少還有可能通過多源交叉檢查發現異常。而一個協議如果繼續讀到最後那個正確過的價格,它看到的一切都是正常的:簽名有效,數值合理,格式正確,沒有任何一項檢查會失敗。
它唯一能發現的辦法,是自己去問一句這個數是什麼時候寫的。而這一句要寫在使用方的合約裡,不寫就沒有。
所以這一類事故的責任位置,和上一節那幾起完全不同。
上一節裡,是有人主動去改變了一個可以被改變的數。這一節裡,沒有人做錯任何事,而錢一樣地流走了。
這兩類失效應當分開叫。前一類是有人說了假話,後一類是沒有人再說話,而聽的人以為上一句還算數。
而後一類在設計上更難防,因為它不觸發任何一項檢查。
五 誰付錢給誰
這個產業的資金流不是簡單的使用者拿代幣買報價。
對一條典型的高級價格 feed,至少有三層可能發生付款:應用與鏈生態,到預言機網絡,到節點運營商,再到上游數據商。
Chainlink 自己對數據供應鏈的描述尤其關鍵:專業數據商可以把接口數據賣給節點運營商;另一種模式是數據商自己運行節點,直接把數據賣給智能合約。
所以數據源本身是付費給預言機網絡,還是反過來,一手材料能支持的較窄回答是這樣的:
在典型的專業市場數據許可模式裡,是節點或者數據消費方向上游支付或者獲得許可,而不是那些交易所和數據商因為給預言機餵數據,就普遍向預言機網絡交錢。
而數據商也可能為了發行,戰略合作或者擴展分發,主動成為發佈者或者節點。個別合作合同裡的補貼與分成沒有統一的公開口徑,不能從合作夥伴這三個字推斷現金的方向。
另一端則可以由使用該 feed 的協議,贊助方,乃至區塊鏈生態本身承擔。Chainlink 把價格 feed 描述為共擔成本的模式:多個使用方共同資助一條 feed,費用用於補償節點的數據獲取和上鏈運營成本;另有一種安排允許某些鏈的生態在一定時期內承擔預言機網絡的 gas 和運行成本。
可以核到的部分相當具體。不少聚合器合約公開了計費狀態:每次觀察,每次傳輸的報酬參數,某個傳輸者尚未領取的餘額,待補償的觀察次數,以及合約中可用於支付的餘額。
也就是說,單條 feed,單個聚合器,單個傳輸者層面的付款義務,原則上可以直接從鏈上核驗。
而這不能直接變成節點的年收入。
原因是聚合器會升級和更換;同一個運營商有多個傳輸地址;同一個運營商可以服務多個網絡和多條鏈;費用還可能由生態計劃,合同訂閱和鏈下的數據許可承擔。
本次查閱的一手材料裡,沒有發現一份經過審計,把所有這些收入合併披露的全網節點收入表。
而實際的合同與預算反而能顯示商業價格的形狀,同時也留下了一處必須原樣保留的東西。
Inverse Finance 的治理提案在 2025 年討論一條 feed 時披露,此前已批准 32,800 美元與額外 12,800 美元,同時明確寫著兩次批准合計 44,800 美元。
而 32,800 加 12,800 等於 45,600。
原文自身存在 800 美元的內部不一致,不能替原文悄悄修正。
它又說這筆預算足以為兩條 feed 提供一年資金,發票以穩定幣支付。因為提案沒有把兩家供應商單獨拆價,這個數字只能標成兩類服務的合併預算上限,不能寫成某一條 feed 每年收費 44,800。
同一份提案還寫明,此前批准的另一筆預算至今沒有實際支出過。
所以預算不等於發票,不等於實際支付,不等於節點收入。
付款方式本身也已經變了。2025 年上線的付款抽象機制中,某些服務的使用方可以先用別的資產付費,費用經系統歸集後再在鏈上兌換成協議代幣,進入儲備並用於服務提供者的經濟體系。
所以必須先買某種代幣才能使用數據,已經不是準確的描述。
其中一項與借貸協議的合作還披露了一個具體的分成口徑:最初六個月採用折扣安排,相關收入按 65% 給協議社區,35% 給預言機生態分配。
而這是那一項特定收入的分成比例,不是價格 feed 的通用收費率。
代幣在這幾套系統裡扮演的角色也不是一種。
一種同時承擔支付結算和經濟質押;而付款抽象的方向恰恰表明,使用方支付的資產和網絡最終用於經濟結算的資產可以不同。
一種更直接地參與最終爭議的投票,承載的是爭議解決與治理的安全。
一種既是報價者的質押物,也是爭議與治理經濟的一部分;錯誤提交可能導致質押被罰沒。
還有一種當前已經同時有面向鏈上生態的產品和面向機構的訂閱制數據服務,並直接用把你的市場數據變現來向發佈者描述其路線。
所以不能把它概括成發佈者免費貢獻,使用者永久免費消費。
而公開材料同樣不足以把每一個發佈者當前實際收到多少現金或者激勵逐項還原。
六 承擔順序
預言機事故最容易被丟掉的,是這一層。
一條 feed 報錯本身並不燒錢。
只有當某個協議把這個報價用於允許借款,計算抵押率,觸發清算,鑄造穩定幣或者結算衍生品的時候,它才會改變資產的所有權。
2021 年那一次最清楚。被操縱的抵押品賬面價值上升之後,攻擊者不是從預言機那裡拿到錢,而是從借貸市場借出了原本由其他人存入的真實資產。
攻擊者一側增加了可以提現的資產;攻擊地址留下的是價值不足以覆蓋債務的抵押和壞賬。
所以協議所說的總影響 1.3 億美元,不是預言機提供方自動欠了協議 1.3 億,而是這個協議的資產負債表出現了缺口。
2022 年 Inverse 的會計表達更直接:被取走的那些幣被記為壞賬,並通過治理決策逐步償還。到當年8 月的提案時,已經償還了 95.25 枚 ETH,5.54 枚 WBTC,2.71 枚 YFI。
這些都是幣量,不是按今天價格回算的美元損失。
而資金的兩頭是:攻擊地址獲得借出的資產,原來的借貸池少了資產;隨後治理用未來的收入和預算償債,於是本來可以屬於協議利益相關者的資金,被轉去彌補此前存款人的缺口。
Bonq 的第二階段特別說明瞭另一件事。
攻擊者不僅把報價抬高以鑄出穩定幣,之後還把報價壓到極低水平,從而觸發了三十多個抵押不足的倉位被清算。
這裡並非所有損失都由協議金庫承擔。被錯誤定價並遭到清算的倉位持有人,會失去自己的抵押品;而清算方或者攻擊者可以獲得相應的經濟利益。
這也是為什麼那個 1.2 億的數字尤其需要謹慎。攻擊者並沒有把 1.2 億美元可自由兌換的資產全部裝進錢包。那 1 億枚在攻擊當時並不存在足夠的市場深度讓它按面值全額兌現;追蹤到的實際兌換與洗出規模是百萬美元級。
名義上被創造或者被重新估值的債權,與攻擊者真正賣進市場之後得到的資產,是兩種口徑。
而 Mango 的法院記錄提供了一處罕見的現實細節。
法院認定的審判證據顯示,那個預言機由三個市場輸入;攻擊者在這些市場大量買賣,使抵押價值增大,並在大約半小時之內借出並快速提走超過一億美元的資產。
法院還記錄了一位位於紐約州的使用者。他看到異常波動之後,嘗試提取自己的資產,而沒有成功。
這是這幾起事故的公開材料裡,唯一能落到一個具體自然人的記錄。
所以資金的兩頭很具體:被借走的穩定幣和其他資產,原本位於那個共享的流動性池;攻擊賬戶增加資產,而剩下的人面對資產短缺和無法提現。
後來又通過治理與攻擊者之間的安排返還了一部分,所以被抽走的金額和最終未追回的淨損失,同樣不是一個數字。
把這幾起合起來,一次預言機事故的承擔順序通常是這樣的。
攻擊者或者錯誤受益的賬戶增加資產。
借貸池或者被清算的賬戶減少資產。
如果協議選擇補償,再由金庫,風險基金或者未來收入承擔。
如果仍然不足,剩餘的損失最終表現為存款人的不可兌付,或者治理資產的經濟稀釋。
而節點,上游交易所和數據商,往往並不與下游的風險敞口一比一共同承擔損失。
這是預言機的經濟安全,與協議的經濟敞口之間,最重要的一處不對稱。
一個報錯的價格,可以讓一個協議損失一億美元。
而報出這個價格的人,收的是一筆按次計算的服務費。
七 六層
去中心化預言機這個描述本身不算錯誤,而它作為一個可檢驗的命題還缺少分母。
至少有六層需要分別測量。
第一層是單條 feed 的報價者數量。聚合器合約公開傳輸者名單,因此對某一個具體的合約,在某一個具體的區塊高度上到底允許哪些地址提交報價,是鏈上可核的。而不同的 feed 可以擁有不同的網絡,所以不存在一個自動適用於全網的單一節點數。
Chainlink 在 2022 年的公司材料裡,曾把某些旗艦 feed 描述為由約 31 個獨立節點運營商支持。這個數字的證據性質必須保留:它是特定歷史時期的公司自述,不是今天全網絡的實時節點數,也不是每一條 feed 都等於 31。
第二層是地址是否等於獨立的運營實體。
單純計算 31 個傳輸地址,不能證明存在 31 個在公司所有權,雲服務商,密鑰管理,上游數據供應商和控制人員方面都獨立的實體。
要計算運營方的集中度,至少需要把地址做實體歸並,再統計各運營商橫跨多少條 feed,多少價值敞口。本次查閱沒有找到官方持續發佈的,可以復算的全網運營方集中度時間序列。
所以 31 個節點等於 31 個獨立失效域,不能從節點數本身推出來。
第三層是數據源的相關性。
上一節那個 11 取中位數而其中 5 個可被同一組操作相關操縱的案子,就是最好的反例。
數學上的多取幾個,只有在失效模式足夠不相關的時候,才真正增加安全性。
第四層是准入權。
那 120 家以上的一手發佈者是全網規模的公司口徑,而發佈者必須申請並獲得接納。這是一個有身份篩選的一手數據網絡,不是任何匿名節點都自動進入生產環境。
另外兩條路線一個把報價者准入做得更無許可,而把安全假設轉移到質押與事後爭議;一個更進一步,許多答案根本不需要一個預先選定的報價者集合,而依賴樂觀的挑戰。
它們因此不能僅按節點數在同一張排行榜上比較。
這兩條路線值得在這裡展開,因為它們把准入這件事推到了兩個相反的極端。
UMA 採取的是完全不同的一類機制。提出者提交一個斷言並繳納保證金;在存活窗口內沒有人提出爭議,它就被視為正確;如果有人挑戰,爭議進入驗證機制,由代幣投票根據指定的方法作出解決。當前文檔舉例的默認存活窗口是 2 小時;而爭議解決通常需要 48 到 96 小時。
這兩個數字量的是挑戰窗口和爭議解決時間,不是價格更新頻率。
它因此把信任放在一套完全不同的條件上:錯誤的斷言必須值錢到讓至少一個誠實的觀察者願意監控並拿出資本來挑戰;保證金要足夠大,使偽造的成本高於收益;最終還要信任那套投票與解析規則。
如果無人注意,或者挑戰成本過高,這套機制可以在不經過任何積極確認的情況下接受錯誤數據。而它自己也提醒過:較高的保證金增加攻擊成本,同時也提高了挑戰者所需的資本。
Tellor 更接近一個無許可的報價者市場。報價者質押之後提交數據並可獲得獎勵;其他持幣人可以發起爭議。當前的規則按不同嚴重度規定可以罰沒部分乃至全部質押,投票之後還有挑戰階段。它的爭議流程包括 48 小時投票加 24 小時挑戰,也就是通常 72 小時才能完成一次結算。
第五層是客戶端與實現的多樣性。
這一部分的公開可核數據,明顯弱於底層區塊鏈的執行與共識客戶端。
官方的節點運維材料圍繞官方軟件及其部署方式展開;本次審閱的材料裡,沒有給出那種彼此獨立實現,協議兼容的生產環境客戶端市場份額表。
所以更準確的寫法不是客戶端高度集中已經被證明,而是:截至本次審閱,獨立實現的市場份額缺少公開,版本化,可復核的數據;而不能用底層鏈的客戶端多樣性指標去替代它。
第六層是管理權。
即使某條 feed 的報價由幾十個地址聯署,代理與聚合合約的所有權,配置權限和緊急程序,仍然是另外一個控制面。
官方文檔自己就要求開發者檢查合約的擁有者,並說明某些擁有者或者多簽可以更改變量,調用管理函數。
所以一份報價不能由一個節點單獨偽造,與沒有少數管理者能夠改變 feed 配置,不是同義命題。
而真正尚缺公開測量的,不是有沒有足夠多的項目宣稱自己去中心化,是幾組更難看的數字:
單條 feed 在任一時點的實體級報價者集中度;多個報價者共同的雲服務商與共同的數據商暴露;同一家數據商內部又依賴哪些共同的交易場所;客戶端軟件的實現份額;管理多簽與配置權限的實體集中度;以及節點運營商在扣除上游數據許可,gas 和基礎設施之後的真實淨收入。
當前的材料能把鏈上的傳輸者,計費義務,發佈者總數和部分治理權限核到相當細,而尚不足以把這些維度合成為一個可信的去中心化分數。
這部分缺失本身,比一個未經定義的節點總數更接近目前可以從原始材料得到的研究邊界。
八 那道縫
把預言機網絡叫成數據源,容易掩蓋真正的數據生成鏈。
對加密貨幣的現貨,一個典型的末端是幾家中心化交易所的訂單簿和成交,加上若干鏈上交易所;專業的數據商再做場所選擇,成交量與質量過濾,異常值處理和匯率轉換。節點取得的是這些數據商整理之後的接口,而不是區塊鏈通過某種密碼學手段直接觀察到了市場。
對傳統資產,這條鏈更明顯。
近年的數據合作裡,有交易所把自己的合併 feed 內容提供到鏈上,而公告稱那條 feed 本身匯集了 300 多個交易場所的數據。這個 300 多量的是那條 feed 的上游場所覆蓋數,不是有 300 個預言機節點。
有機構通過鏈上分發渠道發佈國債基準收盤價格,而鏈上看到的那個基準,已經是在傳統市場數據與基準體系內形成的結果。
還有交易所把自己旗下幾個市場的數據引入這套分發體系。
所以取代傳統數據商這個說法,與材料並不相符。
更貼近實際的是:預言機網絡增加了從傳統與加密市場數據基礎設施,到區塊鏈智能合約之間的一層簽名,聚合和鏈上分發。
它可能改變分發的渠道,而不自動取代最上游的交易所,做市商,基準管理人或者數據清洗商。
監管也主要沿著這些上游角色發生,而不是沿著預言機這個詞發生。
在美國的全國市場系統裡,相關規則要求交易所提供規定的市場數據,由指定的處理機構進行匯集和傳播。所以如果一條鏈上報價最終引用的是美國上市股票行情,這條鏈的上游有一部分處在證券市場監管制度之內。
而數據商受監管這句話則需要大幅收窄。
出售一條數據接口本身,並不自動使一家公司成為受監管的交易所或者基準管理人。
英國的監管機構明確指出:向一個基準管理人貢獻輸入數據,本身不是一項受監管的活動;儘管受監管的貢獻者仍然可能受到基準條例中治理與行為義務的約束。
如果某個產品本身屬於受基準條例管轄的基準,那又不同。那種監管身份來自基準管理這個法律角色,而不是因為它最後被某個預言機引用了。
所以那個問題應當拆成兩句話。
對傳統股票,固定收益和外匯基準這一類受許可的高質量機構數據,不少鏈上產品確實重新連接到了既有的數據生產與許可體系,這有一手的合作公告可以證明。
而整個行業最終只依賴幾家公司,需要市場份額,數據授權和上游場所重疊的系統測量,本次查閱的一手材料不足以支持。
現實世界影響的缺口也應當明確記錄。
對上面那幾起事故,公開的技術復盤十分豐富,可以量到代幣流動,壞賬,清算和金庫。
而本次檢索沒有發現可靠的一手研究,進一步測量這些事故造成了多少就業損失,地區物價變化或者金融服務可及性的變化。
能夠落到自然人的那一點材料,是法院卷宗裡的一次失敗的提款嘗試。
除此之外,把鏈上的壞賬推演成就業或者消費者物價的損失,會超出證據。
回到第一節。
一致不等於真。
前面九篇裡,構遇到不好辦的東西,總能找到一個辦法:改名,不問,折算,給它一條軌道,要它出示憑據,或者乾脆給它定價。
這一次沒有辦法。
因為要辦成的那件事,讓鏈知道鏈外發生了什麼,不屬於共識做得到的範圍。
於是所有的設計最後都變成了同一類動作:不是讓它知道,是讓說錯話變貴,讓說話的人變多,讓說錯話之後有人能夠把它指出來。
餘項在這裡的位置因此很清楚。
它不在鏈上。鏈上每一次提交都簽得好好的,任何人都可以去驗。
它也不在鏈外。外面那個價格是真實存在的,交易所裡每一秒都在成交。
它在那道縫上。
在有人說了 65,000,和它就是 65,000 之間。
而這道縫沒有任何協議可以關上,因為關上它需要的那樣東西,不屬於共識做得到的範圍。
所有的設計做的都是同一件事:把這道縫變窄,讓跨過它去說假話變貴,讓說完假話之後有人能把它指出來。
而縫一直在。
鏈每一次都驗得很仔細:簽名對不對,人數夠不夠,時間新不新。
它驗的是有沒有人按規矩說過這句話。
它不驗這句話是不是真的。
鏈還在結算,而結算什麼還沒有共識。
本文依據公開協議文檔、鏈上記錄、法院文書、監管文件與同行評議研究寫成;文中的數字均保留其統計口徑。系列資料截至 2026 年 8 月。