header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP

Uniswap V4是如何實現限價單交易的?

2023-06-14 16:24
閱讀本文需 7 分鐘
总结 AI 總結
看總結 收起

昨日,Uniswap 發佈了未來即將推出的 Uniswap V4 版本程式碼草稿,相比 V3 出現了很多創新點。其中,最引人矚目的一點就是 V4 版本出現了限價單交易。大家對於 Uniswap V4 如何實現限價單交易比較好奇,接下來為大家深入分析一下 Uni V4 版本如何實現限價單交易。


相關閱讀:《關於 Uniswap V4,你需要知道的一切


關於 Hooks


根據 Uniswap 官方白皮書,限價單交易隸屬於其新功能的 Hooks 之下,所以是依靠 Hooks 機制來實現鏈上限價單交易。


Hooks 是 Uniswap V4 的核心機制,指的是在資金池生命周期的某個特定時刻運行的程式碼片段。與之前的 Uniswap 版本相比,新版本資金池的可定制程度更高,因此無論是創建池子,還是 LP(流動性提供者)添加/移除流動性,抑或是在 swap 之前/後,Hooks 起到的作用都非常重要。


在 DeFi 中,Hooks 是一種編程概念,指的是一組用於在智能合約執行特定操作時自動觸發的函數或程式碼片段,可用於在特定事件發生前、後或期間執行自定義邏輯。Hooks 為開發者提供了一種在智能合約的不同階段執行自定義邏輯的方式。通過使用 Hooks,開發人員可以實現更靈活、可定制和可擴展的 DeFi 應用程式。


例如,Hooks 可以用來創建具有根據市場條件變動的動態交換費用的資金池,而不是預先設定和靜態的交換費用。同時,Hooks 還使交易者能夠下更複雜的訂單,例如限價訂單或 TWAP(時間加權平均價格)訂單,這些訂單會在一定時間內買入/賣出一定數量的代幣。


不僅如此,Hooks 還允許以不同的方式使用 Uniswap 的流動性。這類似於 Balancer 的 Boosted Pools,超出範圍的流動性可以存入其他協議,例如借貸者,以獲得額外的收益。


V4 限價單機制


通過GPT分析 Uniswap V4 的限價單 LimitOrder.sol 的示例合約程式碼,得出的限價單運行流程大概如下:



通過 LimitOrder 合約,Uniswap 實現了限價單的創建(place)、執行(fill)和撤銷(kill)等操作:


1. 創建限價單(place)


用戶可以呼叫 place 函數來創建一個限價單。這個函數需要接收一個 PoolKey(包含交易對的資訊),一個 tickLower(價格區間下限),一個 zeroForOne 標誌(表示交易方向)和預期添加的流動性 liquidity。這個函數會創建一個新的 Epoch(時間段),並將相關資訊存儲在 epochInfos 中,然後觸發 Place 事件。


2. 執行限價單(fill)


在每一次交易結束後,都會呼叫 afterSwap 函數。這個函數會檢查當前的價格是否穿過了任何限價單的價格區間,如果有,就會呼叫 lockAcquiredFill 來執行限價單。執行限價單的過程中會從池子中提取相應的資金,並觸發 Fill 事件。


3. 撤銷限價單(kill)


用戶可以呼叫 kill 函數來撤銷一個限價單。這個函數會接收一個 PoolKey,一個 tickLower,一個 zeroForOne 標誌和一個接收者地址 to。這個函數會從 epochInfos 中刪除相關資訊,並將限價單中的資金退還給接收者,然後觸發 Kill 事件。


4. 提取資金(withdraw)


在限價單執行後,用戶可以呼叫 withdraw 函數來提取他們的資金。這個函數會接收一個 Epoch 和一個接收者地址 to,然後將用戶在那個時間段內執行的所有限價單的資金提取出來,並觸發 Withdraw 事件。


有了 Hooks,限價單的運行機制就很明顯了:


-在 Hooks 合約上下訂單;

-Hooks 合約將你的訂單添加到其 V4 交易上;

-根據自定義或託管預言機,當價格到限價單價格時,會觸發 Hooks 自動執行 Swap 操作,並調整流動性;

-Hooks 自動 remove order

-訂單取消或完成。


BlockBeats 提醒,以上的解釋是基於這個智能合約程式碼的表面行為。實際的行為可能會受到其他因素(比如其他智能合約的交互、鏈上數據的變化等)的影響,因此在使用這個合約時應該注意審查其程式碼並理解其工作原理。





歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
本平台現已全面集成Farcaster協議, 如果您已有Farcaster帳戶, 可以登錄 後發表評論
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交