nft-bridge-deploy-helpers.ts 2.11 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import { utils } from 'ethers'

// https://optimistic.etherscan.io/address/0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0
export const l2MainnetMultisig = '0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0'
// https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A
export const l1MainnetMultisig = '0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A'
// https://goerli.etherscan.io/address/0xf80267194936da1E98dB10bcE06F3147D580a62e
export const goerliAdmin = '0xf80267194936da1E98dB10bcE06F3147D580a62e'
export const predeploy = '0x4200000000000000000000000000000000000014'
export const predeployDeployer = '0xdfc82d475833a50de90c642770f34a9db7deb725'

export const isTargetL2Network = (network: string): boolean => {
  switch (network) {
    case 'optimism':
    case 'optimism-goerli':
    case 'ops-l2':
17
    case 'optimism-kovan':
18 19 20 21 22 23 24 25 26
      return true
    default:
      return false
  }
}

export const isTargetL1Network = (network: string): boolean => {
  switch (network) {
    case 'mainnet':
27
    case 'ethereum':
28 29
    case 'goerli':
    case 'ops-l1':
30
    case 'kovan':
31 32 33 34 35 36 37 38 39 40 41
      return true
    default:
      return false
  }
}

export const getProxyAdmin = (network: string): string => {
  switch (network) {
    case 'optimism':
      return l2MainnetMultisig
    case 'mainnet':
42
    case 'ethereum':
43
      return l1MainnetMultisig
44 45 46
    case 'kovan':
    case 'optimism-kovan':
      return goerliAdmin
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
    case 'goerli':
    case 'optimism-goerli':
      return goerliAdmin
    case 'ops-l1':
    case 'ops-l2':
      return predeployDeployer
    default:
      throw new Error(`unknown network ${network}`)
  }
}

export const validateERC721Bridge = async (hre, address: string, expected) => {
  const L1ERC721Bridge = await hre.ethers.getContractAt('ERC721Bridge', address)

  const messenger = await L1ERC721Bridge.messenger()
  const otherBridge = await L1ERC721Bridge.otherBridge()

  if (utils.getAddress(messenger) !== utils.getAddress(expected.messenger)) {
    throw new Error(`messenger mismatch`)
  }

  if (
    utils.getAddress(otherBridge) !== utils.getAddress(expected.otherBridge)
  ) {
    throw new Error(`otherBridge mismatch`)
  }
}