wireStargateTokens.js 1.7 KB

1234567891011121314151617181920212223242526272829
  1. const { getDeploymentAddresses } = require("../utils/readDeployments")
  2. const { getEndpointId } = require("../utils/network")
  3. const { getEndpointIdByName } = require("@layerzerolabs/core-sdk")
  4. task("wireStargateTokens", "connect the local stargate to a remote stargate by configuring the remote bridge")
  5. .addParam("targetNetworks", "the remote Stargate instance named by network")
  6. .setAction(async (taskArgs, hre) => {
  7. const StargateToken = await ethers.getContractFactory("StargateToken")
  8. const stargateTokenAddr = (await hre.deployments.get("StargateToken")).address
  9. const stargateToken = await StargateToken.attach(stargateTokenAddr)
  10. let targetNetworks = taskArgs.targetNetworks.split(",")
  11. for (let targetNetwork of targetNetworks) {
  12. let targetNetworkAddrs = getDeploymentAddresses(targetNetwork)
  13. let dstChainId = getEndpointIdByName(targetNetwork)
  14. let currenDstStargateAddr = await stargateToken.dstContractLookup(dstChainId)
  15. let targetStargateTokenAddr = ethers.utils.getAddress(targetNetworkAddrs["StargateToken"]) // cast to standardized address
  16. if (currenDstStargateAddr !== "0x" && ethers.utils.getAddress(currenDstStargateAddr) == targetStargateTokenAddr) {
  17. console.log(` ✅ ${hre.network.name} > setDestination(${dstChainId}, ${targetStargateTokenAddr}) | *already set*`)
  18. } else {
  19. let tx = await (await stargateToken.setDestination(dstChainId, targetStargateTokenAddr)).wait(1)
  20. console.log(` ✅ ${hre.network.name} > setDestination(${dstChainId}, ${targetStargateTokenAddr}) | tx: ${tx.transactionHash}`)
  21. }
  22. }
  23. })