판게아 풀 정보 가져오기

현재 판게아에 배포되어 있는 모든 풀의 정보를 가져오는 예제입니다.


/// MasterDeployer__factory는 판게아 프로토콜의 types/ 내에 있는 typechain 객체입니다. 
/// typechain와 ethers.js를 통해 JS 환경에서 간편하게 interaction할 수 있습니다.
import {ConcentratedLiquidityPool__factory, MasterDeployer__factory} from "./types";
import {ethers} from "ethers";

// baobab 환경의 경우
// * provider의 URL => https://public-node-api.klaytnapi.com/v1/baobab
// * masterDeployerAddress => 0x899d8Ff3d3BD16DBE4eFF245BdA27EF96C01044B
const provider = new ethers.providers.JsonRpcProvider("https://public-node-api.klaytnapi.com/v1/cypress");
const masterDeployerAddress = "0xEB4B1CE03bb947Ce23ABd1403dF7C9B86004178d";

async function readAllPools() {  
  const masterDeployer = await MasterDeployer__factory.connect(
      masterDeployerAddress, provider
  );

  /// 판게아에서 배포되어 있는 풀 갯수
  const totalPools = (await masterDeployer.totalPoolsCount()).toNumber();

  for (let i = 0; i < totalPools; i++) {
    /// 판게아의 풀 주소 가져오기
    const poolAddress = await masterDeployer.getPoolAddress(i);
    const pool = await ConcentratedLiquidityPool__factory.connect(
        poolAddress, provider
    );
    
    const [
      token0,  /// 풀의 두 토큰 중 토큰0의 주소
      token1,  /// 풀의 두 토큰 중 토큰1의 주소
      swapFee, /// 스왑 수수료
      reserves /// 풀에 있는 두 토큰의 reserve
    ] = await Promise.all([
        pool.token0(), pool.token1(), pool.swapFee(), pool.getReserves()
    ])

    console.log(`${poolAddress} | ${token0} | ${token1} | ${swapFee / 1e6}% | ${reserves} | ${reserves._reserve1}`);
  }
}

readAllPools();

Last updated