預言機操縱攻擊是什麼,跟一般認知的價格波動有什麼不同?
預言機操縱攻擊指的是攻擊者透過人為手段,在極短時間內刻意扭曲某個協議依賴的價格資料,讓這個協議依照這個被扭曲的錯誤價格,執行對攻擊者有利的操作。最典型的手法是:攻擊者在某個流動性較淺的資金池裡進行一筆巨額交易,瞬間把某個代幣的兌換價格拉高或壓低,如果剛好有另一個協議直接讀取這個資金池的即時價格作為預言機資料來源,這個協議就會誤以為市場價格真的發生了這麼大的變化,執行清算、超額借款或不對等兌換等操作。
跟一般認知的市場價格波動最根本的不同在於「人為刻意」與「瞬間性」:正常的市場價格波動反映的是真實的供需變化,即使波動劇烈,也是市場多方參與者共同作用的結果;預言機操縱攻擊則是單一攻擊者刻意製造出一個「暫時性、不反映真實市場共識」的錯誤價格,攻擊完成後(歸還借來的資金、平倉套利部位)這個扭曲的價格往往迅速消失,回到接近原本的水準,整個過程通常在一筆交易或極短時間內就結束。
預言機操縱攻擊為什麼會出現,為什麼這麼多協議會受害?
這類攻擊之所以能持續發生,根源在於部分協議在設計初期,為了追求即時性與簡單性,選擇直接讀取單一資金池的即時價格作為預言機資料來源,而不是採用更複雜但更抗操縱的設計(例如時間加權平均價格、多來源交叉驗證)。這個設計選擇在正常市況下運作良好,因為多數時候不會有人願意花費巨額資金去扭曲一個流動性充足的資金池價格;但如果這個資金池本身流動性不夠深,攻擊者只需要相對較少的資金,就能造成巨大的價格偏移,加上多數這類攻擊會搭配閃電貸使用,攻擊者甚至不需要準備任何自有本金,就能調動足以扭曲價格的巨額資金。
這個攻擊模式之所以歷史上反覆發生,也反映了 DeFi 生態系高度可組合的特性——越來越多協議直接依賴其他協議提供的價格資訊,這種依賴關係在正常時期能提升整體效率,但也讓單一環節(某個流動性較淺的資金池)的價格失真,有機會透過連鎖依賴關係波及到原本無關的其他協議。
預言機操縱攻擊具體怎麼執行,典型的攻擊步驟是什麼?
典型的攻擊流程通常包含以下步驟:
這整套流程的關鍵在於,因為閃電貸要求借款必須在同一筆交易內歸還,攻擊者完全不需要承擔任何價格波動或資金鎖定的風險,一旦攻擊邏輯設計正確,幾乎是無本金、低風險的套利操作,這也是為什麼這類攻擊在技術可行的情況下極具吸引力。
預言機操縱攻擊對一般用戶有什麼實際影響,該怎麼判斷一個協議是否容易受害?
對一般用戶而言,如果你存款的協議遭受預言機操縱攻擊,直接後果通常是協議資金池被掏空、你的存款可能無法足額贖回,這類攻擊造成的損失往往是立即且不可逆的,因為區塊鏈交易一旦確認就無法撤銷。這也是為什麼評估一個協議是否安全時,預言機設計的抗操縱能力應該是重點查驗項目之一,重要性不亞於智能合約審計報告。
幾個具體可以查驗的指標:協議的價格資料來源是單一資金池的即時報價,還是採用時間加權平均價格(TWAP)機制——後者能有效降低單筆巨額交易瞬間扭曲價格的影響;協議是否交叉比對多個獨立來源的價格,任一來源異常時是否有熔斷機制暫停相關操作;協議依賴的資金池本身流動性深度如何,流動性越淺,扭曲價格所需的資金門檻越低,也代表理論上越容易被攻擊;以及這個協議依賴的抵押資產,是否同時被其他協議大量共用,這關係到攻擊發生時波及範圍的大小。這些查驗不需要你看懂程式碼,多數協議的官方文件或審計報告會揭露預言機設計的具體方式,值得在存入資金前花時間確認。
2020 年 2 月,借貸協議 bZx 連續遭受兩次預言機操縱攻擊:攻擊者利用閃電貸借入大量以太幣,在流動性較淺的去中心化交易所執行巨額交易拉抬某代幣價格,接著利用這個被扭曲的價格從 bZx 借出遠超正常額度的資產,兩次攻擊合計獲利約 100 萬美元,這起事件是加密貨幣史上較早被廣泛討論的預言機操縱案例,也促使後續多數協議開始重視時間加權平均價格等抗操縱設計。
此為安全風險詞條,無正向取捨可言——預言機操縱攻擊對受害協議與用戶純粹是損失,沒有對應利益,唯一的「取捨」在於協議選擇讀取單一即時價格作為預言機來源的設計,能換取更快的反應速度與更低的技術複雜度,但代價是抗操縱能力較弱,這是協議設計階段的技術選型取捨,不是使用者能左右的選擇。