BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

以Uniswap為例,討論用於DEX 路由器構建和分析的構建區塊

星球君的朋友们
Odaily资深作者
本文約4897字,閱讀全文需要約7分鐘
本文將討論可用於構建和分析Uniswap V2協議及更高版本構建和分析路由器的構建區塊。
AI總結
展開
本文將討論可用於構建和分析Uniswap V2協議及更高版本構建和分析路由器的構建區塊。

概述

概述

一級標題

概述

圖片描述

如果有人想要的資產與他們想要交易的資產不成對,會發生什麼?在這種情況下,在多個對之間進行一系列互換以獲得所需的資產——用於促進這種交易的對被稱為路由。

圖片描述

圖片描述

圖片描述

圖片描述

圖片描述

圖片描述

滑點是指一個人預期為資產支付的價格與實際支付的金額之間的差額,這是由一些因素造成的,比如訂單進入市場和交易執行之間的價格變動,或者成交量和流動性低。

一級標題

路由器必須考慮這些因素,以產生適合交易數量的路由。此外,由於市場狀況經常變化,影響gas費用和池的流動性,生成的路由也將是動態的,現在是一條很好的路由,不一定在一小時後或第二天表現良好。

  • 一級標題

  • 本文的其餘部分將討論可用於構建和分析Uniswap V2協議及更高版本構建和分析路由器的構建區塊。

  • 一級標題

數據建模

  • 注意:這裡提到的Graph協議不同於下一節討論的Graph數據類型。圖協議是一個或多個智能合約的區塊鏈交易的索引,而圖數據類型是指使用數學圖論的數據表示。

  • 正如使用地圖在點之間導航一樣,可以使用圖數據類型來導航可用的流動性對,以生成可以評估以提高回報的路由。在對Uniswap 對進行建模時,一開始就需要做出一些實現選擇:

  • 作為頂點或邊的對、符號或資產標識符 ?

  • 有向還是無向?

  • 簡單還是多圖?

為了做出上述實現選擇,理解Uniswap對的屬性是很重要的:

每對包含以下數據對2 個代幣:符號、名稱、ID。

代幣名稱也不一定是唯一的。

圖片描述

Uniswap對的這些屬性建議使用代幣ID作為圖數據類型中的頂點。由此可見,圖的邊代表唯一的一對ID。在這種形式下,圖可以是無向的,也可以是有向的,每條邊代表一對ID、代幣價格和儲備。然而,不斷更新代幣價格和保留信息的需求表明,將該數據存儲在具有適當的實時設置的緩存結構中可能更有效和可擴展,特別是對於實時交易的應用程序,而不是靜態分析。

圖片描述

今後,在Uniswap V2和V3協議對之間路由是可取的。在這個場景中,可能存在多個對相同的代幣ID。雖然可以在一對ID之間添加額外的邊,但另一種解決方案是在同一條邊上分組不同的對ID,從而避免遍歷多重圖的性能成本。下面是分組對ID無向簡單圖結構的部分示例,其中符號ID 替換了符號名稱:

圖片描述

  • WETH

  • DAI

  • USDC

  • USDT

  • COMP

  • MKR

圖5.0:在一個無向簡單圖中對Uniswap V2和V3協議對進行建模(注意,實際結構使用代幣ID而不是代幣符號,所以在這裡會很麻煩)。

最初,深度優先搜索(DFS)已經證明可以遍歷圖,一般情況下深度限制為4。該深度的一個例外是從WETH開始的路由,其中連接節點的數量超過30000。當一條路由從WETH出發時,DFS被限制為2,以減少遍歷時間。

有許多用於處理圖形數據類型的工具,包括圖形數據庫Neo4J和RedisGraph。這些討論超出了本文的範圍,目前的項目需求可以通過Javascript庫Graphlib來滿足。然而,如果路由問題的規模達到了LinkedIn或其他大型網絡的規模,那麼上述圖表數據庫的規模就會滿足這些需求,從而權衡成本和開發複雜性。

  • 約束

  • 當在圖數據結構中計算路由時,約束是有用的。例如,它們有助於確定只遍歷有限數量對的路由,或者可以用來忽略包含某些資產的對的路由。

