流動性對於任何金融產品來說都至關重要。自 2020 年 DeFi Summer 以後,各類 DeFi 產品如雨後春筍般出現,一方面促進了 DeFi 生態的發展,另一方面也使得流動性被分散到各個不同的協議中,使得交易市場變得碎片化。旨在將流動性集中的聚合類產品,也在這時應運而生。
根據功能和實現方式,聚合器可分為:
- 收益聚合器:將資金聚集到資產池,通過策略分佈到不同的 DeFi 平台進行挖礦,獲得的收益在資產池間分配。代表項目: Yearn Finance, Idle Finance,APY.Finance, Harvest Finance
- DEX 聚合器:聚合多個協議的流動性,通過算法尋找最佳交易路徑,降低交易成本。
代表項目: 1inch, DODO, Matcha, Paraswap, KyberSwap, CowSwap - 多功能聚合器:在同一終端接入多個 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 上,訂單在鏈下下達,並不會立即執行,而是通過收集和匯總的形式分批結算。一旦用戶提交交易,解決者必須找到在分配時間內獲得交易承諾價格的路徑。
- 批量拍賣
無需訪問鏈上流動性,鏈下撮合訂單;用戶發送簽名訂單,由求解器獲取並提供結算方案,協議將選擇提供最佳價格的結算方案。
採用批量拍賣的主要原因有:
- 在以太坊的同一區塊中建立任何代幣相同的價格;
- 將統一清算價格和需求巧合的新經濟機制結合,改進 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%,仍具有很大的市場空間。
DEX 聚合器市場份額的提升主要取決於兩點:
- 增加更多的流動性來源:自動路由技術除了集中鏈上流動性,也可以拓展到鏈下流動性,例如增加 RFQ 做市商報價;
- 降低 gas 成本: 隨著公鏈性能的提升,鏈上成本降低,做市商可以更高頻、更激進地進行報價,而這又可以進一步豐富流動性來源,吸引更多的做市商參與。可以預見的是,有一大批面向終端用戶的應用將會連接到聚合器的 API 上,以此形成良好的正向循環。
未來很有可能大部分的手動交易員會使用諸如 1inch、DODO、CowSwap 這樣的 DEX 聚合器或其他類似產品來完成交易,DEX 則成為一個類似後端的流動性供應商。DEX 聚合器提供了更為接近中心化交易所的前端體驗,如 DOOD 已經提供限價單交易、免 gas 交易等功能。
相信隨著路由聚合算法的優化,更多流動性來源的集成,前端體驗更符合交易需求,DEX 聚合器的不斷完善成熟,終能獲得更大的市場份額,讓加密經濟的 “去中心化” 屬性真正地被廣泛接納,去中心化金融實至名歸。
參考資料:
https://www.defidaonews.com/article/6732572
https://www.softwaretestinghelp.com/decentralized-crypto-exchanges-dex-aggregator/
https://foresightnews.pro/article/detail/4198
https://www.notion.so/DEX-39997340df404786ad427cc8d9ccb2d9
https://www.panewslab.com/zh/articledetails/D94054513.html
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。