013-ChugSplashDictator.deploy.ts 1.43 KB
Newer Older
1 2 3 4 5 6 7 8 9
/* Imports: External */
import { DeployFunction } from 'hardhat-deploy/dist/types'
import { ethers } from 'ethers'

/* Imports: Internal */
import { predeploys } from '../src/predeploys'
import { getContractDefinition } from '../src/contract-defs'
import {
  getContractFromArtifact,
10
  deployAndVerifyAndThen,
11
} from '../src/deploy-utils'
12
import { names } from '../src/address-names'
13 14 15 16 17 18 19 20 21 22 23 24 25

const deployFn: DeployFunction = async (hre) => {
  const Proxy__OVM_L1StandardBridge = await getContractFromArtifact(
    hre,
    'Proxy__OVM_L1StandardBridge'
  )

  // Note: if the contract being deployed has immutable values this approach would not work.
  const bridgeArtifact = getContractDefinition('L1StandardBridge')
  const bridgeCode = bridgeArtifact.deployedBytecode

  const Proxy__OVM_L1CrossDomainMessenger = await getContractFromArtifact(
    hre,
26
    names.managed.contracts.Proxy__OVM_L1CrossDomainMessenger
27 28
  )

29
  await deployAndVerifyAndThen({
30
    hre,
31
    name: names.unmanaged.ChugSplashDictator,
32 33
    args: [
      Proxy__OVM_L1StandardBridge.address,
34
      hre.deployConfig.ovmAddressManagerOwner,
35 36 37 38 39 40 41 42 43 44 45 46
      ethers.utils.keccak256(bridgeCode),
      ethers.utils.hexZeroPad('0x00', 32),
      ethers.utils.hexZeroPad(Proxy__OVM_L1CrossDomainMessenger.address, 32),
      ethers.utils.hexZeroPad('0x01', 32),
      ethers.utils.hexZeroPad(predeploys.L2StandardBridge, 32),
    ],
  })
}

deployFn.tags = ['upgrade', 'ChugSplashDictator']

export default deployFn