用於 DEX 路由器構建和分析的構建區塊

語言: CN / TW / HK

概述

用一種資產交換另一種資產是金融市場的一個基本概念。在加密貨幣市場中,這種情況通常發生在代幣或貨幣與他人交換或交易的地方。Uniswap是一種自動流動性協議,有助於這種型別的交換。它使用成對或池(以下稱為對),兩種資產的池儲備,允許使用者將一種資產交換為另一種資產。

圖1.0:Uniswap代幣A和B池,以及流動性提供者(LP)和交易者的互換和存款互動示例。LP接收池代幣以提供流動性。

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

圖2.0:一條涉及多對交易 DAI 以換取 USDC 的路由。

路由是從一個資產到另一個資產的路由,由零或多個對之間的段組成。如果交易的數量足夠大,或者如果一對的流動性足夠低,可以從多個路由中形成一條路由,通過吸收更多來自其他對的流動性來減少滑點。

圖3.0:由Paraswap路由器說明的多路徑路由

圖4.0:多路由

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

另一個需要考慮的是路由中的段數。這將以在 以太坊 區塊鏈上操作的gas費用的形式增加交易成本。一條路由上的段數越多,所產生的gas費用就越高。類似地,如果有多種途徑,如上圖3和圖4所示,gas費用也會更高。

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

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

資料建模

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

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

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

  • 有向還是無向?

  • 簡單還是多圖?

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

  • 每一對都有一個唯一的ID。

  • 每對包含以下資料對 2 個代幣:符號、名稱、ID。

  • 代幣符號不是唯一的——例如,符號BOND表示許多不同的資產或不同的ID。

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

  • 代幣ID是唯一的,並且是代幣的ERC-20合約地址。

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

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

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

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

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

約束

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

現有的 Uniswap V2 路由主要是通過六項資產的路由,這些資產可以比作機場樞紐。這六項資產是:

  • WETH

  • DAI

  • USDC

  • USDT

  • COMP

  • MKR

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

“Uniswap沒有以去中心化的方式路由交換。”

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

  • 通過具有 X 美元流動性或 Y% 美元交易的池路由。

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

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

擴充套件

擴充套件主要考慮向路由器公開一個公共API,以便基於當前市場資料計算路由。效能是一個函式:

  • 計算路由的時間

  • 如果需要,獲取更新對資料的時間(代幣價格和儲備)

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

下圖說明了一個初始的系統架構,其中包含用於最常請求路由的快取和用於計算路由請求影響的快取對資料。這種架構非常靈活,可以以多種方式進行水平擴充套件。例如,完全複製圖資料結構和路由快取以及請求聚合器和對快取,或者簡單地複製快取並在快取之間分配路由請求。

圖6.0:具有可擴充套件元件、快取和定期更新的路由服務架構。

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

路由快取

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

配對資料快取

配對資料快取包含特定對的代幣價格和保留資料,便於計算使用指定數量路由請求的影響。該資料比可用路由選項的變化更頻繁,並且將具有大約一個以太坊區塊(約 15 秒)的 TTL。

當請求的資料不在快取中時,這些請求將被捆綁在一起,並從資料來源中獲取,目前是Graph協議中的Uniswap子圖(見下面的資料來源部分),最多可包含 1000 對資料查詢。傳送捆綁的對資料請求之前的等待時間將根據流量進行調整——在低流量的場景中,讓使用者等待直到發出額外請求是沒有意義的。

此外,為了改進使用者體驗,在獲取和計算更新資料時,可能會呈現基於舊資料的預結果。

靜態分析

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

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

資料來源

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

  • 預算

  • 開發工作和成本

  • 延遲

  • 資料的準確性

開發工作和成本可以通過使用預先消化或索引的資料來減少,就像在Graph Protocol的眾多子圖中發現的那樣。

對於初始交換路由器的設計和實現,將使用Graph Protocol中的Uniswap子圖。該資料來源提供了極好的易用性,能夠分析過去的合約資料,否則將需要更昂貴的存檔以太坊節點,並且能夠在不執行靜態分析時在單個HTTP請求中更新1000對資料。Graph Protocol中的資料延遲比前面提到的解決方案低得多,只有通過直接執行以太坊節點或對記憶體池建模(或者使用Blocknative之類的服務)才能勝出。Graph Protocol的延遲明顯在1區塊左右,在某些索引場景下可以動態改變。值得注意的是,當索引和對映區塊被證明無效時,資料也可以更改。

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

未來

上面概述的系統提供了靈活性和可擴充套件性,以分析現有Uniswap系統的效能,以及在協議之上構建新的系統,包括一個成熟的交易解決方案。類似於 Coinbase vs Coinbase Pro或Synthetix vs Kwenta,也有一些對專業交易者至關重要的高階功能,我們在下面列出了一些。

交易生成器

通過使用避免上述6個樞紐代幣的約束,本文描述的系統可以用來檢查某些代幣之間的替代路由及其效率。這可以定期完成以構建一個基於啟發式的列表,現有系統/交易者可以使用該列表來改進對這些對的推薦路由,或允許他們進行其他更改。

跨協議路由

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

跨層路由

類似於跨協議,路由器可以擴充套件到生成跨層路由。降低gas費用和改進交易頻寬的承諾表明,layer2解決方案將有助於定義以太坊未來的很大一部分。在L2和L1資產之間交叉提出了一個新的路由挑戰,其複雜性超過了協議交叉。然而,相同的基本構建區塊可以生成允許跨層交易的解決方案,利用即將到來的協議來實現這一目的,例如Hop Protocol、Nova等。

MEV

通過將路由解決方案與防止MEV的技術相結合,如Flashbots,該路由系統可用於保護大額交易免受攻擊。試探法或其他輸入可以確定一筆交易的價值是否足以表示這種風險,然後保護性解決方案可以自動合併由確定的最佳路由提出的交易解決方案中。

低延遲資料來源和預測路由

Graph Protocol資料來源雖然方便和快速,但通常至少有1區塊延遲。對於某些交易應用來說,這可能還不夠。在這方面,可以替代其他效能更好的資料來源,要麼直接繫結到一個以太坊節點,要麼過濾已完成的感興趣的交易,以更新路由系統的資料結構。更進一步,還可以構造記憶體池的有限描述,並應用類似的交易過濾,以提供未執行的已知交易狀態下的預測路由結果。

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