57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
require('dotenv').config()
|
|
import hre from 'hardhat'
|
|
import { getNetworkDataByNetworkName } from '../shared/utils'
|
|
|
|
const ethers = hre.ethers
|
|
|
|
async function main () {
|
|
console.log('network:', await ethers.provider.getNetwork())
|
|
|
|
const signer = (await ethers.getSigners())[0]
|
|
console.log('signer:', await signer.getAddress())
|
|
|
|
const l1NetworkName = 'kovan'
|
|
const l2NetworkName = 'optimism'
|
|
|
|
let L2_TokenBridge
|
|
if (l2NetworkName === 'optimism') {
|
|
L2_TokenBridge = await ethers.getContractFactory('OVM_L2_ERC20_Bridge', {
|
|
signer: (await ethers.getSigners())[0]
|
|
})
|
|
} else if (l2NetworkName === 'arbitrum') {
|
|
L2_TokenBridge = await ethers.getContractFactory('Arbitrum_L2_ERC20_Bridge', {
|
|
signer: (await ethers.getSigners())[0]
|
|
})
|
|
|
|
}
|
|
|
|
const networkData = getNetworkDataByNetworkName(l1NetworkName)
|
|
const { l2MessengerAddress } = networkData[l2NetworkName]
|
|
// Get this after deploying the L1 equivalent
|
|
const l1TokenBridge = ''
|
|
if (!l1TokenBridge) {
|
|
throw new Error('Deploy an L1 Token Bridge')
|
|
}
|
|
console.log(l2MessengerAddress)
|
|
console.log(l1TokenBridge)
|
|
|
|
const l2_tokenBridge = await L2_TokenBridge.deploy(
|
|
l2MessengerAddress,
|
|
l1TokenBridge
|
|
)
|
|
|
|
await l2_tokenBridge.deployed()
|
|
console.log('L2 Token Bridge address:', l2_tokenBridge.address)
|
|
console.log(
|
|
'deployed bytecode:',
|
|
await ethers.provider.getCode(l2_tokenBridge.address)
|
|
)
|
|
console.log('complete')
|
|
}
|
|
|
|
main()
|
|
.catch(error => {
|
|
console.error(error)
|
|
})
|
|
.finally(() => process.exit(0))
|