這項研究源於獲得可靠的鏈上價格信息的挑戰,這些價格信息既最大限度地安全,又反映了目標資產的當前現貨價格。我們特別關注 Prisma Finance 的抵押資產(wstETH、rETH、cbETH 和 sfrxETH)以及基於以太坊的流動質押衍生品(LSD)。其中一些資產缺乏 Chainlink 數據源(通常被認爲是可靠價格數據的黃金標準),從而影響了它們與 Prisma 平台的集成。
最新的 Curve Finance 穩定池實施包括一個內部池 Oracle,它計算指數移動平均線 (EMA) 以得出抗操縱的價格數據。盡管集成商已開始探索在其他 DeFi 應用中使用 Oracle,但 Oracle 主要用於確保 Curve 自己的 crvUSD 市場中的抵押品安全。
本報告的主要目標是確定 Curve Finance 的 Oracle 是否可以成爲 ETH LSD 代幣 Chainlink 的可靠替代品。本研究涉及對 Curve 價格預言機有效性的統計分析,將其波動性、準確性和整體性能與 Uniswap 參考現貨價格(假設爲鏈上準確價格)進行比較。
該分析分爲兩項相關研究:
經過分析,我們提供了 Oracle 的初步規格,根據分析結果,預計將改善 Oracle 價格偏差,同時注意保持 Oracle 的可靠性。所提出的解決方案可以作爲優化 Oracle 的其他研究的初始藍圖。
預言機的有效性是在 Prisma 使用預言機的特定環境中評估的:清算和贖回。 (另請注意,相同的預言機還用於向協議費用接收者和“代幣化穩定池”出售獲得的代幣,一旦啓動,其重要性將越來越大。)
Oracle 的表現對 Prisma 用戶具有重要影響,因爲套利者可能有機會從 Oracle 價格與現貨價格之間的偏差中獲利。確保在處理清算和贖回時使用最準確的價格反饋,而不犧牲定價來源的安全性,符合 Prisma 協議及其金庫存款人的最佳利益。
Prisma 中的兩個 Oracle 函數概述如下:
爲了保護 Prisma 免於產生壞帳,即債務頭寸超過其抵押品的價值,LiquidationManager合約在所有活躍的 TroveManager(Prisma 金庫)上執行清算邏輯。清算可以通過三種方式之一觸發,具體取決於目標帳戶的抵押比率和系統範圍的抵押比率。
當 ETH 或 ETH LSD 經歷大幅價格波動(尤其是下跌)時,Prisma 清算的可能性在市場波動較大的情況下會增加。雖然 Oracle 故障或操縱可能隨時影響協議,但在最重要的時候,Oracle 故障的風險可能會增加。抵押資產可能會因 Gas 費用飆升而無法及時更新價格,或者 Oracle 的定價方法無法充分跟蹤波動性加劇而被錯誤定價。壞帳有可能會增加,必須在活躍的寶庫中分配,或者借款人會被不公平地清算(在預言機錯誤報告的價格低於公平市場價格的情況下)。
套利者始終可以贖回,他們可以選擇將 1 mkUSD 贖回價值 1 美元的抵押品(+ 動態贖回費用),從系統中抵押品比率最低的寶庫開始。當 mkUSD 價格跌破 1 美元時,這有助於加強其錨定匯率。贖回過程減少了目標寶藏的抵押品風險並增加了其抵押品比率。執行贖回的一方支付稱爲贖回費的費用。贖回費用的範圍爲每個 TroveManager,並且是贖回費用下限 + 的總和baseRate。存儲在 TroveManager 中的變量與已贖回的 mkUSD 總供應量的比例成比例增加,並隨着時間的推移線性減少。baseRate這種動態費用調節了可以盈利的贖回率。
雖然從歷史上看,Prisma 上的清算很少發生,但贖回卻很常見,對於 Oracle 來說值得特別考慮。 MEV 機器人正在積極尋找此類機會,通過閃電貸快速獲利。
除了強制贖回自己的寶藏帶來的不便之外,由於預言機與現貨價格的偏差,用戶可能會經歷一些價值提取。錯誤定價可能會導致用戶損失比所需更多的資產,特別是當預言機報告的價格低於公平市場價值時。另一方面,預言機報告的價格高於公平市場價格可能會阻止贖回的發生,從而否定了贖回機制強制執行 mkUSD 掛鉤底價的目的。
下面簡要介紹了 Prisma 上 Oracle 喂價服務的主要候選者。
Chainlink 是一個去中心化的 Oracle 網路,它聚合了廣泛的市場數據源,並將這些數據連接到智能合約。其結構依賴於獨立的節點運營商從各種交易所和市場數據聚合器 API 獲取和傳遞數據,從而最大限度地減少單點故障並增強安全性。通過在傳輸之前驗證數據準確性的加密方法和共識機制來確保數據完整性。其方法涉及成交量加權資產定價(VWAP),以匯總最能代表資產現貨價格的公平市場價值。
節點網路定期(心跳)或按價格偏差閾值將價格推送到鏈上。由於主網上高昂的 Gas 費用,這一限制可能會使價格更新變得昂貴,並可能導致延遲增加,從而降低 Oracle 性能。維護此類 Oracle 的成本可能很高,尤其是在波動性較大的時期,及時更新 Oracle 至關重要。
最近的 Curve 池實現(StableSwap 和 CryptoSwap 池)都包含由 getter 函數公開的 EMA 價格計算price_oracle()。這些礦池不依賴外部預言機,而是根據自己的交易活動在內部計算相對於礦池索引 0 中的代幣的資產價格。 EMA通過平滑定價調整來增加操縱成本,在操縱阻力和價格偏離現貨之間取得平衡。每個池都有一個ma_exp_time可通過 Curve DAO 投票進行配置的池。
正如Curve Oracle 文檔中披露的那樣,EMA Oracle 一直在積極開發中:
如果您希望使用 Curve 的“價格預言機”功能或任何價格預言機在您正在構建的去中心化應用程式中提供鏈上定價數據,我們建議您格外謹慎。
來源:Curve 資源
不同的池實現修改了 EMA Oracle 代碼的版本,因此集成商必須了解目標池的 Oracle 實現。
2023 年 11 月,在 stableswap-ng 池的部署實施中發現了一個影響池 Oracle 的錯誤。該錯誤是在池實施部署後不久由 yAudit 在二次審計中發現的。這促使有人提議升級實施並棄用少數受影響的池。沒有資金面臨風險,但該事件突顯了 Curve 礦池預言機的積極開發,盡管經過廣泛審計,但礦池之間可能存在不一致,並且可能繼續存在使預言機容易受到操縱或不準確的錯誤。
本報告的第 3 部分是對 wstETH TroveManager 贖回的分析。由於贖回對 Prisma 用戶具有重要影響,本節介紹了有關歷史贖回的觀察結果,這些觀察結果將在與替代 Curve EMA Oracle 的比較分析中進行評估。
在wstETH TroveManager上查詢贖回事件顯示總共有 200 多筆贖回交易,其中 190 筆被識別爲 BOT 交易(用於識別交易是否由 BOT 執行的方法將在同一部分稍後解釋)。以下是顯示這些交易隨時間變化的頻率的可視化。
來源:Dune query_3402461
經常兌換 mkUSD 的 BOT 只有 3 個:
來源:Dune query_3402461
每個 BOT 都遵循類似的獲取 mkUSD 和贖回的一般流程。以下是其中一項 BOT 交易,揭示了一些有用的見解:
來源:Phalcon Tx Explorer
BOT tx 模式可細分如下:
MEV 盈利能力取決於步驟2、3和5中的價格差異。
2:隨着 mkUSD 價格下降,贖回盈利能力增加。
3:隨着動態贖回費用作爲最近贖回數量和贖回後時間的函數而下降,贖回盈利能力增加
5:隨着抵押資產(例如 stETH)交換滑點的增加,贖回盈利能力下降。 stETH 等 LSD 可以直接兌換爲基礎 ETH,但這個過程需要等待期,因此二級市場的流動性至關重要。
Prisma 採用了一種機制,通過動態費用限制從 mkUSD 到 wstETH 贖回的盈利機會。第3步涉及動態費用,以阻止頻繁和過度的贖回。盡管有這種機制,仍然可能會因 Oracle 錯誤定價而進行贖回,以提取 MEV。用於 mkUSD 贖回的 Oracle 報價錯誤可能會爲寶庫所有者提供次優的抵押品匯率,從而導致負面的用戶體驗。
一項更改 Prisma Oracle feed 定價 stETH 的提案已獲得通過。最初,Prisma 使用 Chainlink stETH/USD 預言機,wstETH TroveManager 的偏差閾值爲 1%。結果發現,改用 Chainlink stETH/ETH 和 ETH/USD 預言機組合可以得到改善,每個預言機的偏差閾值爲 0.5%。
請參閱下面新 Oracle 與舊 Oracle 15 塊分辨率的偏差:
資料來源:@wavey 繪制的圖表
曾觀察到,當 mkUSD 交易價格低於其錨定匯率時,由於 Oracle 偏差超過 1%,導致出現過度贖回。在這些情況下,我們發現動態費用不足以阻止由於定價偏差而導致的過度贖回。請參閱下面針對兌換事件的兌換費用調整。
資料來源:@wavey 繪制的圖表
這些兌換可能會給 Prisma 用戶帶來間接費用,當他們的寶藏被兌換時,他們可能會收到不利的利率。 Wavey 的分析表明,與上述數據中驗證的組合預言機相比,stETH/USD 預言機更容易出現偏差。出現了超過 1.2% 的短暫偏差,爲 MEV 機器人的利用創造了機會。
更改 Oracle 的提案 ( PIP-004 ) 已於 2023 年 11 月 17 日下午 735 +UTC 與此交易一起執行。根據下面的 mkUSD 價格圖表和提案執行日期,可以觀察到提案執行後,USDC 中的 mkUSD 實現價格較低。由於預言機改進而導致的贖回盈利能力下降可能導致掛鉤強度下降。
來源:Dune query_5685458
可能還應該考慮其他影響因素,包括協議利率模型的限制、mkUSD 的用例以及激勵措施錯位。另一項限制贖回的重要提案是1 月 31 日執行的PIP-019。該提案將所有 TroveManager 的基本贖回費用提高到 1%-1.5%,這降低了 mkUSD 的錨定彈性,但代價是降低了 Prisma trove 所有者的贖回風險。
該分析旨在確定已實施的 Prisma 預言機的性能,並使用歷史數據評估替代鏈上 Curve EMA 預言機的假設性能。研究結果將爲鏈下預言機與鏈上預言機的行爲提供初步見解,以便在後續研究中進行更細致的評估。
此分析的目的是確定當前的 Oracle 是否提供了性能最佳的解決方案,或者是否可以通過利用 Curve EMA 池 Oracle 實施鏈上或混合解決方案來進行改進。
該分析將特別關注 stETH,因爲它是最常用的 LSD,擁有成熟的 Chainlink 價格源和深度流動性的 Curve 池。對 Prisma 上列出的其他抵押品進行了分析,報告後的附錄 B 中提供了可供參考的結果。
比較分析涉及評估受試數據與參考數據集的吻合程度。在這種情況下,考慮兩個數據集:感興趣的數據(受試數據)和參考數據集。雖然我們預計受測數據應密切跟蹤參考數據,但可能會出現偏差。
爲了量化對齊,我們檢查殘差,這本質上是受試數據和參考數據之間的差異。殘差分析旨在揭示這些差異的模式或趨勢。
在分析殘差(與參考值的偏差)時,會根據殘差的標準差進行觀察。標準差 (SD) 是一種統計度量,用於量化一組值中的變異或離散程度。它提供了數據集中的值與均值(平均值)的分布程度的指示。低標準差意味着數據點傾向於接近平均值,而高標準差則表明數據點分布在更廣泛的範圍內。
在我們的例子中,接近 0 的均值是可取的,因爲它表明所提供的價格並未高估或低估參考價格。然而,接近或等於 0 且標準差相對較高的均值表明波動可能很大,這是不希望的,因爲這相當於嚴重的錯誤定價。均值爲零且標準差最小的預言機喂價是理想的結果,表明喂價高度準確地跟蹤現貨價格。
爲了監控和評估鏈上活動的預言機價格的準確性,我們採用來自流動性最強的交易目的地(不包括 Curve)的報價作爲殘差分析的參考。具體來說,從 Uniswap 的 LSD/ETH 貨幣對獲得的報價是這種情況下的主要參考點。
我們的分析包括兩種導出 stETH Chainlink 價格的策略。這樣做是因爲發現原始 Chainlink stETH/USD feed 的偏差比使用 stETH/ETH + ETH/USD 的偏差更高。根據治理提案對預言機進行了更新。此後,涉及 ETH 中改進的 stETH/ETH Chainlink 價格的分析被稱爲stETHv1,而 stETH/USD + ETH/USD 組合飼料(復制原始 stETH 預言機性能,標準化爲 ETH)被稱爲stETHv2。
爲了分析的目的,從所有各自的資產中獲取了 2023 年最後一個季度的數據(從區塊 18331000 到區塊 18931000,以 250 個區塊作爲數據集的分辨率)。這將爲所有資產創建一個包含 2401 個數據點的數據集。
主要考慮的資產是 stETH,因爲它是 Prisma 目前接受的抵押品類型,既有 Chainlink feed 又有 Curve StableSwap-ng 池可供參考(注:請參閱附錄 B 對 rETH 和 cbETH 的分析,其中使用了較舊的 CryptoSwap 池實現)。所有數據都是通過查詢指定區塊範圍的價格來獲取的。
Oracle 價格通過以下來源進行分析:
曲線資金池
Chainlink 價格反饋
作爲現貨價格參考代理的 Uniswap 礦池地址如下:
Uniswap 現貨價格
爲了將 LSD 標準化爲其基礎 ETH,使用內部 LSD/ETH 匯率:
內部 LSD/ETH 匯率
在本節中,我們將 Chainlink stETH 價格源與 Curve 的歷史準確性進行比較。
Chainlink stETHv1 Feed 與 Curve
Chainlink:stETH/ETH feed
Curve:stETH/ETH 礦池
以下是來自 Chainlink 和 Curve 的 stETH 價格的直接比較。由於 Chainlink stETH/ETH 的心跳週期爲 24 小時,因此每隔幾個區塊價格就會波動一次。與 Curve 相比,在 Chainlink feed 中可以輕鬆觀察到波動(在 Chainlink stETH/USD feed 中可視化效果更好),因爲 Curve 使用 10 分鍾的 EMA 時間 ( ma_exp_time ) 來得出其價格。
如果我們從 Chainlink 的價格中減去 Curve 的價格,我們就會得到殘差,如下所示:
偏差值的平均值爲~-0.000305。
這裏可以得出的一個重要觀察結果是,與 Chainlink 相比,Curve Oracle 略微高估了價格數據。
Chainlink stETHv2 與 Curve
Chainlink:stETH/USD feed / ETH/USD feed
Curve:stETH/ETH 池
以下是來自標準化爲 ETH(stETH/USD 和 ETH/USD)的替代 Chainlink feed 的價格與 stETH Curve 的價格比較。由於 Chainlink stETH/USD 的偏差閾值爲 1%(相比之下,stETH/ETH feed 中的偏差閾值爲 0.5%),因此價格在錨定價格周圍表現出更大的偏差。
正如之前所觀察到的,與 Curve 相比,Chainlink 的 stETH/USD 價格波動更加明顯。
偏差值的平均值爲~-0.000171。
根據規模,與 stETH/ETH 相比,該 feed 的殘差更大,即波動幅度更大。
在本節中,我們將 Chainlink stETH 價格源的歷史準確性與 Uniswap 參考現貨價格進行比較。
假設 UniswapV3 池價格數據是現貨價格的可靠代理,我們可以比較之前獲得的基準數據,以檢查 Chainlink Oracle feed 與參考值的接近程度。
Uniswap Spot 與 Chainlink stETHv1
Chainlink:stETH/ETH feed
Uniswap:wstETH/ETH 礦池/ wstETH/stETH 內部匯率
以下是 Uniswap 現貨價格與 Chainlink stETH/ETH 之間的實際偏差:
殘差平均值 = 0.000415
價格差異的標準差 = 0.000601
Uniswap Spot 與 Chainlink stETHv2
Chainlink:stETH/USD feed / ETH/USD feed
Uniswap:wstETH/ETH 池/ wstETH/stETH 內部匯率
以下是 Uniswap stETH 和 Chainlink stETH 之間的實際偏差(stETH/USD):
價差平均值 = 0.000281
價差標準差 = 0.002747
這裏將 Chainlink stETHv1(即 stETH/ETH)和 stETH v2(即 stETH/USD)與 Uniswap 數據進行比較,結果表明 stETHv2 偏差遠大於 stETHv1。
當預言機從 stETH/USD 切換到 stETH/ETH + ETH/USD 以減少報價偏差時, Prisma 治理提案 ( PIP-004 )中也出現了同樣的觀察結果。
在本節中,我們將 stETH Curve Oracle 的歷史準確性與 Uniswap 參考現貨價格進行比較。假設 UniswapV3 池價格數據是現貨價格的可靠代理,我們可以比較之前獲得的基準數據,以檢查 Curve Oracle feed 與參考值的接近程度。
Uniswap Spot vs Curve
曲線:stETH/ETH 礦池
Uniswap:wstETH/ETH 礦池/ wstETH/stETH 內部匯率
基於與上面類似的殘差分析,我們得到以下指標與之前設置的基準進行比較:
價格差異的平均值 = 0.000110。
價格差異的標準差 = 0.000141。
據觀察,Curve 報告的平均價格略低於 Uniswap 現貨,標準差顯着低於 Chainlink 的任一來源。
在比較這些指標時,我們發現,price_oracle當參考 Uniswap 數據作爲現貨價格的代理時,Chainlink 數據的偏差明顯大於曲線。
由於上述觀察是根據各個價格來源的偏差得出的,因此 Curve Oracle feed 可能顯示正偏差,而 Chainlink feed 顯示負偏差,反之亦然。這種情況完全被否定,因爲 Chainlink feeds 和 Curve Oracle 的偏差範圍比 Uniswap & Chainlink 和 Uniswap & Curve 的偏差範圍要小。
下表顯示了對收集的數據進行的殘差分析。殘差平均值乘以 100 得出目標資產與參考的平均偏差百分比(以美元計,與以美元計價的 ETH 價格相比)。
下表直接比較了 Chainlink 和 Curve 與每種資產的 Uniswap 參考的平均值和標準差的相對表現。在所有情況下,Curve 均表現出較低的平均值和標準差值。精度倍數顯示每個觀測值的相對精度的大小。
這裏的主要要點如下:
該分析旨在將wstETH TroveManager中贖回事件的實現價格與替代鏈上預言機使用歷史數據報價的假設價格進行比較。研究結果將爲鏈下預言機與鏈上預言機的行爲提供初步見解,以便在後續研究中進行更細致的評估。
此分析的目的是確定當前的 Oracle 是否在特定的贖回環境中提供了性能最佳的解決方案,或者是否可以通過實施鏈上或混合解決方案、利用 Curve EMA 池 Oracle 來進行改進。
該分析將特別關注 stETH,因爲它是最常用的 LSD,擁有成熟的 Chainlink 價格源和深度流動性的 Curve 池。本研究匯總了所有贖回事件,將已實現的 stETH 預言機價格與幾種替代預言機價格進行比較,以美元定價,並採用 Curve stETH/ETH 預言機價格。
對於此分析,實現的 stETH 價格是通過將贖回的 mkUSD 數量除以 Trove 管理器以 wstETH 形式損失的 stETH 數量來計算的。爲了確定 stETH 數量,我們需要贖回中收到的 wstETH + 作爲費用花費的 wstETH,並將其轉換爲 stETH。如果任何替代源爲贖回者提供的利潤持續較低,我們可以說它們的 MEV 表現優於實際價格。
wstETH TroveManager用於獲取 mkUSD 兌換時的所有交易哈希值。由贖回 mkUSD 的地址接收並銷毀 mkUSD 的交易被視爲 BOT 交易。兌換事件的詳細查詢可以在這裏找到:Dune query_3352919。該查詢對於從 BOT 交易中獲取所有數據起着重要作用。
Dune查詢用於識別獲取所有 tx 哈希值的 BOT 交易、mkUSD 贖回的已實現 wstETH 匯率以及贖回事件的區塊號。從查詢中獲得的區塊號用作查詢以下數據的輸入,這些數據用於將當前實現與 Curve stETH 喂價變化進行比較:
根據上述數據,我們可以構建 3 個使用 Curve Oracle stETH/ETH 價格的價格源,並將其與 ETH/USD 合並以得出 stETH/USD。經過此操作後,我們獲得了以下數據,可用於可視化:
上述數據給出了以美元計的 stETH 價格,可以根據所有 BOT 交易的已實現 stETH 價格進行分析。已實現的 stETH(以美元計)只是用於計算贖回時每 mkUSD 提供的 stETH 數量的 stETH 價格。
以下是 BOT 交易區塊的 4 個 stETH 價格源(上面討論的 1 個參考和 3 個替代方案)。已實現的喂價是來自已實施的價格預言機(即 Chainlink)的價格。這是與使用 Curve stETH/ETH 作爲核心的 3 個 feed 進行比較的。在這裏,較高的報價將導致兌換 mkUSD 的 stETH 價值減少,反之亦然。
根據上述信息,我們可以對從 mkUSD 贖回中收到的 stETH 相對金額進行建模,並根據現有預言機收到的實際金額進行標準化。下圖顯示了在收取費用之前從 mkUSD 獲得的 stETH,並對數據進行處理以消除異常值以改進可視化:
分析揭示了一個明顯的趨勢:當將 Curve stETH/ETH 與 Uniswap ETH/USDC 和 Chainlink ETH/USD 結合使用時,可用於 mkUSD 贖回的 stETH 數量減少。因此,每 mkUSD 贖回的 stETH 單位減少會導致 BOT 利潤下降。提供的可視化顯示了各種假設喂價下的 BOT 利潤與實際喂價的對比,不包括費用:
很明顯,與已實現的喂價相比,Curve stETH/ETH、Uniswap ETH/USDC 和 Chainlink ETH/USD 的組合降低了贖回盈利能力。
認識到完全依賴 Curve 預言機的固有風險,特別是在流動性低或流動性波動期間,所提出的解決方案戰略性地集成了 Chainlink 預言機,作爲出現偏差時的保障措施(即後備方案)。鑑於 Chainlink 提供錯誤數據的可能性可以忽略不計,它可以作爲可靠的後備選項。
該解決方案充當過濾器,同時考慮 Curve 和 Chainlink 價格。條件在函數內建立,充當開關。爲了設計這個條件,acceptable_range引入了概念。這個範圍代表了 Chainlink 的預言機和 Curve 預言機價格之間可接受的差異。當觀察到的差異超過此範圍時,就表明 Curve Oracle 數據中存在潛在偏差或操縱。在這種情況下,該功能通過支持更安全的 Chainlink 價格來防範潛在風險。相反,當差值在 範圍內時acceptable_range,該函數依賴於 Curve Oracle 的準確度和精確度。
值得注意的是,acceptable_range可以配置爲靜態或動態,具體取決於基礎資產(例如 ETH 和相關 LSD)的波動性。動態性質允許適應波動的市場條件,確保價格確定的彈性和響應機制。這種雙管齊下的策略最大限度地減少了對單一數據源的依賴,從而增強了定價機制的整體彈性和可靠性。
該解決方案引入了靜態方法acceptable_range來解決僅依賴 Curve Oracle 時的潛在漏洞。雖然 Curve Oracle 產生的價格比 Chainlink 更準確,但它可能容易受到操縱。 Chainlink 功能強大且經過考驗,被認爲是業內更安全的選擇。當 Curve Oracle 和 Chainlink 之間的差異超過固定值時,它acceptable_range用作切換到 Chainlink feed 的閾值。
從策略上來說,其acceptable_range接受的報價低於Chainlink 報價的± 1%。這與 Curve 和 Chainlink 之間的平均差相差近 3 個標準差(考慮到與之前的 stETH/USD feed 相比,改進的 stETH/ETH 和 ETH/USD feed)。
derived_price是旨在確定給定資產的最終報價的函數或機制的輸出,特別是在涉及 Curve Oracle 和 Chainlink Oracle 的場景中。
在所描述的解決方案中,該函數評估來自 Curve Oracle 和 Chainlink Oracle 的報價。根據觀察到的這兩個價格之間的差異以及它是否落在或超出預定義的accepted_range,該函數將輸出不同的派生價格。
以下是derived_price與之前顯示的其他價格源的比較:
BOT 利潤可以通過該衍生價格可視化(由於沒有偏差,該價格將完全等於 Curve stETH/ETH 和 CL stETH/ETH),如下所示:
分析總利潤可以揭示更大的情況。確定了六個異常值,並在過濾異常值之前和過濾之後計算每種情況的總利潤。
在減少 BOT 的可用利潤方面,Curve stETH/ETH 和 Uniswap ETH/USDC 表現最好。它derived_price與當前 stETH 的 Oracle 實現具有相同的利潤潛力,但限制了利潤,假設在分析的 189 筆交易中爲用戶節省了約 35.4 ETH。
由於鏈上活動嚴重依賴流動性最強的去中心化交易所的報價,而 MEV 機器人將 mkUSD 兌換成 LSD 也遵循相同的報價,因此報價(用於報價贖回的 Oracle 價格)的準確性至關重要重要性。
根據歷史數據,Curve 池 Oracle 價格比 Chainlink 的價格更接近參考(UniswapV3 價格數據)。數據表明,實施 Curve Oracle 將減少機器人的 MEV,並爲用戶兌換其寶藏提供更好的匯率。
將 Curve Oracle 用作獨立的 Oracle 可能很誘人,但 Curve 價格反饋的有效性取決於特定資產的流動性深度以及與池的交互。 Curve Oracle 和 Chainlink Oracle 的混合可用於匹配鏈上價格,同時保持使用 Chainlink Oracle 繼承的可靠性和廣泛的市場覆蓋範圍。
我們提出的混合 Oracle 解決方案評估標準差 (SD) 以生成derived_price.如果SD接近0,則表明遵循derived_price參考值,可以考慮。這確保了當 Curve Oracle 偏離預定義閾值時,解決方案動態切換到更安全的 Chainlink 源。由於該解決方案幾乎總是輸出 stETH 的 Curve 報價,因此假設 MEV 活動與使用 Curve stETH/ETH 相同,沒有回退。
附錄 A:數據處理腳本
用於生成本報告中的分析的腳本如下所示:
附錄 B:rETH/cbETH 殘差分析
其他圖表 rETH
Chainlink 與 Curve
Uniswap 與 Curve
Uniswap 與 Chainlink
檢查峯值 rETH
在觀察期間,rETH 曲線預言機價格出現了幾次峯值。有幾次,這導致預言機價格和現貨參考之間的價格偏差激增。下面是更詳細的圖表,顯示了幾次價格飆升期間的資金池比例/代幣流動性以及預言機價格的行爲。
start_block = 18824000
end_block = 18827000
interval_blocks = 100
礦池比例:
預言機價格:
start_block = 18850000
end_block = 18858000
interval_blocks = 100
礦池比例:
預言機價格:
start_block = 18880000
end_block = 18885000
interval_blocks = 100
礦池比例:
預言機價格:
其他圖表 cbETH
Chainlink 與 Curve
Uniswap 與 Curve
Uniswap 與 Chainlink
檢查峯值 cbETH
在觀察期間,cbETH 曲線預言機價格出現了幾次峯值。有幾次,這導致預言機價格和現貨參考之間的價格偏差激增。下面是更詳細的圖表,顯示了幾次價格飆升期間的資金池比例/代幣流動性以及預言機價格的行爲。
start_block = 18693500
end_block = 18696000
interval_blocks = 10
礦池比例:
預言機價格:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
礦池比例:
預言機價格:
start_block = 18800000
end_block = 18805000
interval_blocks = 10
礦池比例:
預言機價格:
本文轉載自[marsbit )],原文標題“Prisma 可選預言機比較分析”,著作權歸屬原作者[PrismaRisk],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。
這項研究源於獲得可靠的鏈上價格信息的挑戰,這些價格信息既最大限度地安全,又反映了目標資產的當前現貨價格。我們特別關注 Prisma Finance 的抵押資產(wstETH、rETH、cbETH 和 sfrxETH)以及基於以太坊的流動質押衍生品(LSD)。其中一些資產缺乏 Chainlink 數據源(通常被認爲是可靠價格數據的黃金標準),從而影響了它們與 Prisma 平台的集成。
最新的 Curve Finance 穩定池實施包括一個內部池 Oracle,它計算指數移動平均線 (EMA) 以得出抗操縱的價格數據。盡管集成商已開始探索在其他 DeFi 應用中使用 Oracle,但 Oracle 主要用於確保 Curve 自己的 crvUSD 市場中的抵押品安全。
本報告的主要目標是確定 Curve Finance 的 Oracle 是否可以成爲 ETH LSD 代幣 Chainlink 的可靠替代品。本研究涉及對 Curve 價格預言機有效性的統計分析,將其波動性、準確性和整體性能與 Uniswap 參考現貨價格(假設爲鏈上準確價格)進行比較。
該分析分爲兩項相關研究:
經過分析,我們提供了 Oracle 的初步規格,根據分析結果,預計將改善 Oracle 價格偏差,同時注意保持 Oracle 的可靠性。所提出的解決方案可以作爲優化 Oracle 的其他研究的初始藍圖。
預言機的有效性是在 Prisma 使用預言機的特定環境中評估的:清算和贖回。 (另請注意,相同的預言機還用於向協議費用接收者和“代幣化穩定池”出售獲得的代幣,一旦啓動,其重要性將越來越大。)
Oracle 的表現對 Prisma 用戶具有重要影響,因爲套利者可能有機會從 Oracle 價格與現貨價格之間的偏差中獲利。確保在處理清算和贖回時使用最準確的價格反饋,而不犧牲定價來源的安全性,符合 Prisma 協議及其金庫存款人的最佳利益。
Prisma 中的兩個 Oracle 函數概述如下:
爲了保護 Prisma 免於產生壞帳,即債務頭寸超過其抵押品的價值,LiquidationManager合約在所有活躍的 TroveManager(Prisma 金庫)上執行清算邏輯。清算可以通過三種方式之一觸發,具體取決於目標帳戶的抵押比率和系統範圍的抵押比率。
當 ETH 或 ETH LSD 經歷大幅價格波動(尤其是下跌)時,Prisma 清算的可能性在市場波動較大的情況下會增加。雖然 Oracle 故障或操縱可能隨時影響協議,但在最重要的時候,Oracle 故障的風險可能會增加。抵押資產可能會因 Gas 費用飆升而無法及時更新價格,或者 Oracle 的定價方法無法充分跟蹤波動性加劇而被錯誤定價。壞帳有可能會增加,必須在活躍的寶庫中分配,或者借款人會被不公平地清算(在預言機錯誤報告的價格低於公平市場價格的情況下)。
套利者始終可以贖回,他們可以選擇將 1 mkUSD 贖回價值 1 美元的抵押品(+ 動態贖回費用),從系統中抵押品比率最低的寶庫開始。當 mkUSD 價格跌破 1 美元時,這有助於加強其錨定匯率。贖回過程減少了目標寶藏的抵押品風險並增加了其抵押品比率。執行贖回的一方支付稱爲贖回費的費用。贖回費用的範圍爲每個 TroveManager,並且是贖回費用下限 + 的總和baseRate。存儲在 TroveManager 中的變量與已贖回的 mkUSD 總供應量的比例成比例增加,並隨着時間的推移線性減少。baseRate這種動態費用調節了可以盈利的贖回率。
雖然從歷史上看,Prisma 上的清算很少發生,但贖回卻很常見,對於 Oracle 來說值得特別考慮。 MEV 機器人正在積極尋找此類機會,通過閃電貸快速獲利。
除了強制贖回自己的寶藏帶來的不便之外,由於預言機與現貨價格的偏差,用戶可能會經歷一些價值提取。錯誤定價可能會導致用戶損失比所需更多的資產,特別是當預言機報告的價格低於公平市場價值時。另一方面,預言機報告的價格高於公平市場價格可能會阻止贖回的發生,從而否定了贖回機制強制執行 mkUSD 掛鉤底價的目的。
下面簡要介紹了 Prisma 上 Oracle 喂價服務的主要候選者。
Chainlink 是一個去中心化的 Oracle 網路,它聚合了廣泛的市場數據源,並將這些數據連接到智能合約。其結構依賴於獨立的節點運營商從各種交易所和市場數據聚合器 API 獲取和傳遞數據,從而最大限度地減少單點故障並增強安全性。通過在傳輸之前驗證數據準確性的加密方法和共識機制來確保數據完整性。其方法涉及成交量加權資產定價(VWAP),以匯總最能代表資產現貨價格的公平市場價值。
節點網路定期(心跳)或按價格偏差閾值將價格推送到鏈上。由於主網上高昂的 Gas 費用,這一限制可能會使價格更新變得昂貴,並可能導致延遲增加,從而降低 Oracle 性能。維護此類 Oracle 的成本可能很高,尤其是在波動性較大的時期,及時更新 Oracle 至關重要。
最近的 Curve 池實現(StableSwap 和 CryptoSwap 池)都包含由 getter 函數公開的 EMA 價格計算price_oracle()。這些礦池不依賴外部預言機,而是根據自己的交易活動在內部計算相對於礦池索引 0 中的代幣的資產價格。 EMA通過平滑定價調整來增加操縱成本,在操縱阻力和價格偏離現貨之間取得平衡。每個池都有一個ma_exp_time可通過 Curve DAO 投票進行配置的池。
正如Curve Oracle 文檔中披露的那樣,EMA Oracle 一直在積極開發中:
如果您希望使用 Curve 的“價格預言機”功能或任何價格預言機在您正在構建的去中心化應用程式中提供鏈上定價數據,我們建議您格外謹慎。
來源:Curve 資源
不同的池實現修改了 EMA Oracle 代碼的版本,因此集成商必須了解目標池的 Oracle 實現。
2023 年 11 月,在 stableswap-ng 池的部署實施中發現了一個影響池 Oracle 的錯誤。該錯誤是在池實施部署後不久由 yAudit 在二次審計中發現的。這促使有人提議升級實施並棄用少數受影響的池。沒有資金面臨風險,但該事件突顯了 Curve 礦池預言機的積極開發,盡管經過廣泛審計,但礦池之間可能存在不一致,並且可能繼續存在使預言機容易受到操縱或不準確的錯誤。
本報告的第 3 部分是對 wstETH TroveManager 贖回的分析。由於贖回對 Prisma 用戶具有重要影響,本節介紹了有關歷史贖回的觀察結果,這些觀察結果將在與替代 Curve EMA Oracle 的比較分析中進行評估。
在wstETH TroveManager上查詢贖回事件顯示總共有 200 多筆贖回交易,其中 190 筆被識別爲 BOT 交易(用於識別交易是否由 BOT 執行的方法將在同一部分稍後解釋)。以下是顯示這些交易隨時間變化的頻率的可視化。
來源:Dune query_3402461
經常兌換 mkUSD 的 BOT 只有 3 個:
來源:Dune query_3402461
每個 BOT 都遵循類似的獲取 mkUSD 和贖回的一般流程。以下是其中一項 BOT 交易,揭示了一些有用的見解:
來源:Phalcon Tx Explorer
BOT tx 模式可細分如下:
MEV 盈利能力取決於步驟2、3和5中的價格差異。
2:隨着 mkUSD 價格下降,贖回盈利能力增加。
3:隨着動態贖回費用作爲最近贖回數量和贖回後時間的函數而下降,贖回盈利能力增加
5:隨着抵押資產(例如 stETH)交換滑點的增加,贖回盈利能力下降。 stETH 等 LSD 可以直接兌換爲基礎 ETH,但這個過程需要等待期,因此二級市場的流動性至關重要。
Prisma 採用了一種機制,通過動態費用限制從 mkUSD 到 wstETH 贖回的盈利機會。第3步涉及動態費用,以阻止頻繁和過度的贖回。盡管有這種機制,仍然可能會因 Oracle 錯誤定價而進行贖回,以提取 MEV。用於 mkUSD 贖回的 Oracle 報價錯誤可能會爲寶庫所有者提供次優的抵押品匯率,從而導致負面的用戶體驗。
一項更改 Prisma Oracle feed 定價 stETH 的提案已獲得通過。最初,Prisma 使用 Chainlink stETH/USD 預言機,wstETH TroveManager 的偏差閾值爲 1%。結果發現,改用 Chainlink stETH/ETH 和 ETH/USD 預言機組合可以得到改善,每個預言機的偏差閾值爲 0.5%。
請參閱下面新 Oracle 與舊 Oracle 15 塊分辨率的偏差:
資料來源:@wavey 繪制的圖表
曾觀察到,當 mkUSD 交易價格低於其錨定匯率時,由於 Oracle 偏差超過 1%,導致出現過度贖回。在這些情況下,我們發現動態費用不足以阻止由於定價偏差而導致的過度贖回。請參閱下面針對兌換事件的兌換費用調整。
資料來源:@wavey 繪制的圖表
這些兌換可能會給 Prisma 用戶帶來間接費用,當他們的寶藏被兌換時,他們可能會收到不利的利率。 Wavey 的分析表明,與上述數據中驗證的組合預言機相比,stETH/USD 預言機更容易出現偏差。出現了超過 1.2% 的短暫偏差,爲 MEV 機器人的利用創造了機會。
更改 Oracle 的提案 ( PIP-004 ) 已於 2023 年 11 月 17 日下午 735 +UTC 與此交易一起執行。根據下面的 mkUSD 價格圖表和提案執行日期,可以觀察到提案執行後,USDC 中的 mkUSD 實現價格較低。由於預言機改進而導致的贖回盈利能力下降可能導致掛鉤強度下降。
來源:Dune query_5685458
可能還應該考慮其他影響因素,包括協議利率模型的限制、mkUSD 的用例以及激勵措施錯位。另一項限制贖回的重要提案是1 月 31 日執行的PIP-019。該提案將所有 TroveManager 的基本贖回費用提高到 1%-1.5%,這降低了 mkUSD 的錨定彈性,但代價是降低了 Prisma trove 所有者的贖回風險。
該分析旨在確定已實施的 Prisma 預言機的性能,並使用歷史數據評估替代鏈上 Curve EMA 預言機的假設性能。研究結果將爲鏈下預言機與鏈上預言機的行爲提供初步見解,以便在後續研究中進行更細致的評估。
此分析的目的是確定當前的 Oracle 是否提供了性能最佳的解決方案,或者是否可以通過利用 Curve EMA 池 Oracle 實施鏈上或混合解決方案來進行改進。
該分析將特別關注 stETH,因爲它是最常用的 LSD,擁有成熟的 Chainlink 價格源和深度流動性的 Curve 池。對 Prisma 上列出的其他抵押品進行了分析,報告後的附錄 B 中提供了可供參考的結果。
比較分析涉及評估受試數據與參考數據集的吻合程度。在這種情況下,考慮兩個數據集:感興趣的數據(受試數據)和參考數據集。雖然我們預計受測數據應密切跟蹤參考數據,但可能會出現偏差。
爲了量化對齊,我們檢查殘差,這本質上是受試數據和參考數據之間的差異。殘差分析旨在揭示這些差異的模式或趨勢。
在分析殘差(與參考值的偏差)時,會根據殘差的標準差進行觀察。標準差 (SD) 是一種統計度量,用於量化一組值中的變異或離散程度。它提供了數據集中的值與均值(平均值)的分布程度的指示。低標準差意味着數據點傾向於接近平均值,而高標準差則表明數據點分布在更廣泛的範圍內。
在我們的例子中,接近 0 的均值是可取的,因爲它表明所提供的價格並未高估或低估參考價格。然而,接近或等於 0 且標準差相對較高的均值表明波動可能很大,這是不希望的,因爲這相當於嚴重的錯誤定價。均值爲零且標準差最小的預言機喂價是理想的結果,表明喂價高度準確地跟蹤現貨價格。
爲了監控和評估鏈上活動的預言機價格的準確性,我們採用來自流動性最強的交易目的地(不包括 Curve)的報價作爲殘差分析的參考。具體來說,從 Uniswap 的 LSD/ETH 貨幣對獲得的報價是這種情況下的主要參考點。
我們的分析包括兩種導出 stETH Chainlink 價格的策略。這樣做是因爲發現原始 Chainlink stETH/USD feed 的偏差比使用 stETH/ETH + ETH/USD 的偏差更高。根據治理提案對預言機進行了更新。此後,涉及 ETH 中改進的 stETH/ETH Chainlink 價格的分析被稱爲stETHv1,而 stETH/USD + ETH/USD 組合飼料(復制原始 stETH 預言機性能,標準化爲 ETH)被稱爲stETHv2。
爲了分析的目的,從所有各自的資產中獲取了 2023 年最後一個季度的數據(從區塊 18331000 到區塊 18931000,以 250 個區塊作爲數據集的分辨率)。這將爲所有資產創建一個包含 2401 個數據點的數據集。
主要考慮的資產是 stETH,因爲它是 Prisma 目前接受的抵押品類型,既有 Chainlink feed 又有 Curve StableSwap-ng 池可供參考(注:請參閱附錄 B 對 rETH 和 cbETH 的分析,其中使用了較舊的 CryptoSwap 池實現)。所有數據都是通過查詢指定區塊範圍的價格來獲取的。
Oracle 價格通過以下來源進行分析:
曲線資金池
Chainlink 價格反饋
作爲現貨價格參考代理的 Uniswap 礦池地址如下:
Uniswap 現貨價格
爲了將 LSD 標準化爲其基礎 ETH,使用內部 LSD/ETH 匯率:
內部 LSD/ETH 匯率
在本節中,我們將 Chainlink stETH 價格源與 Curve 的歷史準確性進行比較。
Chainlink stETHv1 Feed 與 Curve
Chainlink:stETH/ETH feed
Curve:stETH/ETH 礦池
以下是來自 Chainlink 和 Curve 的 stETH 價格的直接比較。由於 Chainlink stETH/ETH 的心跳週期爲 24 小時,因此每隔幾個區塊價格就會波動一次。與 Curve 相比,在 Chainlink feed 中可以輕鬆觀察到波動(在 Chainlink stETH/USD feed 中可視化效果更好),因爲 Curve 使用 10 分鍾的 EMA 時間 ( ma_exp_time ) 來得出其價格。
如果我們從 Chainlink 的價格中減去 Curve 的價格,我們就會得到殘差,如下所示:
偏差值的平均值爲~-0.000305。
這裏可以得出的一個重要觀察結果是,與 Chainlink 相比,Curve Oracle 略微高估了價格數據。
Chainlink stETHv2 與 Curve
Chainlink:stETH/USD feed / ETH/USD feed
Curve:stETH/ETH 池
以下是來自標準化爲 ETH(stETH/USD 和 ETH/USD)的替代 Chainlink feed 的價格與 stETH Curve 的價格比較。由於 Chainlink stETH/USD 的偏差閾值爲 1%(相比之下,stETH/ETH feed 中的偏差閾值爲 0.5%),因此價格在錨定價格周圍表現出更大的偏差。
正如之前所觀察到的,與 Curve 相比,Chainlink 的 stETH/USD 價格波動更加明顯。
偏差值的平均值爲~-0.000171。
根據規模,與 stETH/ETH 相比,該 feed 的殘差更大,即波動幅度更大。
在本節中,我們將 Chainlink stETH 價格源的歷史準確性與 Uniswap 參考現貨價格進行比較。
假設 UniswapV3 池價格數據是現貨價格的可靠代理,我們可以比較之前獲得的基準數據,以檢查 Chainlink Oracle feed 與參考值的接近程度。
Uniswap Spot 與 Chainlink stETHv1
Chainlink:stETH/ETH feed
Uniswap:wstETH/ETH 礦池/ wstETH/stETH 內部匯率
以下是 Uniswap 現貨價格與 Chainlink stETH/ETH 之間的實際偏差:
殘差平均值 = 0.000415
價格差異的標準差 = 0.000601
Uniswap Spot 與 Chainlink stETHv2
Chainlink:stETH/USD feed / ETH/USD feed
Uniswap:wstETH/ETH 池/ wstETH/stETH 內部匯率
以下是 Uniswap stETH 和 Chainlink stETH 之間的實際偏差(stETH/USD):
價差平均值 = 0.000281
價差標準差 = 0.002747
這裏將 Chainlink stETHv1(即 stETH/ETH)和 stETH v2(即 stETH/USD)與 Uniswap 數據進行比較,結果表明 stETHv2 偏差遠大於 stETHv1。
當預言機從 stETH/USD 切換到 stETH/ETH + ETH/USD 以減少報價偏差時, Prisma 治理提案 ( PIP-004 )中也出現了同樣的觀察結果。
在本節中,我們將 stETH Curve Oracle 的歷史準確性與 Uniswap 參考現貨價格進行比較。假設 UniswapV3 池價格數據是現貨價格的可靠代理,我們可以比較之前獲得的基準數據,以檢查 Curve Oracle feed 與參考值的接近程度。
Uniswap Spot vs Curve
曲線:stETH/ETH 礦池
Uniswap:wstETH/ETH 礦池/ wstETH/stETH 內部匯率
基於與上面類似的殘差分析,我們得到以下指標與之前設置的基準進行比較:
價格差異的平均值 = 0.000110。
價格差異的標準差 = 0.000141。
據觀察,Curve 報告的平均價格略低於 Uniswap 現貨,標準差顯着低於 Chainlink 的任一來源。
在比較這些指標時,我們發現,price_oracle當參考 Uniswap 數據作爲現貨價格的代理時,Chainlink 數據的偏差明顯大於曲線。
由於上述觀察是根據各個價格來源的偏差得出的,因此 Curve Oracle feed 可能顯示正偏差,而 Chainlink feed 顯示負偏差,反之亦然。這種情況完全被否定,因爲 Chainlink feeds 和 Curve Oracle 的偏差範圍比 Uniswap & Chainlink 和 Uniswap & Curve 的偏差範圍要小。
下表顯示了對收集的數據進行的殘差分析。殘差平均值乘以 100 得出目標資產與參考的平均偏差百分比(以美元計,與以美元計價的 ETH 價格相比)。
下表直接比較了 Chainlink 和 Curve 與每種資產的 Uniswap 參考的平均值和標準差的相對表現。在所有情況下,Curve 均表現出較低的平均值和標準差值。精度倍數顯示每個觀測值的相對精度的大小。
這裏的主要要點如下:
該分析旨在將wstETH TroveManager中贖回事件的實現價格與替代鏈上預言機使用歷史數據報價的假設價格進行比較。研究結果將爲鏈下預言機與鏈上預言機的行爲提供初步見解,以便在後續研究中進行更細致的評估。
此分析的目的是確定當前的 Oracle 是否在特定的贖回環境中提供了性能最佳的解決方案,或者是否可以通過實施鏈上或混合解決方案、利用 Curve EMA 池 Oracle 來進行改進。
該分析將特別關注 stETH,因爲它是最常用的 LSD,擁有成熟的 Chainlink 價格源和深度流動性的 Curve 池。本研究匯總了所有贖回事件,將已實現的 stETH 預言機價格與幾種替代預言機價格進行比較,以美元定價,並採用 Curve stETH/ETH 預言機價格。
對於此分析,實現的 stETH 價格是通過將贖回的 mkUSD 數量除以 Trove 管理器以 wstETH 形式損失的 stETH 數量來計算的。爲了確定 stETH 數量,我們需要贖回中收到的 wstETH + 作爲費用花費的 wstETH,並將其轉換爲 stETH。如果任何替代源爲贖回者提供的利潤持續較低,我們可以說它們的 MEV 表現優於實際價格。
wstETH TroveManager用於獲取 mkUSD 兌換時的所有交易哈希值。由贖回 mkUSD 的地址接收並銷毀 mkUSD 的交易被視爲 BOT 交易。兌換事件的詳細查詢可以在這裏找到:Dune query_3352919。該查詢對於從 BOT 交易中獲取所有數據起着重要作用。
Dune查詢用於識別獲取所有 tx 哈希值的 BOT 交易、mkUSD 贖回的已實現 wstETH 匯率以及贖回事件的區塊號。從查詢中獲得的區塊號用作查詢以下數據的輸入,這些數據用於將當前實現與 Curve stETH 喂價變化進行比較:
根據上述數據,我們可以構建 3 個使用 Curve Oracle stETH/ETH 價格的價格源,並將其與 ETH/USD 合並以得出 stETH/USD。經過此操作後,我們獲得了以下數據,可用於可視化:
上述數據給出了以美元計的 stETH 價格,可以根據所有 BOT 交易的已實現 stETH 價格進行分析。已實現的 stETH(以美元計)只是用於計算贖回時每 mkUSD 提供的 stETH 數量的 stETH 價格。
以下是 BOT 交易區塊的 4 個 stETH 價格源(上面討論的 1 個參考和 3 個替代方案)。已實現的喂價是來自已實施的價格預言機(即 Chainlink)的價格。這是與使用 Curve stETH/ETH 作爲核心的 3 個 feed 進行比較的。在這裏,較高的報價將導致兌換 mkUSD 的 stETH 價值減少,反之亦然。
根據上述信息,我們可以對從 mkUSD 贖回中收到的 stETH 相對金額進行建模,並根據現有預言機收到的實際金額進行標準化。下圖顯示了在收取費用之前從 mkUSD 獲得的 stETH,並對數據進行處理以消除異常值以改進可視化:
分析揭示了一個明顯的趨勢:當將 Curve stETH/ETH 與 Uniswap ETH/USDC 和 Chainlink ETH/USD 結合使用時,可用於 mkUSD 贖回的 stETH 數量減少。因此,每 mkUSD 贖回的 stETH 單位減少會導致 BOT 利潤下降。提供的可視化顯示了各種假設喂價下的 BOT 利潤與實際喂價的對比,不包括費用:
很明顯,與已實現的喂價相比,Curve stETH/ETH、Uniswap ETH/USDC 和 Chainlink ETH/USD 的組合降低了贖回盈利能力。
認識到完全依賴 Curve 預言機的固有風險,特別是在流動性低或流動性波動期間,所提出的解決方案戰略性地集成了 Chainlink 預言機,作爲出現偏差時的保障措施(即後備方案)。鑑於 Chainlink 提供錯誤數據的可能性可以忽略不計,它可以作爲可靠的後備選項。
該解決方案充當過濾器,同時考慮 Curve 和 Chainlink 價格。條件在函數內建立,充當開關。爲了設計這個條件,acceptable_range引入了概念。這個範圍代表了 Chainlink 的預言機和 Curve 預言機價格之間可接受的差異。當觀察到的差異超過此範圍時,就表明 Curve Oracle 數據中存在潛在偏差或操縱。在這種情況下,該功能通過支持更安全的 Chainlink 價格來防範潛在風險。相反,當差值在 範圍內時acceptable_range,該函數依賴於 Curve Oracle 的準確度和精確度。
值得注意的是,acceptable_range可以配置爲靜態或動態,具體取決於基礎資產(例如 ETH 和相關 LSD)的波動性。動態性質允許適應波動的市場條件,確保價格確定的彈性和響應機制。這種雙管齊下的策略最大限度地減少了對單一數據源的依賴,從而增強了定價機制的整體彈性和可靠性。
該解決方案引入了靜態方法acceptable_range來解決僅依賴 Curve Oracle 時的潛在漏洞。雖然 Curve Oracle 產生的價格比 Chainlink 更準確,但它可能容易受到操縱。 Chainlink 功能強大且經過考驗,被認爲是業內更安全的選擇。當 Curve Oracle 和 Chainlink 之間的差異超過固定值時,它acceptable_range用作切換到 Chainlink feed 的閾值。
從策略上來說,其acceptable_range接受的報價低於Chainlink 報價的± 1%。這與 Curve 和 Chainlink 之間的平均差相差近 3 個標準差(考慮到與之前的 stETH/USD feed 相比,改進的 stETH/ETH 和 ETH/USD feed)。
derived_price是旨在確定給定資產的最終報價的函數或機制的輸出,特別是在涉及 Curve Oracle 和 Chainlink Oracle 的場景中。
在所描述的解決方案中,該函數評估來自 Curve Oracle 和 Chainlink Oracle 的報價。根據觀察到的這兩個價格之間的差異以及它是否落在或超出預定義的accepted_range,該函數將輸出不同的派生價格。
以下是derived_price與之前顯示的其他價格源的比較:
BOT 利潤可以通過該衍生價格可視化(由於沒有偏差,該價格將完全等於 Curve stETH/ETH 和 CL stETH/ETH),如下所示:
分析總利潤可以揭示更大的情況。確定了六個異常值,並在過濾異常值之前和過濾之後計算每種情況的總利潤。
在減少 BOT 的可用利潤方面,Curve stETH/ETH 和 Uniswap ETH/USDC 表現最好。它derived_price與當前 stETH 的 Oracle 實現具有相同的利潤潛力,但限制了利潤,假設在分析的 189 筆交易中爲用戶節省了約 35.4 ETH。
由於鏈上活動嚴重依賴流動性最強的去中心化交易所的報價,而 MEV 機器人將 mkUSD 兌換成 LSD 也遵循相同的報價,因此報價(用於報價贖回的 Oracle 價格)的準確性至關重要重要性。
根據歷史數據,Curve 池 Oracle 價格比 Chainlink 的價格更接近參考(UniswapV3 價格數據)。數據表明,實施 Curve Oracle 將減少機器人的 MEV,並爲用戶兌換其寶藏提供更好的匯率。
將 Curve Oracle 用作獨立的 Oracle 可能很誘人,但 Curve 價格反饋的有效性取決於特定資產的流動性深度以及與池的交互。 Curve Oracle 和 Chainlink Oracle 的混合可用於匹配鏈上價格,同時保持使用 Chainlink Oracle 繼承的可靠性和廣泛的市場覆蓋範圍。
我們提出的混合 Oracle 解決方案評估標準差 (SD) 以生成derived_price.如果SD接近0,則表明遵循derived_price參考值,可以考慮。這確保了當 Curve Oracle 偏離預定義閾值時,解決方案動態切換到更安全的 Chainlink 源。由於該解決方案幾乎總是輸出 stETH 的 Curve 報價,因此假設 MEV 活動與使用 Curve stETH/ETH 相同,沒有回退。
附錄 A:數據處理腳本
用於生成本報告中的分析的腳本如下所示:
附錄 B:rETH/cbETH 殘差分析
其他圖表 rETH
Chainlink 與 Curve
Uniswap 與 Curve
Uniswap 與 Chainlink
檢查峯值 rETH
在觀察期間,rETH 曲線預言機價格出現了幾次峯值。有幾次,這導致預言機價格和現貨參考之間的價格偏差激增。下面是更詳細的圖表,顯示了幾次價格飆升期間的資金池比例/代幣流動性以及預言機價格的行爲。
start_block = 18824000
end_block = 18827000
interval_blocks = 100
礦池比例:
預言機價格:
start_block = 18850000
end_block = 18858000
interval_blocks = 100
礦池比例:
預言機價格:
start_block = 18880000
end_block = 18885000
interval_blocks = 100
礦池比例:
預言機價格:
其他圖表 cbETH
Chainlink 與 Curve
Uniswap 與 Curve
Uniswap 與 Chainlink
檢查峯值 cbETH
在觀察期間,cbETH 曲線預言機價格出現了幾次峯值。有幾次,這導致預言機價格和現貨參考之間的價格偏差激增。下面是更詳細的圖表,顯示了幾次價格飆升期間的資金池比例/代幣流動性以及預言機價格的行爲。
start_block = 18693500
end_block = 18696000
interval_blocks = 10
礦池比例:
預言機價格:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
礦池比例:
預言機價格:
start_block = 18800000
end_block = 18805000
interval_blocks = 10
礦池比例:
預言機價格:
本文轉載自[marsbit )],原文標題“Prisma 可選預言機比較分析”,著作權歸屬原作者[PrismaRisk],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。