原文:《 DEX 聚合器全景解析: 生態發展、產品對比、聚合算法》
出品:DODO Research
編輯:Yaoyao
作者:Andrea
流動性對於任何金融產品來說都至關重要。自2020 年DeFi Summer 以後,各類DeFi 產品如雨後春筍般出現,一方面促進了DeFi 生態的發展,另一方面也使得流動性被分散到各個不同的協議中,使得交易市場變得碎片化。旨在將流動性集中的聚合類產品,也在這時應運而生。
根據功能和實現方式,聚合器可分為:
1. 收益聚合器:將資金聚集到資產池,通過策略分佈到不同的DeFi 平台進行挖礦,獲得的收益在資產池間分配。代表項目有Yearn Finance, Idle Finance, APY.Finance, Harvest Finance。
2. DEX 聚合器:聚合多個協議的流動性,通過算法尋找最佳交易路徑,降低交易成本。代表項目有1inch, DODO, Matcha, Paraswap, KyberSwap, CowSwap。
3. 多功能聚合器:在同一終端接入多個DEX 流動性,如Uniswap、Balancer 等,但不具備拆單功能,即不會在多個DEX 間分配交易。代表項目有Zapper, Plasma Finance, InstaDapp。
本文聚焦於DEX 聚合器,圍繞生態發展、產品對比以及聚合算法三方面,詳細介紹了DEX 聚合器的過去和現狀,以及對未來的展望。
回顧DEX 聚合器的發展
1inch 於2019 年5 月推出,是第一個將其他多個去中心化交易所流動性匯集的DEX。 1inch 於2020 年11 月發布了第二版協議,對初始協議進行了改進,推出了應用程序接口Pathfinder 組件。 Pathfinder 組件包含了價格發現和路由算法,將交易拆分到許多去中心化交易所(DEX) 甚至同一DEX 的不同市場深度,以確保用戶以最佳匯率和最快的速度處理交易。
DODO 由最早的PMM 算法發展到聚合算法。 DODO 既是流動性供應商,也是流量分銷商。 DODO 的自建路由通過聚合鏈上各頭部交易所的流動性,為用戶計算出最優的交易路徑;既支持在不同協議之間進行拆分,也支持在同一協議內的不同市場深度進行拆分。獲得路徑後,鏈上的智能合約將為用戶執行交易動作,智能合約中的安全性驗證保證了用戶的資金安全和報價有效性。
可以說DODO 既保留了DEX 的交互體驗,又發揮了聚合器的功能。
0x API 為其他基於以太坊的應用程序提供點對點流動性功能,它可以在任何應用程序中啟用可組合資產交易來分解流動性。當0x API 將訂單接受者連接到DEX 時,0x 就是一個聚合器。除了將訂單連接到交易所,0x 還提供自己的做市商服務。做市商和應用開發人員是0x 目標用戶,0x 通過代幣經濟激勵他們優化最終用戶體驗。例如Match 就是基於0x API 構建的聚合器。
DEX 聚合器生態
不同的DEX 聚合產品採用了不同的方式實現訂單路由。這裡簡要介紹幾個常見DEX 聚合器的主要功能特點,以及比較區分。
1inch
- 路由算法Pathfinder
可以找到最有效的代幣交換路徑,將交易拆分為跨不同協議的多個子交易,甚至協議內的不同訂單深度,從而提供最佳匯率。
除了優化交易利率之外,Pathfinder 還可以通過部分和動態填充機制來降低交易失敗的可能性。當用戶提交交易時,探路者首先將交易拆分為多個流動性來源。如果在此過程中一個協議的速率發生不利變化,則可以取消該路由的特定分支,僅執行有利的分支。動態填充甚至允許來自不利分支的金額在有利分支之間重新分配,並可以以界面中公佈的速率完全完成交換。
- 零費用限價單功能
當用戶下達限價單時,它會被添加到由1inch 管理的中心化數據庫中。然後這些訂單可以由任何其他用戶write,包括CEX 和Pathfinder 在聚合協議中創建的訂單。除交易價值外,限價訂單的接受者還包括gas 成本,這對用戶來說是是一筆零費用訂單。該實施還允許動態定價、用戶設置執行條件的條件報價以及針對特定訂單大小的報價請求(RFQ) 報價。 。
DODO
- 流動性供應& 分銷
如前所述,DODO 協議既是流動性供應商,也是流量分銷商。
流量分銷的主要體現是:DODO 在交易端提供了聚合器的功能,可以實現同一網絡上兩個任意代幣之間的交易,智能地從流動性來源中找到最佳的訂單路由,為交易者提供最佳的價格和最低的滑點。
- Trade API
DODO Trade API 當前支持Ethereum、BSC、Polygon、Arbitrum One、MoonRiver、Aurora、Boba、HECO、OEC、Avalanche、Optimism、Cronos 這十二個網絡下任意幣互換的實時報價以及可直接使用的與合約交互ABI 數據。 DODO Trade API 也集成了DODOV1、DODOV2、專業做市商、1inch API、0x API、ParaSwap API 以及DODO 自建的聚合算法等多源實時的報價信息,並返回當前多源中最優報價,以確保DODO Trade API 始終具有較強的競爭力。
CowSwap
在CowSwap 上,訂單在鏈下下達,並不會立即執行,而是通過收集和匯總的形式分批結算。一旦用戶提交交易,解決者必須找到在分配時間內獲得交易承諾價格的路徑。
- 批量拍賣
無需訪問鏈上流動性,鏈下撮合訂單;用戶發送簽名訂單,由求解器獲取並提供結算方案,協議將選擇提供最佳價格的結算方案。
採用批量拍賣的主要原因有:
1)在以太坊的同一區塊中建立任何代幣相同的價格;
2)將統一清算價格和需求巧合的新經濟機制結合,改進DEX 報價機制。
- 需求巧合(Coincidence of Wants)
本質就是訂單撮合。在所有訂單中共享流動性,構建環形交易,允許拆單所以無需完美匹配訂單。
ParaSwap
- 路由算法MultiPath
能夠考慮間接交易路線(多跳),並與各類去中心化服務(如Aave 和Compound 等借貸平台)無縫交互。例如,ParaSwap 可以一步完成以下操作:將ETH 兌換成DAI,然後將DAI 存入Aave 以獲得aDAI。
- KyberSwap
Kyberswap Elastic 的Anti-JIT 功能是作為獎勵鎖定引入的。該鎖定根據流動性貢獻的持續時間授予。攻擊與流動性提供者的正常活動之間的區別在於它們的貢獻持續時間。當JIT 攻擊發生時流動性提供者(LP)向協議提供的資金面臨著無常損失的風險。但在攻擊者立即提取資金的情況下,協議可以預先計算無常損失,從而保證LP 利潤。
以下是1inch,DODO,CowSwap,Paraswap,KyberSwap 的完整對比圖:

