文章
视频
讲堂
百科图谱
线下集训
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
视频
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
5
各位大佬,有在Uniswap v4上添加流动性的示例代码吗,我觉得官方的test里面封装的东西太多了
回答问题即可获得
5
贡献值,回答被采纳后即可获得
9
学分。
0 条评论
分类:
Uniswap
请先
登录
后评论
默认排序
时间排序
1 个回答
七文
1天前
import { Contract, ethers } from 'ethers' import { MintOptions, Pool, Position, nearestUsableTick, TickMath, maxLiquidityForAmounts } from '@uniswap/v3-sdk' // 添加流动性的主要函数 async function addLiquidity({ token0Amount, token1Amount, minTick, maxTick, poolAddress, positionManagerAddress }: { token0Amount: string, token1Amount: string, minTick: number, maxTick: number, poolAddress: string, positionManagerAddress: string }) { // 1. 获取当前池子信息 const pool = await getPoolInfo(poolAddress) // 2. 计算流动性数量 const liquidity = maxLiquidityForAmounts( TickMath.getSqrtRatioAtTick(pool.tick), TickMath.getSqrtRatioAtTick(minTick), TickMath.getSqrtRatioAtTick(maxTick), ethers.utils.parseEther(token0Amount), ethers.utils.parseEther(token1Amount), true ) // 3. 准备添加流动性的参数 const params = { token0: pool.token0, token1: pool.token1, fee: pool.fee, tickLower: nearestUsableTick(minTick, pool.tickSpacing), tickUpper: nearestUsableTick(maxTick, pool.tickSpacing), amount0Desired: ethers.utils.parseEther(token0Amount), amount1Desired: ethers.utils.parseEther(token1Amount), amount0Min: 0, // 可以根据需要设置滑点保护 amount1Min: 0, // 可以根据需要设置滑点保护 recipient: await getWalletAddress(), deadline: Math.floor(Date.now() / 1000) + 60 * 20 // 20分钟后过期 } // 4. 调用合约添加流动性 const positionManager = new Contract( positionManagerAddress, UniswapV3NonfungiblePositionManagerABI, provider ) const tx = await positionManager.mint(params) await tx.wait() return tx } // 获取池子信息的辅助函数 async function getPoolInfo(poolAddress: string) { const poolContract = new Contract( poolAddress, IUniswapV3PoolABI, provider ) const [token0, token1, fee, tickSpacing, slot0, liquidity] = await Promise.all([ poolContract.token0(), poolContract.token1(), poolContract.fee(), poolContract.tickSpacing(), poolContract.slot0(), poolContract.liquidity() ]) return { token0, token1, fee, tickSpacing, tick: slot0.tick, sqrtPriceX96: slot0.sqrtPriceX96, liquidity } }
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
1
关注
收藏
0
收藏,
1203
浏览
KEN
提出于 2025-04-12 11:01
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: