Uniswap V4- 下一代DeFi的OS内核

Portability is for people who cannot write new programs. – Linus Torvalds

Uniswap V4 协议

相比较Uniswap V3版本,Uniswap v4的新版本协议中提出了一系列的改进措施,主要包含了俩个核心设计改进:可定制性化和 gas 效率升级,当然其中最重大的创新莫过于开放交易池Pool的自定义开发能力。具体来说,对于交易者和流动性提供者来说,可以主要关注以下4点新方案的提议。

  • 钩子合约(Hooks Contract)
  • 闪电记账(Flash Accounting)
  • ERC-1155记账
  • 单例合约(Singleton)

V4 – Hooks 合约

基本设计理念

Uniswap v4 允许任何人使用自定义功能部署新的集中流动性池。对于每个池,创建 者可以定义一个Hooks 合约,该合约在调用的生命周期的关键点执行逻辑。Uniswap v4 目前支持 八个此类 Hooks 回调:

- beforeInitialize/afterInitialize
- beforeModifyPosition/afterModifyPosition
- beforeSwap/afterSwap
- beforeDonate/afterDonate

Hooks 合约的地址决定了哪些 Hooks 回调会被执行,具体的执行逻辑如下:

Hooks 开发框架

有了Hooks 合约的开放功能, Uniswap将会从诺基亚时代升级跨越到IOS操作系统阶段,新的自定义功能不再需要等待新版本升级或者分叉复制。官方同时给出了四个Demo来说明如何基于Hooks实现定制化Pool功能,比如Deomean预言机、限价订单、TWAMM等。本文将通过简单的限价订单代码解析来说明V4 Hooks开发模式。

1 重写Hooks合约入口函数

根据代码分析,主要逻辑触发在afterInitialize 和afterSwap阶段。

function getHooksCalls() public pure override returns (Hooks.Calls memory) {
return Hooks.Calls({
beforeInitialize: false,
afterInitialize: true,
beforeModifyPosition: false,
afterModifyPosition: false,
beforeSwap: false,
afterSwap: true,
beforeDonate: false,
afterDonate: false
});
}

2 定义限价合约的核心操作

  • Place – 放置订单
  • Fill – 执行限价单
  • Kill – 撤销限价单
  • withdraw – 提取资金
event Place(
address indexed owner, Epoch indexed epoch, PoolKey key, int24 tickLower, bool zeroForOne, uint128 liquidity
);
event Fill(Epoch indexed epoch, PoolKey key, int24 tickLower, bool zeroForOne);

event Kill(
    address indexed owner, Epoch indexed epoch, PoolKey key, int24 tickLower, bool zeroForOne, uint128 liquidity
);

event Withdraw(address indexed owner, Epoch indexed epoch, uint128 liquidity);

下一代DeFi流动性开发者展望

除了以上提到的限价订单,基于Hook的合约的设计和能力,交易池开发者可以实现更多场景化的功能。

根据官网说明,Uniswap V4上线将依赖EIP-1153协议(主要实现闪电记账功能),而EIP-1153包含在下一次以太坊坎昆升级中,所以Uniswap V4预计上线时间是2023年年底左右。坎昆升级除了EIP-1153,EIP-4844将大幅的降低L2的存储成本,对于Uniswap 高频操作场景也是重要的支持。

ZenFox Labs将会持续的跟踪Uniswap V4的开发生态进展,共同见证“DeFi IOS”开发者机遇的到来


Zenfox Labs