Uniswap V4 通过引入 Hooks 特性、单例合约架构、闪电会计系统、无限费用层和直接以 ETH 进行交易等功能,显著提升了去中心化交易所的灵活性和效率。文章详细阐述了 Uniswap V4 的新特性,以及如何将其集成到智能合约中,包括代币交换的具体实现步骤和代码示例。
Uniswap V4 代表了 Uniswap 协议的重要进步,增强了去中心化交易所 (DEXs) 和自动化做市商 (AMMs) 的能力,为用户提供前所未有的灵活性、效率和定制化选项。我们之前已经涵盖了 Uniswap v3 并将其集成到我们的项目中。
Hook功能 (Hooks Feature): Hook是可以链接到流动性池的智能合约,为池的生命周期的各个阶段(例如交换和流动性的变化)提供了很大的定制空间。这样可以添加特定功能,如限价单、自定义预言机或自定义 AMM 曲线。
单例合约架构 (Singleton Contract Architecture): 在早期版本中,每对代币需要自己的合约。然而,Uniswap V4 使用单例合约模型。这意味着所有池都合并到一个合约中,从而降低了交易和池创建的 gas 成本。这也使得多跳交易更加高效。
闪电会计系统 (Flash Accounting System): 该系统允许用户在一个交易中执行多项操作,诸如交换和添加流动性。它跟踪进出资金的净余额。如果交易结束时还有债务未清,将回滚以确保安全和效率。
无限费用层级 (Unlimited Fee Tiers): 引入无限费用层级后,每个流动池可以拥有自己的费用结构,更精确地匹配不同的资产和交易策略。
与原生ETH的直接交易对 (Direct Trading Pairs with Native ETH): Uniswap V4 允许与普通 ETH 进行直接交易对,而不需要 Wrapped ETH (WETH)。这简化了交易并降低了交易成本。
社区驱动的创新 (Community-Driven Innovation): Uniswap V4 鼓励协作开发。其源代码向社区开放,以便进行贡献,促进对新功能和改进的积极参与和建议。
让我们来看看如何使用 Uniswap v4 进行交换。我们将探索智能合约中的关键功能。
合约初始化 (Contract Initialization): 合约使用 IPoolManager
接口的实例进行初始化,这样可以访问 Uniswap 流动池管理合约。
交换代币 (Swapping Tokens):
SwapTokens 函数负责启动代币交换操作。它接受三个参数:
poolKey
: 一个包含特定 Uniswap 流动池的详细信息的结构,用于交换,包括代币地址、费用、tick 间隔和Hook。struct PoolKey {
Currency currency0;
Currency currency1;
uint24 fee;
int24 tickSpacing;
IHooks hooks;
}
swapParams
: 额外参数,指定交换详细信息,如方向(买入或卖出)、交换数量和价格限制。sqrtPriceLimitX96
代表你可以接受的最低价格。它以 x * y
公式的平方根的形式表示。X96 表示这是在小数点右侧以 96 位精度表示的固定点十进制数。struct SwapParams {
bool zeroForOne;
int256 amountSpecified;
uint160 sqrtPriceLimitX96;
}
锁定和交换执行 (Locking and Swap Execution):
swapTokens
时,合约在 Uniswap 流动池管理器上调用 lock
函数,有效请求进行交换的权限。UniSwapTest
合约上的 lockAcquired
函数。lockAcquired
内,合约验证调用的完整性并检查交换截止日期是否已过。然后,它使用 Uniswap 流动池管理合约的 swap
函数执行交换操作,并相应结算结果代币的余额。结算代币余额 (Settling Token Balances):
_settleCurrencyBalance
函数负责在交换操作后结算代币余额。它区分原生代币 (ETH) 和 ERC20 代币,并相应处理代币转账。take
来回收所欠代币。否则,它通过将 ERC20 代币转账到池管理合约或直接发送原生 ETH 来结算所欠代币。工作库可以在 这里 找到。
git clone https://github.com/sanamummer/Uniswap-v4.git
cd Uniswap-v4
npm install
npm run createTestnet
一旦测试网上线,它的 RPC、Explorer 和 Faucet 详细信息将添加到 testnet.json
文件中。
.sol
智能合约,请运行以下命令:npx hardhat run scripts/deploy.js
现在将此合约地址传递给交换合约的构造函数参数,并使用以下命令部署它:
npx hardhat run scripts/Swap-tokens.js
点击 Explorer 链接以查看已验证的合约详细信息。
总之,我们已经学习了不同合约在 Uniswap v4 中的角色,以及如何将 Uniswap v3 最优地集成到我们的合约中。
关于 BuildBear:
BuildBear 是一个专为 DApp 开发和测试而设计的平台。开发者可以自由构建一个个性化的私有测试网沙盒,跨各种区块链网络。在 BuildBear 上,可以无限制地铸造原生和 ERC20 代币,加上快速的交易时间(低于 3 秒!),极大地增强了 DApp 开发周期。该平台配备了实时测试和调试的工具,确保开发者能够以无与伦比的简便性跟踪复杂的区块链交易。
与我们联系: Twitter | LinkedIn | Telegram | GitHub
作者:Sana
- 原文链接: medium.com/buildbear/int...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!