createPools.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const { POOLS } = require("@layerzerolabs/stargate-sdk")
  2. const { getEndpointId } = require("../utils/network")
  3. task("createPools", "create the pools for the network").setAction(async (taskArgs) => {
  4. let router = await ethers.getContract("Router")
  5. let pools = POOLS[hre.network.name]
  6. // console.log(pools)
  7. // for(let poolId in pools){
  8. // console.log(pools[poolId].info)
  9. // console.log(`poolId: ${poolId}`)
  10. // console.table(pools[poolId].chainPaths)
  11. // }
  12. // make sure the token exists
  13. let tx
  14. for (let poolId in pools) {
  15. console.log(pools[poolId].info)
  16. console.log(`poolId: ${poolId}`)
  17. console.table(pools[poolId].chainPaths)
  18. let sharedDecimals = pools[poolId].info.sharedDecimals
  19. let address = pools[poolId].info.address
  20. let Token = await ethers.getContractFactory("MockToken")
  21. let token = await Token.attach(address)
  22. let name = await token.name()
  23. let symbol = await token.symbol()
  24. let decimals = await token.decimals()
  25. let poolName = `${name}-LP`
  26. let poolSymbol = `S*${symbol}`
  27. const factory = await ethers.getContract("Factory")
  28. try {
  29. tx = await (
  30. await router.createPool(
  31. poolId,
  32. token.address,
  33. sharedDecimals, // Stargate pairs shared decimals across chains
  34. decimals, // the tokens real decimals
  35. poolName,
  36. poolSymbol
  37. )
  38. ).wait()
  39. let poolAddr = await factory.getPool(poolId)
  40. console.log(`[${getEndpointId()}] createPool | name:${name} symbol:${symbol} decimals:${decimals} address:${token.address}`)
  41. console.log(`- tx: ${tx.transactionHash} | pool.address: ${poolAddr} name: ${poolName} symbol: ${poolSymbol}`)
  42. } catch (e) {
  43. if (e.error.message.includes("Stargate: Pool already created")) {
  44. let poolAddr = await factory.getPool(poolId)
  45. console.log(
  46. `[${getEndpointId()}] createPool | name:${name} symbol:${symbol} decimals:${decimals} address:${
  47. token.address
  48. } | *already created*`
  49. )
  50. console.log(`- pool.address: ${poolAddr} name: ${poolName} symbol: ${poolSymbol}`)
  51. }
  52. }
  53. }
  54. })