✍️ Gate 廣場「創作者認證激勵計劃」進行中!
我們歡迎優質創作者積極創作,申請認證
贏取豪華代幣獎池、Gate 精美周邊、流量曝光等超過 $10,000+ 豐厚獎勵!
立即報名 👉 https://www.gate.com/questionnaire/7159
📕 認證申請步驟:
1️⃣ App 首頁底部進入【廣場】 → 點擊右上角頭像進入個人主頁
2️⃣ 點擊頭像右下角【申請認證】進入認證頁面,等待審核
讓優質內容被更多人看到,一起共建創作者社區!
活動詳情:https://www.gate.com/announcements/article/47889
預言機:DeFi 的眼睛,也是它的軟肋
撰文:張倩文
2020 年 11 月,有人用一筆借來的錢,在 15 秒內從一個 DeFi 協議中卷走了將近 100 萬美元。
他首先透過閃電貸借入大量 ETH,然後在一個流動性極低的資金池裡集中買入 sETH,短短幾秒內將價格急劇推高。
接著,他把這些 sETH 作為抵押品存入 bZx 協議。協議「看到」的,是剛剛那一瞬間被人為拉高的價格,於是認定這些 sETH 價值極高,並按照規則放出了遠超真實價值的 WBTC 貸款。
攻擊者拿到 WBTC 後迅速歸還閃電貸,帶著巨額差價揚長而去。
整個過程沒有駭客入侵,沒有程式碼漏洞,也沒有權限濫用。合約嚴格遵循規則執行了每一步。唯一的問題在於:
它「看見」的世界,是錯的。
這正是 DeFi 最底層的限制之一——鏈上合約,本質上是一個看不見現實世界的系統。
01 鏈上合約是個「盲人」
智慧合約生活在一個封閉的世界裡。
它能看到鏈上發生的所有事情——誰向哪裡轉了多少錢,哪個地址持有多少代幣,哪筆交易在何時被打包進區塊——這些資訊它都能讀取,而且絕對正確。
但鏈外的世界,它完全看不見:ETH 今天的價格是多少?比特幣是否突破了新高?某個穩定幣有沒有脫鉤?紐約股市今天上漲還是下跌?合約一無所知。
在 DeFi 借貸裡,這是一個致命的矛盾。
清算依賴於抵押資產的當前價格;但合約自己看不到價格,必須有人告訴它。
這就是預言機存在的原因:它是鏈上合約的眼睛,負責把鏈外的真實資訊搬到鏈上,供合約讀取和使用。但問題隨之而來:
誰來保證這些資訊是真的?
02 預言機:鏈上世界的信使
預言機本質上是一種資訊傳遞的基礎設施,將現實世界的資料(價格、利率、事件結果等)以合約可讀的格式寫入區塊鏈。
這個概念聽起來簡單,但工程上的挑戰在於:區塊鏈的核心設計原則是「不信任任何外部輸入」,一切以鏈上可驗證的資料為準。而預言機帶來的恰恰是鏈外資料——它天然處於這套信任體系的邊界之外。
為了解決這個問題,市場上形成了兩種主流方案。
第一種是鏈上價格,直接讀取去中心化交易所(DEX)中的交易價格。最典型的是 Uniswap 的時間加權平均價格(TWAP)——不取某一時刻的即時價格,而是取過去一段時間的均價,用時間稀釋短期價格波動。
第二種是去中心化預言機網路,以 Chainlink 為代表。多個獨立的資料節點分別從不同管道取得價格,彙總後取中位數上鏈,沒有任何一個節點能單獨決定最終結果。
兩種方案各有取捨,但都在試圖回答同一個問題:如何讓鏈上合約相信一個來自鏈外的數字?
03 為什麼不直接使用即時價格?
多數人第一次接觸預言機時,都會產生一個直覺:既然價格來自市場,為什麼不直接讀取交易所的即時價格?
問題在於:即時價格,並不等於真實價格。
在流動性充足、交易活躍的市場中,二者通常較為接近;但在流動性較弱、深度不足的池子裡,只要有足夠的資金,價格就能在極短時間內被人為拉升到遠高於真實市場水準。
而智慧合約無法判斷這個價格是自然形成,還是被刻意操縱。它只能讀取這個數字,並據此執行規則——允許借款人借出更多資金。等價格回落,抵押品的真實價值根本不足以覆蓋貸款,協議就會出現壞帳。
這正是文章開頭所說的 bZx 協議遭遇攻擊事件成立的原因,也是使用即時價格的代價:預言機會把「可以被短暫操縱的數字」,當作現實本身。
04 Chainlink 的解法:讓價格去中心化
如果一個系統只依賴單一資料來源,那麼只要這個資料來源一旦出錯或被操縱,整個協議都會被帶偏。降低這個風險最直接的辦法,不是去相信一個更強的人,而是讓多個彼此獨立的節點分別報數,然後從中提取一個相對穩健的結果。
Chainlink 的解法正採用這種思路:多個獨立的資料節點分別從不同資料源取得價格,各自上報,系統取中位數作為最終結果。這樣一來,單一節點即使出錯,或被攻擊者影響,也不足以左右最終價格;而攻擊者若想同時控制超過一半的節點,在經濟上是幾乎不可能完成的任務。
這套機制有效緩解了單點操縱的問題。
但它也引入了一個新的代價:更新有延遲。
鏈上價格並非即時同步,節點收集資料、達成共識、寫入區塊鏈,這個過程需要時間。在市場正常波動時,這個延遲無關緊要。但在行情劇烈波動時,預言機價格可能跟不上真實價格的變化。
這正是為什麼我們在為什麼 DeFi 借貸必須超額抵押?中提到:DeFi 借貸協議需要設定超額抵押緩衝:不只是為了應對價格波動本身,也為了在預言機還來不及更新的那段時間裡,系統依然有足夠的安全邊際來觸發清算。
05 預言機攻擊:最貴的信任危機
預言機問題並沒有因 Chainlink 的出現而徹底消失。
在 DeFi 的歷史上,與預言機相關的漏洞是損失最慘重的攻擊類別之一。2021 年至 2023 年間,僅就有據可查的預言機操縱攻擊,累計造成的損失就超過數億美元。
這些損失有一個共同特徵:攻擊者不需要找到程式碼裡的漏洞。他們只需要找到預言機價格與真實市場價格之間的縫隙,然後用資金把這道縫隙撐大,讓合約依照失真的價格執行一筆對自己有利的操作。這是一種比程式碼漏洞更難防禦的風險——因為你無法在程式碼裡寫下一條規則來判斷「這個價格是否真實」。
預言機的問題,本質上不是某個元件的漏洞,而是一種權衡:
你使用更多資料來源來對抗操縱,就必須接受更高的延遲;
你追求更接近即時的價格,就必須承擔被短暫操縱的風險。
這個權衡,沒有完美解法。
也正因如此,預言機的存在揭示了 DeFi 更深層的現實:鏈上合約可以做到絕對透明、絕對執行,但前提始終是它所依據的輸入資訊是真實的。一旦輸入被扭曲,再完美的程式碼,也只會更高效地做出錯誤的判斷和執行。