포지션 소각하기 (유동성 제거)
판게아의 풀에 존재하는 포지션에서 자산을 전체 또는 일부 인출하는 예제입니다.
import { ethers } from "ethers";
import {BigNumber} from "@ethersproject/bignumber";
/// concentrated Liquidity Pool Manager의 주소 (네트워크 별로 맞추어 지정)
const poolManagerAddress = "0xEd52BD01b0608a6B6d4f4E03aFfCe16c1FF19c23";
/// web3 Provider (metamask provider / jsonRPC provider 등)
const provider = ethers.getDefaultProvider();
// 포지션에서 소각하기
async function burnPosition(
tokenId:number, // tokenId
amount:string, // 소각할 유동성 갯수
recipient:string // 수취받을 계정
) {
const poolManager = await ConcentratedLiquidityPoolManager__factory.connect(positionManagerAddress, provider);
const tx = await poolManager.burn(
tokenId, // 유동성을 꺼낼 포지션, 모든 유동성 제거 시 제거
amount, // 소각할 유동성 크기, poolManager.positions(tokenId)을 통해 liquidity를 알수 있습니다.
recipient,
0, // token0에 대한 슬리피지, token0에 대해 이 이상 받지 않으면 revert
0, // token1에 대한 슬리피지, token1에 대해 이 이상 받지 않으면 revert
false // unwrap, wklay를 klay로 받고 싶은 경우에만 trues
);
await tx.wait();
}
Last updated