Commit fc07158e authored by Mark Tyneway's avatar Mark Tyneway Committed by GitHub

feat: crossdomainmessenger address setup, deploy overrides (#59)

* Fix L2XDomainMessenger addr in deploy

* xdomain: generalize config, add deploy overrides
Co-authored-by: default avatarKarl Floersch <karl@karlfloersch.com>
parent 476eb8f1
...@@ -20,6 +20,8 @@ const FORCE_INCLUSION_PERIOD_SECONDS = env.FORCE_INCLUSION_PERIOD_SECONDS || (30 ...@@ -20,6 +20,8 @@ const FORCE_INCLUSION_PERIOD_SECONDS = env.FORCE_INCLUSION_PERIOD_SECONDS || (30
const CHAIN_ID = env.CHAIN_ID || 420; // layer 2 chainid const CHAIN_ID = env.CHAIN_ID || 420; // layer 2 chainid
const USE_LEDGER = env.USE_LEDGER || false; const USE_LEDGER = env.USE_LEDGER || false;
const HD_PATH = env.HD_PATH || utils.defaultPath; const HD_PATH = env.HD_PATH || utils.defaultPath;
const L2_CROSS_DOMAIN_MESSENGER_ADDRESS =
env.L2_CROSS_DOMAIN_MESSENGER_ADDRESS || '0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000';
(async () => { (async () => {
const provider = new JsonRpcProvider(web3Url); const provider = new JsonRpcProvider(web3Url);
...@@ -53,7 +55,8 @@ const HD_PATH = env.HD_PATH || utils.defaultPath; ...@@ -53,7 +55,8 @@ const HD_PATH = env.HD_PATH || utils.defaultPath;
sequencer: SEQUENCER_ADDRESS, sequencer: SEQUENCER_ADDRESS,
}, },
ovmGlobalContext: { ovmGlobalContext: {
ovmCHAINID: CHAIN_ID ovmCHAINID: CHAIN_ID,
L2CrossDomainMessengerAddress: L2_CROSS_DOMAIN_MESSENGER_ADDRESS
}, },
ovmGasMeteringConfig: { ovmGasMeteringConfig: {
minTransactionGasLimit: MIN_TRANSACTION_GAS_LIMIT, minTransactionGasLimit: MIN_TRANSACTION_GAS_LIMIT,
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
"deploy": "./bin/deploy.js" "deploy": "./bin/deploy.js"
}, },
"dependencies": { "dependencies": {
"@ethersproject/contracts": "^5.0.5",
"@ethersproject/hardware-wallets": "^5.0.8", "@ethersproject/hardware-wallets": "^5.0.8",
"ethers": "5.0.0" "ethers": "5.0.0"
}, },
......
/* External Imports */ /* External Imports */
import { Signer, ContractFactory, Contract } from 'ethers' import { Signer, ContractFactory, Contract } from 'ethers'
import { Overrides } from '@ethersproject/contracts'
/* Internal Imports */ /* Internal Imports */
import { getContractFactory } from '../contract-defs' import { getContractFactory } from '../contract-defs'
...@@ -14,6 +15,7 @@ export interface RollupDeployConfig { ...@@ -14,6 +15,7 @@ export interface RollupDeployConfig {
} }
ovmGlobalContext: { ovmGlobalContext: {
ovmCHAINID: number ovmCHAINID: number
L2CrossDomainMessengerAddress: string
} }
transactionChainConfig: { transactionChainConfig: {
sequencer: string | Signer sequencer: string | Signer
...@@ -23,6 +25,7 @@ export interface RollupDeployConfig { ...@@ -23,6 +25,7 @@ export interface RollupDeployConfig {
owner: string | Signer owner: string | Signer
allowArbitraryContractDeployment: boolean allowArbitraryContractDeployment: boolean
} }
deployOverrides?: Overrides
dependencies?: string[] dependencies?: string[]
} }
...@@ -55,12 +58,12 @@ export const makeContractDeployConfig = async ( ...@@ -55,12 +58,12 @@ export const makeContractDeployConfig = async (
.connect(config.deploymentSigner) .connect(config.deploymentSigner)
.attach(contracts.Proxy__OVM_L1CrossDomainMessenger.address) .attach(contracts.Proxy__OVM_L1CrossDomainMessenger.address)
await xDomainMessenger.initialize(AddressManager.address) await xDomainMessenger.initialize(AddressManager.address)
await AddressManager.setAddress(
'OVM_L2CrossDomainMessenger',
config.ovmGlobalContext.L2CrossDomainMessengerAddress
)
}, },
}, },
OVM_L2CrossDomainMessenger: {
factory: getContractFactory('OVM_L2CrossDomainMessenger'),
params: [AddressManager.address],
},
OVM_CanonicalTransactionChain: { OVM_CanonicalTransactionChain: {
factory: getContractFactory('OVM_CanonicalTransactionChain'), factory: getContractFactory('OVM_CanonicalTransactionChain'),
params: [ params: [
......
...@@ -41,7 +41,10 @@ export const deploy = async ( ...@@ -41,7 +41,10 @@ export const deploy = async (
try { try {
contracts[name] = await contractDeployParameters.factory contracts[name] = await contractDeployParameters.factory
.connect(config.deploymentSigner) .connect(config.deploymentSigner)
.deploy(...(contractDeployParameters.params || [])) .deploy(
...(contractDeployParameters.params || []),
config.deployOverrides || {}
)
await AddressManager.setAddress(name, contracts[name].address) await AddressManager.setAddress(name, contracts[name].address)
} catch (err) { } catch (err) {
failedDeployments.push(name) failedDeployments.push(name)
......
...@@ -118,6 +118,8 @@ export const makeStateDump = async (): Promise<any> => { ...@@ -118,6 +118,8 @@ export const makeStateDump = async (): Promise<any> => {
}, },
ovmGlobalContext: { ovmGlobalContext: {
ovmCHAINID: 420, ovmCHAINID: 420,
L2CrossDomainMessengerAddress:
'0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000',
}, },
transactionChainConfig: { transactionChainConfig: {
sequencer: signer, sequencer: signer,
......
...@@ -213,7 +213,7 @@ ...@@ -213,7 +213,7 @@
dependencies: dependencies:
"@ethersproject/bignumber" "^5.0.7" "@ethersproject/bignumber" "^5.0.7"
"@ethersproject/contracts@5.0.5", "@ethersproject/contracts@^5.0.0": "@ethersproject/contracts@5.0.5", "@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.0.5":
version "5.0.5" version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.5.tgz#64831a341ec8ca225e83ff3e9437c26b970fd5d7" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.5.tgz#64831a341ec8ca225e83ff3e9437c26b970fd5d7"
integrity sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw== integrity sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw==
......
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