admin 发表于 2025-7-24 19:19:28

请问Uniswap v3增加流动性和移除流动性调用的是哪个方法

请问Uniswap v3增加流动性和移除流动性调用的是哪个方法

admin 发表于 2025-7-24 19:20:44

在 Uniswap V3 中,增加流动性和移除流动性是通过不同的方法实现的,具体取决于你是直接与智能合约交互还是通过前端界面操作。以下是核心方法和技术细节:1. 增加流动性(Deposit Liquidity)
[*]核心方法:mint

[*]在 NonfungiblePositionManager 合约中,用户通过调用 mint 方法创建新的流动性头寸(即 LP NFT),或向已有头寸添加流动性。
[*]参数:包括代币对、价格区间(tickLower/tickUpper)、流动性数量等。
[*]触发事件:IncreaseLiquidity(如果是对现有头寸操作)。
[*]交互流程:
[*]用户调用 NonfungiblePositionManager.mint() 创建新头寸。
[*]合约内部会调用 UniswapV3Pool.mint() 实际注入流动性。

[*]前端示例(通过 SDK):javascript





import { NonfungiblePositionManager } from '@uniswap/v3-sdk';const tx = await NonfungiblePositionManager.mint(params);

2. 移除流动性(Withdraw Liquidity)
[*]核心方法:decreaseLiquidity 或 burn

[*]decreaseLiquidity:部分移除流动性(需指定移除的流动性数量)。
[*]burn:完全移除流动性并销毁头寸(需先调用 decreaseLiquidity 归零流动性)。
[*]触发事件:DecreaseLiquidity。
[*]交互流程:
[*]用户调用 NonfungiblePositionManager.decreaseLiquidity() 减少流动性。
[*]通过 collect 方法提取释放的代币(包括手续费收益)。
[*]若需完全退出,再调用 burn 销毁 NFT 头寸。

[*]前端示例:javascript





await NonfungiblePositionManager.decreaseLiquidity({tokenId: NFT_ID,liquidity: LIQUIDITY_AMOUNT,});await NonfungiblePositionManager.collect({tokenId: NFT_ID,recipient: WALLET_ADDRESS,});

3. 关键合约与方法
[*]NonfungiblePositionManager(主交互合约):

[*]mint():创建/增加流动性。
[*]decreaseLiquidity() + collect():移除流动性并提取代币。
[*]burn():销毁头寸。
[*]UniswapV3Pool(底层池合约):
[*]mint() / burn():实际处理流动性增减(通常由上层合约调用)。

4. 注意事项
[*]Gas 优化:批量操作(如 multicall)可合并多个步骤(如增减流动性+提取代币)。
[*]价格区间:V3 的流动性必须指定价格区间,移除时需确保头寸未完全超出当前价格范围。
[*]手续费:移除流动性时需手动调用 collect 提取累积的手续费。

页: [1]
查看完整版本: 请问Uniswap v3增加流动性和移除流动性调用的是哪个方法