這六種資產是有用的,因為它們是常用的,當它們與其他資產成對組合時,不會施加流動性限制(即它們不是稀缺的,並且不會與新的、未經證實的加密資產構成相同的風險)。然而,它們的使用可能會造成效率問題,在這裡說明:

使用約束,比如忽略上面提到的6個“樞紐”資產,可以探索比當前Uniswap V2界面提供給用戶的更有效的潛在路由。約束也可以擴展到其他標準,例如:

一級標題

  • 通過具有特定定價的特定池路由。 (適用於Uniswap V3協議)。

  • 一級標題

  • 同樣值得注意的是約束是可組合的,也就是說,它們可以組合在一起,這樣路由就可以限制為最多2 個池,每個池的流動性超過X。當前的數據模型在圖數據類型和查找表之間拆分數據,這意味著在圖遍歷期間和之後發現對數據時都可以修剪路由。

擴展

擴展主要考慮向路由器公開一個公共API,以便基於當前市場數據計算路由。性能是一個函數:

計算路由請求的影響所需的時間

圖片描述

圖6.0:具有可擴展組件、緩存和定期更新的路由服務架構。

另一個潛在的可擴展性修改可能是考慮路由請求和數量的完整路由解決方案緩存;如果數量在一定的公差內,最近計算的結果可以重用。根據用戶體驗和應用程序的需要,最近計算的結果也可以用作臨時結果,而為用戶計算更精確的結果。

一級標題

路由緩存

路由緩存由最常請求的路由的結果組成,其生存時間(TTL) 與數據源的定期更新頻率相關。例如,如果之前請求過WETH和DAI之間的一條路由,則可以在路由緩存中以可能路由數組的形式找到圖遍歷的結果:[WETH -> USDC -> DAI, WETH -> WBTC -> DAI, …]。與代幣價格和儲備等對數據不同,路由可能性——特別是配對的存在——變化較少,因此該緩存的TTL預期要比對數據緩存大得多。此外,該組件還可以擴展為包含對死路由(即過期或已被取代的令牌地址或非流動對)的試探法。

配對數據緩存

一級標題

一級標題

一級標題

一級標題

  • 路由性能將通過將生成的路由與現有Uniswap V2路由器的路由進行比較來評估。具體來說,是通過計算給定數量的源代幣的收益。例如,在從DAI到COMP的交易中,路由器的性能將通過計算從100萬個DAI代幣接收到多少COMP,並檢查從Uniswap V2路由器建議的路由獲得的相同結果來進行比較。性能將根據各種不同的輸入進行測量,例如,不同的初始數量,對搜索深度的不同限制等。

  • 一級標題

  • 在執行靜態分析時,不需要圖6.0中所示的對數據緩存和捆綁請求。靜態分析是在區塊鏈的特定區塊時間內對交易的計算。它有助於結果的一致性和重複性,以便進行比較。為Uniswap V2設計新路由器的初始工作範圍由靜態分析提供幫助,在靜態分析中,可以在一個區塊時間評估一組交易,並與現有的路由算法或變體進行比較。如果潛在的配對數據發生變化,則不清楚交易結果的改善或下降是由於算法變化還是配對流動性和定價。

  • 一級標題

數據源

隨著區塊鏈技術的成熟,出現了大量提供區塊鏈當前和歷史數據的服務。數據源的選擇涉及下列考慮事項:

一旦對交換路由器設計進行了評估,這個數據源將被證明不適合生成路由,因為實時數據需要具有競爭力。在這樣的場景中,需要直接來自區塊鏈當前狀態的數據,例如來自Alchemy、Infura或其他來源的以太坊節點。

未來

未來

未來

交易生成器

一級標題

交易生成器

一級標題

通過增加圖形或交替地使圖形數據結構成為多圖並添加額外的數據源,可以擴展該系統,為用戶提供跨Uniswap V2和V3協議的資產之間的路由。根據目標的不同,這可以減少交易中的滑點,也可以對分散的流動性進行管理。

MEV

一級標題

跨層路由

一級標題

Source:https://medium.com/@ValveFinance/building-blocks-for-dex-router-construction-analysis-acc03b9f15d8

本文來自去中心化金融社區,經授權轉載。

DEX
Uniswap
歡迎加入Odaily官方社群