去中心化交易所 V4 版本的新功能 Hooks 使交易者能夠部署更復雜的交易訂單,其中就包括限價單交易。本文源自 Leo 於 Blockbeats 所著文章《 Uniswap V4是如何實現限價單交易的?》,由 Foresight News 整理、編譯及撰稿。
(前情提要:Uniswap V4 版本降臨!你該知道 V4 的全部升級重點 )
(背景補充:錢包簽名就被盜?揭祕Uniswap Permit2釣魚騙局 )
昨日,Uniswap 釋出了未來即將推出的 Uniswap V4 版本程式碼草稿,相比 V3 出現了很多創新點。其中,最引人矚目的一點就是 V4 版本出現了限價單交易。大家對於 Uniswap V4 如何實現限價單交易比較好奇,接下來為大家深入分析一下 Uni V4 版本如何實現限價單交易。
關於 Hooks
根據 Uniswap 官方白皮書,限價單交易隸屬於其新功能的 Hooks 之下,所以是依靠 Hooks 機制來實現鏈上限價單交易。
Hooks 是 Uniswap V4 的核心機制,指的是在資金池生命週期的某個特定時刻執行的程式碼片段。與之前的 Uniswap 版本相比,新版本資金池的可訂製程度更高,因此無論是建立池子,還是 LP(流動性提供者)新增 / 移除流動性,抑或是在 swap 之前 / 後,Hooks 起到的作用都非常重要。
在 DeFi 中,Hooks 是一種程式設計概念,指的是一組用於在智慧合約執行特定操作時自動觸發的函式或程式碼片段,可用於在特定事件發生前、後或期間執行自定義邏輯。Hooks 為開發者提供了一種在智慧合約的不同階段執行自定義邏輯的方式。通過使用 Hooks,開發人員可以實現更靈活、可訂製和可擴充套件的 DeFi 應用程式。
例如,Hooks 可以用來建立具有根據市場條件變動的動態交換費用的資金池,而不是預先設定和靜態的交換費用。同時,Hooks 還使交易者能夠下更復雜的訂單,例如限價訂單或 TWAP(時間加權平均價格)訂單,這些訂單會在一定時間內買入 / 賣出一定數量的 Token。
不僅如此,Hooks 還允許以不同的方式使用 Uniswap 的流動性。這類似於 Balancer 的 Boosted Pools,超出範圍的流動性可以存入其他協議,例如借貸者,以獲得額外的收益。
V4 限價單機制
通過分析 Uniswap V4 的限價單 LimitOrder.sol 的示例合約程式碼,得出的限價單執行流程大概如下:
1. 匯入庫和合約:
引入了相關的庫,如 SafeERC20 和 IERC20,以及用於與 Uniswap V4 互動的合約,如 IUniswapV4Router02。
2. 定義變數:
tokenIn:交易中的輸入的 token;
tokenOut:交易中的輸出的 token;
totalAmountIn:交易中輸入的 token 總量;
minAmountOut:交易中使用者預期的最小輸出 token 量。
3. 定義限價單:
OrderExecuted:當限價訂單成功執行時觸發的 token 價格。
4. 建構函式:
在部署此合約時,需要提供以下引數:
_router:Uniswap V4 的路由合約地址;
_tokenIn:輸入 token 的合約地址;
_tokenOut:輸出 token 的合約地址;
_totalAmountIn:輸入 token 的總量;
_minAmountOut:期望的最小輸出 token 量;
_deadline:限價訂單的截止時間。
5. executeOrder 函式:
該函式用於執行限價訂單
首先,該函式確保當前區塊的時間戳早於截止時間,然後計算交易的實際輸出金額。接下來,它會檢查實際輸出金額是否大於或等於最小輸出金額。如果滿足條件,它將使用 SafeERC20 庫安全地將輸入 token 從使用者地址轉移到合約地址,然後執行交易。最後,將輸出 token 傳送回用戶,並觸發 OrderExecuted 事件。
6. onUniswapV4Swap 函式:
這個函式是一個回撥函式,當交易被 Uniswap V4 路由合約執行時會被呼叫。該函式將檢查交易的輸入和輸出金額是否符合預期,並返回適當的布林值。
註:布林值是電腦程式語言中一種取值僅能為真或假的資料型別,它賦予了程式語言在邏輯上表達真或假的能力。如果沒有這種能力,很多功能將無法被實現。
7. recoverToken 函式:
這個函式允許合約的擁有者在特殊情況下從合約中取回 token。例如,當由於某種原因訂單未被執行,使用者可以通過這個函式來找回他們鎖定在合約中的 token。
有了 Hooks,限價單的執行機制就很明顯了:
在 Hooks 合約上下訂單;
Hooks 合約將你的訂單新增到其 V4 交易上;
根據自定義或託管預言機,當價格到限價單價格時,會觸發 Hooks 自動執行 Swap 操作,並調整流動性;
Hooks 自動 remove order
訂單取消或完成。
📍相關報導📍
Uniswap V4 帶來的終極問題:DEX能超越CEX嗎?