找回密码
 立即注册
搜索
热搜: GTokenTool
查看: 118|回复: 1

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

[复制链接]

212

主题

211

回帖

1228

积分

管理员

积分
1228
发表于 2025-7-24 19:19:28 | 显示全部楼层 |阅读模式
请问Uniswap v3增加流动性和移除流动性调用的是哪个方法

212

主题

211

回帖

1228

积分

管理员

积分
1228
 楼主| 发表于 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 提取累积的手续费。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telegram|手机版|小黑屋|GTokenTool

GMT+8, 2025-9-11 04:30 , Processed in 0.020061 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表