wireStargateTokens.js 1.7 KB

12345678910111213141516171819202122232425
  1. const {getDeploymentAddresses} = require("../utils/readDeployments")
  2. const {getEndpointIdByName} = require("../utils/layerzero")
  3. task("wireMirrorgateTokens", "connect the local mirrorgate to a remote mirrorgate by configuring the remote bridge")
  4. .addParam("targetNetworks", "the remote Mirrorgate instance named by network")
  5. .setAction(async (taskArgs, hre) => {
  6. const Mirrorgate = await ethers.getContractFactory("MirrorgateToken")
  7. const mirrorgateTokenAddr = (await hre.deployments.get("MirrorgateToken")).address
  8. const mirrorgateToken = await Mirrorgate.attach(mirrorgateTokenAddr)
  9. let targetNetworks = taskArgs.targetNetworks.split(",")
  10. for (let targetNetwork of targetNetworks) {
  11. let targetNetworkAddrs = getDeploymentAddresses(targetNetwork)
  12. let dstChainId = getEndpointIdByName(targetNetwork)
  13. let currenDstMirrorgateAddr = await mirrorgateToken.dstContractLookup(dstChainId)
  14. let targetMirrorgateTokenAddr = ethers.utils.getAddress(targetNetworkAddrs["MirrorgateToken"]) // cast to standardized address
  15. if (currenDstMirrorgateAddr !== "0x" && ethers.utils.getAddress(currenDstMirrorgateAddr) == targetMirrorgateTokenAddr) {
  16. console.log(` ✅ ${hre.network.name} > setDestination(${dstChainId}, ${targetMirrorgateTokenAddr}) | *already set*`)
  17. } else {
  18. let tx = await (await mirrorgateToken.setDestination(dstChainId, targetMirrorgateTokenAddr)).wait(1)
  19. console.log(` ✅ ${hre.network.name} > setDestination(${dstChainId}, ${targetMirrorgateTokenAddr}) | tx: ${tx.transactionHash}`)
  20. }
  21. }
  22. })