本文大部分素材取自“Exploring the Design Space and Challenges for Oracle Implementations in DeFi Protocols”,在此基礎上有大量改動
摘要:預言機在DeFi生態中一直扮演著不可或缺的角色,由於智能合約只能存取鏈上數據,無法直接從鏈外獲取訊息,需要預言機充當媒介,將鏈下的數據引入鏈上,智能合約才能基於鏈下資料進行自動化交易處理。大多數DeFi協議依賴預言機餵價來處理衍生性商品合約、清算不良資產等。
目前DeFi生態內的資金量超過800億美元,其中大部分與預言機有某種關聯。然而,傳統預言機在價格更新方面具有遲滯性,這衍生出了一種預言機專項的MEV:OEV。 OEV的常見場景包括預言機搶跑交易、套利以及清算獲利等,現在有越來越多方案被提出用於減輕OEV的負面影響。
本文將介紹現有的各種OEV解決方案,分別討論其優劣之處,並提出兩種新思路,對它們的價值觀、待解決問題與限制因素進行闡述。
因預言機而產生的MEV (OEV)
為了方便大家理解本文的主要內容,我們先將推播式預言機和拉取式預言機進行簡要科普。推播式預言機指的是,預言機主動將數據傳送到鏈上智能合約中,如Chainlink就以推播式為主;拉取式預言機則由DApp主動請求數據,預言機收到請求後再提供數據。
這兩種模式的差異在於,推送式預言機的數據實效性較強,適用於對實時數據較為敏感的場景,但這種模式下預言機要頻繁的向鏈上提交數據,會消耗更多的gas。拉取式預言機更靈活,只在DApp需要數據時才提供新數據,這樣做消耗的gas較少,但數據有遲滯性。
由於Defi平台需要預言機提供餵價數據,如果餵價更新具有遲滯性,則可能被套利機器人捕獲MEV,這種依賴於預言機而形成的MEV被稱為OEV。與OEV相關的主要獲利場景包括搶跑交易、套利和清算等,在接下來的討論中,我們將概述由OEV引發的各種獲益場景,並探討不同的OEV解決方案,以及其優劣。
OEV的產生與捕獲方式
根據實務中觀測到的結果,OEV有三種主要實現途徑:
1. 搶跑交易。比如以太坊網路中的MEV Searcher會即時監控待上鍊的交易數據,尋找MEV機會。預言機更新餵價要向鏈上提交數據,這些數據上鍊前會堆積在交易池中,Searcher會監控這些Pending交易,預知鏈上資產即將發生的價格波動,在價格更新前搶先埋伏一些買賣單。
許多衍生性商品平台曾遭受搶跑交易帶來的負面影響,例如GMX因頻繁遭遇搶跑交易,利潤減少10%,直到協議更新,GMX將接入的預言機交由KeeperDAO進行統一調度,OEV捕獲的問題才得以緩解。後面我們會對GMX採用的解決方案做簡單解釋。
2. 套利:利用預言機資料更新的延遲在不同市場間進行無風險套利。舉例來說,某鏈上衍生性商品平台的資產價格更新有10秒延遲,如果幣安的ETH現貨價格突然上漲,而鏈上的ETH價格沒有及時變化,套利機器人可以立刻在鏈上開做多合約,等Chainlink餵價更新後再把部位平掉,以此獲利。
上面的案例簡化了實際情況,但它說明了價格更新延遲會產生的套利機會,套利者可以從Defi平台捕獲OEV,當然這些被捕獲的OEV最終會導致LP的損失(羊毛出在羊身上)。
預言機搶跑交易和套利現象,在衍生品協議中通常稱為”有害的交易流(toxic flow)”,因為這些交易背後存在著資訊不對稱,套利者可以捕捉無風險利潤,但會損害Defi協議中LP/流動性提供者的利益。自2018年以來,Synthetix等老牌DeFi協議一直受到此類OEV攻擊的困擾,並嘗試了許多方法以減輕其負面影響。後面我們會對此類應對措施進行簡要解釋。
3. 清算:對於借貸協議而言,如果資產價格更新延遲,對於部分反應快的清算人而言有利可圖,捕捉不及時的價格更新導致的低效率清算,獲得額外收益。這些行為會削弱市場效率,並對Defi平台的公平性產生負面影響。
清算組件在任何涉及槓桿的DeFi協議中都是核心,而餵價更新的粒度在清算效率上起著關鍵作用。如果推送式預言機是門檻的,也就是價格變更達到一定幅度才更新餵價,就可能影響到清算過程。假設鏈下ETH價格下跌,某借貸協議上的部位已達清算線,但價格波動率不滿足預言機更新餵價的門檻,所以預言機沒更新數據,此時就會影響到清算工作的執行,這可能會進一步引發負面影響。
舉一個簡單的例子,某抵押品部位由於物價緊急下跌面臨清算,但由於預言機更新數據不及時,鏈上價格還未變動。在這個視窗期,Searcher提前發送清算交易請求並支付較高的Gas,獲得優先上鍊打包的優勢。當鏈上價格更新後,Searcher直接成為清算人並獲利,同時由於價格更新的遲滯,原抵押品持有者來不及補倉,遭受了額外損失。
通常DeFi協議會把部分清算抵押品作為獎勵,送給清算人,Aave等大型DeFi協議在2022年僅在以太坊上就分發了超過3800萬美元的清算激勵,這不僅過度補償了第三方清算人,也對使用者造成了傷害。此外,gas戰會將MEV捕獲機會從有MEV效應的地方擴散到整個MEV供應鏈。
其中,搶跑攻擊和套利行為中捕獲的OEV會損害DeFi流動性提供者的利益;而清算中捕獲的OEV,對於借款人來說,在清算過程中損失相當的資金, 對於貸款人,預言機報價存在延遲導致收到抵押品價值低於預期。
總而言之,無論以何種方式捕獲的OEV,都會對市場上其他人造成損失,最後只有OEV捕獲者自己受益,這對DeFi的公平性和UX產生了負面影響。
當前OEV解決方案
以下我們將在前述背景下討論推送式、拉取式和其他模式的預言機,以及當前市場上存在的,建立於其上的OEV解決方案,並分析其有效性,深入探討這些方案為解決OEV問題做出的取捨,包括增加中心化程度或信任假設,或犧牲UX等。
如果只使用拉取式預言機會怎麼樣?
前面我們提到過拉取式預言機,它的特徵是需要由Dapp主動向預言機請求資料。Pyth作為拉取式預言機的代表,優點之一是可以利用Solana架構的高TPS與低延遲時,創建Pythnet網路對資料進行收集、聚合和分發。在Pythnet上發布者每300ms就會更新一次價格信息,有需要的DApp可以透過API查詢最新的數據,將其發佈到鏈上。
這裡需要說明,發布者每300ms更新一次價格訊息,聽起來像是推送式預言機的邏輯。但是,Pyth的邏輯是“推送式更新,拉取式查詢”,即儘管數據是通過推送式更新的方式進入Pythnet,但鏈上應用或其他區塊鏈網絡可以通過Pyth API或跨鏈橋Wormhole的訊息傳遞層來「拉取」最新的資料。
但只使用拉取式預言機並不能完全解決搶跑和套利,用戶仍可以選擇滿足特定條件的價格進行交易,導致「對手選擇」問題。具體到預言機的場景中,由於預言機更新價格存在延遲,Searcher可以透過監控鏈上價格更新的時間差,主動選擇一個對自己有利的時間節點進行交易,該時間節點的價格往往是過期但未來得及更新的非準確價格。這種行為導致了市場價格的不公平,使得searcher能夠利用資訊不對稱來獲取無風險利潤,但損害了其他市場參與者的利益。
也就是說,在拉取式預言機中,價格延遲導致的套利攻擊仍然存在。在Pyth 的文檔中,提出了透過「staleness check」來防止這種攻擊。「Staleness check」 是一種用於確保在交易中使用的資料或價格資訊即時性的機制。
具體來說,staleness check會驗證所使用的價格資料是否在一個合理的時間窗口內生成,以防止交易者利用過時的價格資訊進行交易,從而減少套利和不公平的交易行為。
但具體實施中,確定最佳時間閾值是一件很難的事情。我們可以重新看一下先前的例子來理解staleness check,假設永續合約交易所使用Pyth的ETH/USD價格來源,並設定了20秒的staleness check閾值,這意味著Pyth價格的時間戳與執行下游交易的區塊時間戳記只能有20秒的時間差。如果超出了這個時間範圍,價格將被視為過時,無法使用。這種設計旨在防止利用過期價格進行套利。
縮短staleness check的時間閾值看起來是一個不錯的解決方案,但這樣可能導致在區塊時間不確定的網路上出現交易回滾,從而影響用戶體驗。 Pyth的價格源依賴跨鏈橋,仍用Wormhole舉例,其Guardian節點被稱為“Wormhole Keeper”,預言機必須有足夠的緩衝時間來讓Wormhole Keeper確認價格,並讓目標鏈處理交易並將其記錄在區塊中。
預言機訂單流拍賣(OFA)
為因應MEV帶來的負面影響,一種新的解決方案-預言機專屬訂單流拍賣(OFA)逐漸興起,效果十分顯著。OFA是一種通用的第三方拍賣服務,允許預言機將最新的餵價資訊蓋上簽名,發送至鏈下拍賣平台,由別人代替自己把餵價資訊提交到鏈上。這類更新餵價的操作一旦上鍊,就會導致MEV機會出現,所以MEV Searcher會監聽預言機提交到拍賣平台的餵價訊息,充分利用這裡面的機會。
Searcher往往願意競標,申請代替預言機把餵價消息推送到鏈上,然後Searcher趁此機會建構MEV交易,讓自己成為從中獲利最大者。當然,Searcher要參與競標才行,競拍過程中他會付出一些資金,這些資金會由拍賣平台分發給預言機或更多人,這就相當於把MEV玩家的獲利分發一部分給別人,以此緩解OEV問題。
OFA的具體流程如下:
1. 交易提交
所有待定交易流都會被路由到一個私有的OFA交易池,而不是直接傳送到鏈上。為確保公平,此交易池保持私密,僅供拍賣參與者存取。
2. 拍賣競標
交易池就是OFA進行拍賣的平台,Searcher在這裡參與競標,獲得執行訂單的權利。競標的價格是基於預期從訂單中可提取的價值,包括交易類型、當前gas 價格和預期的MEV 利潤等因素。
3. 選擇和執行
勝出的Searcher支付競標金額,取得交易執行權,他出於利己,會用能提取最大MEV的方式安排交易,並將交易提交到鏈上。
4. 收益分配
這個步驟是OFA的核心,Searcher為了獲得MEV機會,會付出額外的競標金額,該筆金額將存入智能合約中,並按照一定比例分配,補償給協議和用戶在OFA中損失的價值。
從數據來看,OFA對MEV和OEV問題的緩解非常顯著,此類方案的採用率呈現快速上升的趨勢,目前已有超過10%的以太坊交易透過私有管道(包括私有RPC和OFA)來進行。可以預見,OFA在未來的發展潛力很大。
但在實現通用的OFA方案時存在一個問題,即預言機無法預見更新是否會產生OEV,而如果沒有產生OEV,OFA將引入額外的延遲,因為預言機需要進行額外操作,將交易發送至拍賣平台中。另一方面,優化OEV並減少延遲還有一個最簡單的辦法,就是將所有預言機訂單流都交給一個主導的searcher,但這樣做顯然會帶來顯著的中心化風險,變相鼓勵租金提取、審查制度,最終使用戶的體驗被損害。
OFA透過拍賣價格更新不包括現有的基於規則的更新,後者更新仍然通過公共記憶體池。這樣的機制確保了預言機價格更新,以及隨之產生的任何額外收益都能保留在應用層內。同時,這種機制也提升了資料的顆粒度,讓searcher可以請求資料來源更新,而不必讓預言機節點承擔更頻繁更新的額外成本。
OFA在清算過程中效果特別理想,因為它能夠提供更精細的價格更新,最大化地返還給被清算的質押者的資本,減少協議支付給清算人的獎勵,並剔除競拍清算人的額外收益以回饋給用戶。
然而,OFA雖在某種程度上解決了搶跑交易和套利,但仍有一些問題尚未解決。在完全競爭和一價密封拍賣的情景下,拍賣應使得從搶跑交易中的額外收益接近於執行本次MEV操作所需的區塊空間成本,同時,價格更新的顆粒度增加也會減少套利機會的產生。
目前,要實現預言機專屬的OFA,可以選擇與第三方拍賣服務(如OEV-Share)集成,或直接將拍賣服務作為DeFi應用,讓其自行搭建。
API3使用基於Flashbots概念的OEV中繼器作為API,在進行拍賣時提供DoS保護服務。中繼器負責收集來自預言機的元交易,篩選並聚合searcher的競標,並在無信任的環境下分配收益。競標獲勝者需將競標金額轉移到協議控制的代理合約,之後中繼器提供的簽名資料會更新價格來源。
另一種選擇是協議不依賴中介,直接建構屬於自己的原生拍賣服務,以捕獲並剝離所有從OEV中提取的額外收益。 BBOX項目計劃將拍賣嵌入其清算機制中,以捕獲OEV並將其返還給應用和用戶。透過這種方式,協議能夠更好地進行價值分配,並減少對第三方服務的依賴,進而增強系統的自主性,並提高使用者的效益。
運行中心化節點或Keeper
在Web3早期,透過預言機驅動的永續合約交易所為應對OEV問題,提出了一種運行中心化Keeper(專門用於交易的節點或實體)網絡的想法,核心思想是從中心化交易所等第三方來源匯總價格,並使用Chainlink資料饋送作為備用。這種模式由GMX v1推廣,並在許多後續分支中得到應用。其主要價值在於透過單一營運者管理的Keeper網絡,完全防止了搶跑問題。
當然,這種方法有明顯的中心化風險。中心化的Keeper系統可以決定執行價格,而不進行價格來源的驗證。 GMX v1中的Keeper並非鏈上透明機制,而是由其團隊地址在中心化伺服器上運行的程序,無法驗證執行價格的真實性和來源。
對於OEV的提取,搜尋者會透過監控記憶體池內的“預言機資料更新指令”,透過MEV基礎設施,將預言機資料的更新交易指令,與自己發起的交易指令捆綁在一起,最終執行以獲取收益。當然,對於套利和清算交易,OEV Searcher只需要監控鏈上價格與鏈下價格的偏差,最終透過MEV基礎設施,確保自己發起的交易先上鍊執行即可。
無論搜尋者使用哪種流程,我們可以看到OEV的收益被分配給了MEV 基礎設施和OEV 的搜尋者,而「被捕獲」 OEV 價值的協議,並沒有獲取其應有的收益。 (根據某些數據,OEV 問題先前曾導致GMX 平台的利潤被抽走差不多10%)為了解決這個問題,貢獻了大量OEV價值、身為鏈上衍生性商品交易平台的GMX採用了一種簡單的方式:讓自己指定的一些人來捕捉OEV價值,然後把這些OEV價值盡可能返還給GMX平台。
對此,GMX引入了Rook和白名單。簡單來說,GMX的預言機更新透過Rook執行,而Rook會基於目前的市場狀況,進行OEV的提取操作以獲取市場內的OEV。這些OEV的80%會被回饋給GMX協議。
總結下來就是,GMX透過白名單,賦予Rook們更新預言機的權利,透過Rook提取OEV以避免被其他搜尋者提取OEV,同時將OEV 的80%回饋給GMX系統。這個套路其實有點簡單粗暴。
針對上述單一營運商Keeper網路所引發的中心化風險,可以引入第三方服務供應商來建立更為去中心化的自動化網絡,代表性的產品是Chainlink Automation。 Chainlink Automation與Chainlink的新型拉取式、低延遲預言機服務Chainlink Data Streams搭配使用,在2023年底宣布進入封閉測試,但其已在GMX v2投入了實際應用。
我們可以參考GMX v2系統的邏輯,探究如何將Chainlink Data Streams 設計融入是實際的DeFi應用。
從整體來看,Chainlink Data Streams由三個主要元件構成:資料DON、自動化DON和鏈上驗證合約。資料DON是一個鏈下資料網絡,其進行資料維護與聚合的架構類似Pythnet。自動化DON則是由與資料DON相同的節點運營商維護的Keeper網絡,用於將資料DON中的價格拉取至鏈上。最後,鏈上驗證合約用於確保鏈下簽名的正確性。
上圖展示了呼叫開放交易功能的流程,其中自動化DON負責從資料DON取得價格並更新鏈上儲存。目前,只有白名單使用者有直接查詢資料DON的權限,因此協定可以選擇將維護任務交給自動化DON處理,或自行執行Keeper。然而,產品隨著開發週期的推進,預計將逐步轉變為無許可結構。
在安全層面,依賴自動化DON 與單獨使用資料DON 的信任假設相同,這相對於單一Keeper的設計是非常明顯的進步。然而,將價格更新的權利交給自動化DON,也意味著OEV將專屬於Keeper網路中的節點,這種信任假設類似於以太坊對Lido節點營運商的態度。 Lido的節點業者往往是具有較大社會聲譽的機構,它們佔據著以太坊質押市場的較大份額,以太坊利用社會共識的掣肘,防止Lido串通為卡特爾,形成壟斷效應。
拉取式預言機:延遲結算
去中心化永續合約交易所Synthetix v2中引入了Pyth價格數據用於結算合約,這是一個非常大的改進。用戶的訂單可以在Chainlink 或Pyth的價格中二選其一,只要價格偏差未超過預定閾值且時間戳通過staleness check。然而,單純改為拉取式預言機並不能解決所有OEV的相關問題。為了因應搶跑交易,許多DeFi協議引入了「last look」定價機制,這種延遲訂單將用戶的市場訂單分為兩個部分:
1.用戶提交開立市場訂單的「intent」到鏈上,附帶訂單參數如大小、槓桿、抵押品和滑點容忍度,同時支付額外的keeper 費用。
2.keeper 接收訂單,請求最新的Pyth 價格數據,並在交易中調用Synthetix 執行合約。合約檢查預先定義的參數,若全部通過,訂單執行,鏈上價格儲存更新,頭寸開啟。 keeper 領取用戶支付的費用以補償其使用的gas 費和網路維護成本。
這種方式避免了對用戶不利的價格被提交到鏈上,有效地解決了協議中的搶跑和套利問題。然而,這種設計在用戶體驗上做出了一定取捨:執行此類市場訂單需要透過兩筆交易完成,用戶除了要支付gas費外,還要支付更新預言機鏈上儲存的費用。
先前,更新預言機鏈上儲存的費用是固定的2美元,但最近改為基於Optimism gas預言機+溢價的動態費用,根據Layer2的活躍狀況而變化。總之,這種方案在提高流動性提供者利潤的同時,也犧牲了交易者一定的使用者體驗。
未來的OEV解決方案思路展望
拉取式預言機:樂觀結算機制
隨著延遲訂單為用戶引入額外的費用,且這些費用與L2的DA費用成比例增加,有人構思了一種作為替代品的訂單結算模型,稱為“樂觀結算”,旨在降低用戶成本,同時保持去中心化和協定安全性。顧名思義,樂觀結算機制允許交易者以原子方式執行市場交易,系統樂觀地接受所有價格,並提供一個時間窗口,讓searcher提交證明以揭示訂單是否存在作惡意圖。
本文將概述這一想法的幾個迭代版本、在過程中展示其思考過程,並簡述思路仍待解決的問題。
最初設想的是用戶在開啟市價單時,透過parsePriceFeedUpdates提交價格,然後允許用戶或任何第三方提交結算交易,並使用價格數據完成交易確認。結算時,如果兩個價格之間存在負向差異,則差異將作為滑點作用於使用者的盈虧。
這種方法的優點在於降低了用戶的成本負擔並減輕了搶跑交易的風險。然而,該方法同時也引入了兩步驟結算過程,這是我們在Synthetix延遲結算模型中發現的缺點。額外的結算交易在大多數情況下可能是多餘的,尤其是在下單和結算期間波動不超過系統定義的搶跑閾值時更加顯著。
另一種規避上述問題的解決方案是允許系統樂觀地接受訂單,然後開放一個無需許可的挑戰期。在此期間,任何人都可以提交證據證明價格時間戳記和區塊時間戳記之間的價格偏差,存在可獲利的搶跑機會。樂觀機制透過引入挑戰期,有效地減少了系統中潛在的套利行為,並增加了交易過程的透明度和公正性。
具體過程如下:
1. 使用者以當前市場價格建立市價訂單,並將此價格以及嵌入的Pyth 價格資料一起作為訂單建立交易發送。
2. 智能合約樂觀地驗證並儲存這些資訊。
3. 訂單確認上鍊後,會有一個挑戰期,期間Searcher可以提交交易者有作惡意圖的證明。此證明需包含交易者使用過去價格意圖套利的證據。如果系統接受了該證明,價差將作為滑點應用於交易者的執行價格,原本的OEV收益將作為獎勵給予Keeper。
4. 挑戰期結束後,所有價格將被系統視為有效。
這種樂觀模式有兩個優點:首先,它降低了用戶的成本負擔,用戶只需在同一筆交易中支付訂單創建和預言機更新的gas費,無需額外交易結算費用。其次,它抑制了搶跑交易,並在確保健康的keeper網路下,透過經濟激勵機制來提交系統被搶跑的證明,從而保護了流動性池的完整性。
這種想法固然有較大潛力,但若想落地,仍存在一些需要解決的開放性問題:
定義’對手選擇’問題:即係統如何區分因網路延遲提交過期價格的用戶與故意利用延遲套利的用戶。一個初步想法是在staleness check的時間內(如15秒)測量波動率,如果波動率超過淨執行費用,則該訂單可能被標記為潛在套利行為。
設定合適的挑戰期:考慮到作惡訂單流的開放時間可能很短,keeper應有一個合理的時間窗口來挑戰價格。雖然大量驗證可能更省Gas,但訂單流的不可預測性導致難以保證所有價格資料都能及時驗證或挑戰。
Keeper的經濟誘因:提交驗證的Gas成本不低,為了確保Keeper對系統產生正面的作用,提交驗證的獎勵必須大於提交成本。然而,訂單規模的不同可能使這一假設未必在所有情況下都成立。
是否需要為平倉訂單建立類似的機制?如果需要的話,可能會對使用者體驗造成哪些影響?
確保使用者不受「不合理」滑點的影響:在市場閃崩的情況下,訂單創建與鏈上確認之間可能出現巨大的價格差異,需要某種止損措施或熔斷機制。這裡我們考慮使用Pyth提供的EMA價格來確保價格源穩定性。
ZK協處理器-資料消費的另一種形式
另一個值得探索的方向是ZK協處理器的使用。這些處理器旨在鏈下處理複雜計算,並能夠存取鏈上狀態,同時提供證明,確保計算結果可以在無許可的情況下驗證。像Axiom這樣的項目允許合約查詢歷史區塊鏈數據,在鏈下執行計算,並提交ZK證明,確保結果是基於有效鏈上數據正確計算的。協處理器使建立一個基於多個DeFi原生流動性來源(如Uniswap+Curve)的抗操縱自訂TWAP預言機成為了可能。
與傳統預言機相比,ZK協處理器將擴大可安全提供給dApp的資料範圍。目前傳統預言機主要提供最新的資產價格資料(如Pyth提供的EMA價格)。透過ZK協處理器,應用程式可以引入更多基於歷史區塊鏈資料的業務邏輯,以提高協議安全性或增強用戶體驗。
然而,ZK協處理器仍處於開發的早期階段,會面臨一些瓶頸,例如:
處理大量區塊鏈數據時可能證明過程過長。
僅限於區塊鏈數據,無法解決與非Web3應用程式安全通訊的需求。
去預言機化-DeFi的未來?
一種新的想法認為,DeFi中的預言機依賴問題,可以透過設計一種從根本上去除外部價格數據需求的原語來解決,近期也出現了利用各種AMM LP代幣作為定價工具的設計。這基於一個核心理念:在恆定函數做市商中,LP部位代表了交易池中兩種資產的預設權重,交易遵循一個自動定價公式(如xy=k)。透過使用LP代幣,協議能夠直接獲取通常需要預言機才能提供的資訊,從而催生了無需預言機的解決方案。這類方案減輕了DeFi協定對預言機的依賴,有些專案正在沿著這個方向建立應用。
結論
價格數據仍然是當今許多去中心化應用的核心組件,透過預言機保護的總資產價值還在不斷增加,這也進一步證明了預言機在市場中的重要性。本文旨在引起人們對當前預言機額外收益(OEV)所造成相關風險的關注,並探討了推送式、拉取式以及使用AMM LPs或鏈下協處理器等替代設計方案的實現潛力。
聲明:本內容為作者獨立觀點,不代表0x财经 立場,且不構成投資建議,請謹慎對待,如需通報或加入交流群,請聯絡微信:VOICE-V。
來源:3 極客Web3