From e7ef53e27cb906d7128a3e512e7082e4176786e4 Mon Sep 17 00:00:00 2001 From: David <104078303+davidtaikocha@users.noreply.github.com> Date: Sat, 10 Dec 2022 12:10:41 +0800 Subject: [PATCH] feat(deployment): fund L1 bridge (#400) * feat(deployment): fund L1 bridge * doc: update comments * test: update test config Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/protocol/package.json | 4 +- packages/protocol/tasks/deploy_L1.ts | 41 +++++++++++++++++++ .../protocol/test/genesis/test_config.json | 5 ++- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index a13293c7b25..27908cf82d6 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -16,7 +16,7 @@ "generate:genesis": "ts-node ./utils/generate_genesis/main.ts", "test:genesis": "./test/genesis/generate_genesis.test.sh", "test:integration": "./test/test_integration.sh", - "deploy:hardhat": "LOG_LEVEL=debug pnpm hardhat deploy_L1 --network hardhat --dao-vault 0xdf08f82de32b8d460adbe8d72043e3a7e25a3b39 --team-vault 0xdf08f82de32b8d460adbe8d72043e3a7e25a3b39 --l2-genesis-block-hash 0xee1950562d42f0da28bd4550d88886bc90894c77c9c9eaefef775d4c8223f259 --confirmations 1", + "deploy:hardhat": "LOG_LEVEL=debug pnpm hardhat deploy_L1 --network hardhat --dao-vault 0xdf08f82de32b8d460adbe8d72043e3a7e25a3b39 --team-vault 0xdf08f82de32b8d460adbe8d72043e3a7e25a3b39 --l2-genesis-block-hash 0xee1950562d42f0da28bd4550d88886bc90894c77c9c9eaefef775d4c8223f259 --bridge-funder-private-key ddbf12f72c946bb1e6de5eaf580c51db51828ba198d9b0dba9c7d48ec748dc04 --bridge-fund 0xff --confirmations 1", "lint-staged": "lint-staged --allow-empty" }, "lint-staged": { @@ -81,4 +81,4 @@ "@openzeppelin/contracts": "^4.5.0", "@openzeppelin/contracts-upgradeable": "^4.5.1" } -} +} \ No newline at end of file diff --git a/packages/protocol/tasks/deploy_L1.ts b/packages/protocol/tasks/deploy_L1.ts index 5dfdb613381..0cd99308fb8 100644 --- a/packages/protocol/tasks/deploy_L1.ts +++ b/packages/protocol/tasks/deploy_L1.ts @@ -19,6 +19,18 @@ task("deploy_L1") ethers.constants.HashZero ) .addOptionalParam("l2ChainId", "L2 chain id", config.K_CHAIN_ID, types.int) + .addOptionalParam( + "bridgeFunderPrivateKey", + "Private key of the L1 bridge funder", + "", + types.string + ) + .addOptionalParam( + "bridgeFund", + "L1 bridge's initial fund in hex", + "", + types.string + ) .addOptionalParam( "confirmations", "Number of confirmations to wait for deploy transaction.", @@ -51,6 +63,8 @@ export async function deployContracts(hre: any) { const l2GenesisBlockHash = hre.args.l2GenesisBlockHash const taikoL2Address = hre.args.taikoL2 const l2ChainId = hre.args.l2ChainId + const bridgeFunderPrivateKey = hre.args.bridgeFunderPrivateKey + const bridgeFund = hre.args.bridgeFund log.debug(`network: ${network}`) log.debug(`chainId: ${chainId}`) @@ -59,6 +73,8 @@ export async function deployContracts(hre: any) { log.debug(`l2GenesisBlockHash: ${l2GenesisBlockHash}`) log.debug(`taikoL2Address: ${taikoL2Address}`) log.debug(`l2ChainId: ${l2ChainId}`) + log.debug(`bridgeFunderPrivateKey: ${bridgeFunderPrivateKey}`) + log.debug(`bridgeFund: ${bridgeFund}`) log.debug(`confirmations: ${hre.args.confirmations}`) log.debug() @@ -131,6 +147,31 @@ export async function deployContracts(hre: any) { await AddressManager.setAddress(`${chainId}.bridge`, Bridge.address) ) + // Fund L1 bridge, which is necessary when there is a L2 faucet + if ( + bridgeFunderPrivateKey.length && + hre.ethers.utils.isHexString(bridgeFund) + ) { + const funder = new hre.ethers.Wallet( + bridgeFunderPrivateKey, + hre.ethers.provider + ) + + await utils.waitTx( + hre, + await funder.sendTransaction({ + to: Bridge.address, + value: hre.ethers.BigNumber.from(bridgeFund), + }) + ) + + log.debug( + `L1 bridge balance: ${hre.ethers.utils.hexlify( + await hre.ethers.provider.getBalance(Bridge.address) + )}` + ) + } + // save deployments const deployments = { network, diff --git a/packages/protocol/test/genesis/test_config.json b/packages/protocol/test/genesis/test_config.json index 36ec33239d9..9f54e7ffb90 100644 --- a/packages/protocol/test/genesis/test_config.json +++ b/packages/protocol/test/genesis/test_config.json @@ -80,7 +80,8 @@ "TokenVault": "0x0000777700000000000000000000000000000002", "EtherVault": "0x0000777700000000000000000000000000000003", "Bridge": "0x0000777700000000000000000000000000000004", - "TestERC20": "0x0000777700000000000000000000000000000005" + "TestERC20": "0x0000777700000000000000000000000000000005", + "AddressManager": "0x0000777700000000000000000000000000000006" }, "predeployERC20": true -} +} \ No newline at end of file