Commit 88dbdffd authored by Mark Tyneway's avatar Mark Tyneway

ctp: deterministic deployment optimist proxy

Deterministic deployment of the `OptimistProxy`
contract
parent 9c3a4a66
import { DeployConfig } from '../../src' import { DeployConfig } from '../../src'
const config: DeployConfig = { const config: DeployConfig = {
ddd: '0x9C6373dE60c2D3297b18A8f964618ac46E011B58', ddd: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
l2ProxyOwnerAddress: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', l2ProxyOwnerAddress: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
optimistName: 'OP Citizenship', optimistName: 'OP Citizenship',
optimistSymbol: 'OPNFT', optimistSymbol: 'OPNFT',
......
...@@ -4,31 +4,33 @@ import { HardhatRuntimeEnvironment } from 'hardhat/types' ...@@ -4,31 +4,33 @@ import { HardhatRuntimeEnvironment } from 'hardhat/types'
import '@eth-optimism/hardhat-deploy-config' import '@eth-optimism/hardhat-deploy-config'
import '@nomiclabs/hardhat-ethers' import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy' import 'hardhat-deploy'
import { import { assertContractVariable } from '@eth-optimism/contracts-bedrock/src/deploy-utils'
assertContractVariable,
deploy,
} from '@eth-optimism/contracts-bedrock/src/deploy-utils'
import { utils } from 'ethers' import { utils } from 'ethers'
const { getAddress } = utils const { getAddress } = utils
const deployFn: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { const deployFn: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
const { deployer } = await hre.getNamedAccounts() const { deployer } = await hre.getNamedAccounts()
const ddd = hre.deployConfig.ddd
if (getAddress(deployer) !== getAddress(ddd)) {
throw new Error('Must deploy with the ddd')
}
const Deployment__Optimist = await hre.deployments.get('Optimist') const Deployment__Optimist = await hre.deployments.get('Optimist')
console.log(`Deploying OptimistProxy with ${deployer}`) console.log(`Deploying OptimistProxy with ${deployer}`)
await deploy({ const { deploy } = await hre.deployments.deterministic('OptimistProxy', {
hre, salt: hre.ethers.utils.solidityKeccak256(['string'], ['OptimistProxy']),
name: 'OptimistProxy',
contract: 'Proxy', contract: 'Proxy',
from: deployer,
args: [deployer], args: [deployer],
postDeployAction: async (contract) => { log: true,
await assertContractVariable(contract, 'admin', deployer)
},
}) })
await deploy()
const Deployment__OptimistProxy = await hre.deployments.get('OptimistProxy') const Deployment__OptimistProxy = await hre.deployments.get('OptimistProxy')
console.log(`OptimistProxy deployed to ${Deployment__OptimistProxy.address}`) console.log(`OptimistProxy deployed to ${Deployment__OptimistProxy.address}`)
...@@ -79,6 +81,20 @@ const deployFn: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { ...@@ -79,6 +81,20 @@ const deployFn: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
} else { } else {
console.log('admin already set to proxy owner address') console.log('admin already set to proxy owner address')
} }
const Deployment__AttestationStation = await hre.deployments.get(
'AttestationStationProxy'
)
assertContractVariable(Optimist, 'name', hre.deployConfig.optimistName)
assertContractVariable(Optimist, 'symbol', hre.deployConfig.optimistSymbol)
assertContractVariable(
Optimist,
'ATTESTATION_STATION',
Deployment__AttestationStation.address
)
assertContractVariable(Optimist, 'ATTESTOR', hre.deployConfig.attestorAddress)
assertContractVariable(Optimist, 'version', '0.0.1')
} }
deployFn.tags = ['OptimistProxy'] deployFn.tags = ['OptimistProxy']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment