Oracles

獲取價格數據:鏈上預言機 vs 智能合約功能

  • April 9, 2021

我想從 Uniswap 獲取最新和最準確的價格數據,並發現我可以呼叫該getAmountsOut()函式,該函式給出我將獲得的代幣數量,以作為給定輸入代幣數量的回報。此外,借助儲存累積價格數據的 Uniswap 智能合約,我可以通過鏈上價格預言機獲得想要的價格數據。

那麼有什麼區別,使用一種方法與另一種方法的缺點是什麼?

Uniswap V2 預言機

這將為您提供在您指定的區塊間隔內進行的所有交換的平均價格(例如,最後 50 個區塊)。

積極的

  • 抗操縱。操縱者將不得不對所選間隔的大多數塊進行糟糕且昂貴的交換。如果你選擇一個很長的間隔,那將是非常昂貴的。
  • 可以根據您選擇的區塊間隔顯示不同時間段的價格。
  • 您獲得的價格並不特別取決於掉期的規模。

消極的

  • 您獲得的價格並不代表您將進行的掉期交易。它在交換上下文中沒有用。
  • 價格可能會停滯和過時,因為它是過去交易的平均值。
  • 您獲得的價格特定於一對。你不會得到跨多對交換的價格。
  • 您需要呼叫一個保持舊塊狀態的節點,例如存檔節點。總的來說,實現起來比僅僅呼叫要困難一些getAmountsOut()

引用自:https://ethereum.stackexchange.com/questions/96341