聚合算法
DEX 也可以有自己的聚合算法,例如Uniswap V3,Balancer 等都將一筆交易拆分到多路徑中完成。 DEX 聚合算法和聚合器的區別在於,聚合算法僅基於自己的報價池,而聚合器則充分利用了DeFi 的可組合性,不僅接入自己的池子,也會接入其他DEX 的池子。這最大化的利用全鏈的流動性源,以期為用戶提供最好的報價。
聚合算法要解決的主要問題是:從A Token 到B Token,怎樣在一系列池子中,找到最優兌換路徑。通常情況下,這個問題有兩種路徑解決方案:線性路由和拆單路由。
- 線性路由
線性路由指在尋找交易路徑的過程中,一交易對只經過一個池子,在此基礎上尋找目標token 報價最優的路徑。例如用戶需要將A Token 換為B Token,線性路由所找到的最優路徑為ACB,而非[ACB]+[ADB](即A Token 不會拆分為兩個或多個部分選擇不同的路徑)。最終的路徑只經過兩個池子——這兩個池子可能來自不同協議。
- 拆單路由
同樣是將A Token 換為B Token,拆單路由可以使30% 的A Token 使用ACB 路徑;剩餘的70% 則使用ADB 路徑。拆單是為了使用戶的資金按最優比例配置到不同池子進行兌換,以獲得最優的目標token 報價。
拆單後的路徑根據中間token 的數量又可分為:零跳詢價和多跳詢價。
例如,將1000 個A Token 兌換為B Token,簡單來說有兩種方法:
- A→B 即A 直接兌換為B,但可將這1000 個A Token 拆成多份,經過一系列的同名池子兌換為B Token,這種方式叫做零跳詢價;
- A→C1→C2…Cn→B, 即中間經過多個不同的交易對,最終兌換為B Token,這種方式也叫做多跳詢價,多跳詢價也可以看作是由多個零跳詢價組成。
1)零跳詢價
零跳詢價要解決的問題是:假如有N 個同名池子,1000 個A Token 拆分為K 份,那麼對於每一個池子Ni 將詢價K 次,將K 份中的每一份記作Ki ,每次報價輸出記作Oi,那麼求解最優路徑即為找到一個拆分為K 份的方式,使得每次輸出的Oi 之和為最大。這其實是一個背包問題。
背包問題(Knapsack problem)是一種組合優化的NP 完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放置於給定背包中,背包的空間有限,但我們需要最大化背包內所裝物品的價值。背包問題通常出現在資源分配中,決策者必須分別從一組不可分割的項目或任務中進行選擇,而這些項目又有時間或預算的限制。
-- 維基百科
對於零跳詢價來說,拆分數越小,詢價速度越快,離散誤差越大;拆分數越大,詢價速度越慢,離散誤差越小。
1inch 基本採用固定拆分數,對於單跳,可選拆分數在100內,常用值為50;Paraswap 的拆分數相對更靈活。
DODO 則採取二分法輔助確定拆分數以盡可能地減少固定的拆分數帶來的離散誤差。具體實現為:在0~100 的拆分數內隨機選擇一個拆分數n,計算最優報價p1;再計算拆分數為2n 時的最優報價p2, 若p1 和p2 的相對差值小於0.001,則認為n 為最優拆分數,否則,以2n 為新的當前拆分數,繼續進行二分檢驗,至差值小於0.001 為止。
2)多跳詢價
A→C1→C2→…→Cn→B 這樣一個路徑可以使用多次零跳詢價完成。先求解A→C1,再C1→C2,以此類推,即可獲得最優價格和拆單方式。這樣的方式也會增加詢價時間和gas 成本,因此,DODO 將中間幣控制在兩個以內,最優化交易路徑。
未來展望
目前來看,DEX 龍頭如Uniswap、Curve 等仍然佔據鏈上交易的主要份額;而DEX 聚合器交易量佔比不到50%,仍具有很大的市場空間。
來源:Dune Analytics
DEX 聚合器的市場份額能夠繼續增加,主要取決於兩點:
- 增加更多的流動性來源:自動路由技術除了集中鏈上流動性,也可以拓展到鏈下流動性,例如增加RFQ 做市商報價;
- 降低gas 成本:隨著公鏈性能的提升,鏈上成本降低,做市商可以更高頻、更激進地進行報價,而這又可以進一步豐富流動性來源,吸引更多的做市商參與。可以預見的是,有一大批面向終端用戶的應用將會連接到聚合器的API 上,以此形成良好的正向循環
未來很有可能大部分的手動交易員會使用諸如1inch、DODO、CowSwap 這樣的DEX 聚合器或者其他的類似產品來完成交易,而DEX 則作為一個類似於後端的流動性供應商。 DEX 聚合器提供更為接近中心化交易所的前端體驗,如DOOD 已經提供限價單交易、免gas 交易等功能。
DODO DEX 提供K線視圖,限價單,免gas 交易功能。
相信隨著路由聚合算法的優化,更多流動性來源的集成,前端體驗更符合交易需求,DEX 聚合器的不斷完善成熟,終能獲得更大的市場份額,讓加密經濟的“去中心化”屬性真正地被廣泛接納,去中心化金融實至名歸。
參考文獻
https://www.defidaonews.com/article/6732572
https://www.softwaretestinghelp.com/decentralized-crypto-exchanges-dex-aggregator/
https://blog.dodoex.io/聚合器揭秘-問題分析與模型建立-98b6bde19aa8
https://foresightnews.pro/article/detail/4198
https://www.notion.so/dodotopia/DEX-48697284a0ce4413aa7140198529a473#46eb03b3d68e49618e6b2bd02476c891
https://www.panewslab.com/zh/articledetails/D94054513.html
來源:Dune Analytics
DODO DEX 提供K線視圖,限價單,免gas 交易功能。