请问Uniswap v3增加流动性和移除流动性调用的是哪个方法
请问Uniswap v3增加流动性和移除流动性调用的是哪个方法在 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]