From 7b9566db7abdc3c15de71862095e38a9c0355feb Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Tue, 31 Oct 2023 12:48:59 +0100 Subject: [PATCH 01/23] Update Dockerfile to use token bridge repo instead of SDK --- tokenbridge/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tokenbridge/Dockerfile b/tokenbridge/Dockerfile index 09156556..37eb13f6 100644 --- a/tokenbridge/Dockerfile +++ b/tokenbridge/Dockerfile @@ -1,7 +1,8 @@ FROM node:16-bullseye-slim RUN apt-get update && \ - apt-get install -y git docker.io + apt-get install -y git docker.io python3 chromium build-essential WORKDIR /workspace -RUN git clone --depth 1 -b v3.1.4 https://github.com/OffchainLabs/arbitrum-sdk.git ./ +RUN git clone -b add-creator-ci https://github.com/OffchainLabs/token-bridge-contracts.git ./ RUN yarn install +RUN yarn build ENTRYPOINT ["yarn"] From 5d69cf9187d9cfa21eab477788a48dbba7bd7355 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Tue, 31 Oct 2023 12:57:30 +0100 Subject: [PATCH 02/23] Add option to deploy L2-L3 token bridge --- test-node.bash | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/test-node.bash b/test-node.bash index 355d622a..322f9854 100755 --- a/test-node.bash +++ b/test-node.bash @@ -40,7 +40,8 @@ consensusclient=false redundantsequencers=0 dev_build_nitro=false dev_build_blockscout=false -l3CustomFeeToken=false +l3_custom_fee_token=false +l3_token_bridge=false batchposters=1 devprivkey=b6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 l1chainid=1337 @@ -123,7 +124,15 @@ while [[ $# -gt 0 ]]; do echo "Error: --l3-fee-token requires --l3node to be provided." exit 1 fi - l3CustomFeeToken=true + l3_custom_fee_token=true + shift + ;; + --l3-token-bridge) + if ! $l3node; then + echo "Error: --l3-token-bridge requires --l3node to be provided." + exit 1 + fi + l3_token_bridge=true shift ;; --redundantsequencers) @@ -146,6 +155,7 @@ while [[ $# -gt 0 ]]; do echo --pos: l1 is a proof-of-stake chain \(using prysm for consensus\) echo --validate: heavy computation, validating all blocks in WASM echo --l3-fee-token: L3 chain is set up to use custom fee token. Only valid if also '--l3node' is provided + echo --l3-token-bridge: Deploy L2-L3 token bridge. Only valid if also '--l3node' is provided echo --batchposters: batch posters [0-3] echo --redundantsequencers redundant sequencers [0-3] echo --detach: detach from nodes after running them @@ -350,7 +360,7 @@ if $force_init; then echo == Writing l3 chain config docker-compose run scripts write-l3-chain-config - if $l3CustomFeeToken; then + if $l3_custom_fee_token; then echo == Deploying custom fee token nativeTokenAddress=`docker-compose run scripts create-erc20 --deployer user_fee_token_deployer --mintTo user_token_bridge_deployer | tail -n 1 | awk '{ print $NF }'` EXTRA_L3_DEPLOY_FLAG="--nativeTokenAddress $nativeTokenAddress" @@ -365,7 +375,15 @@ if $force_init; then echo == Funding l3 funnel and dev key docker-compose up -d l3node poster - if ! $l3CustomFeeToken; then + if $l3_token_bridge; then + echo == Deploying L2-L3 token bridge + rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e CHILD_RPC=http://l3node:3347 tokenbridge deploy:local:token-bridge + docker-compose run --entrypoint sh tokenbridge -c "cat network.json" + echo + fi + + if ! $l3_custom_fee_token; then docker-compose run scripts bridge-to-l3 --ethamount 50000 --wait docker-compose run scripts bridge-to-l3 --ethamount 500 --wait --from "key_0x$devprivkey" fi From e173aeeb92f7dccc2ce66cccd561be314516a343 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Tue, 31 Oct 2023 14:55:52 +0100 Subject: [PATCH 03/23] Deploy L1-L2 token bridge using token bridge creator --- test-node.bash | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test-node.bash b/test-node.bash index 322f9854..55b2573d 100755 --- a/test-node.bash +++ b/test-node.bash @@ -239,7 +239,7 @@ if $force_build; then fi fi LOCAL_BUILD_NODES=scripts - if $tokenbridge; then + if $tokenbridge || $l3_token_bridge; then LOCAL_BUILD_NODES="$LOCAL_BUILD_NODES tokenbridge" fi docker-compose build --no-rm $LOCAL_BUILD_NODES @@ -338,9 +338,10 @@ if $force_init; then docker-compose run scripts bridge-funds --ethamount 1000 --wait --from "key_0x$devprivkey" if $tokenbridge; then - echo == Deploying token bridge - docker-compose run -e ARB_KEY=$devprivkey -e ETH_KEY=$devprivkey tokenbridge gen:network - docker-compose run --entrypoint sh tokenbridge -c "cat localNetwork.json" + echo == Deploying L1-L2 token bridge + rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge + docker-compose run --entrypoint sh tokenbridge -c "cat network.json" echo fi From e7e95b06d8c6c455d749bccf944d1af566b58ae4 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Tue, 31 Oct 2023 16:37:19 +0100 Subject: [PATCH 04/23] Provide rollup owner --- test-node.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index 55b2573d..14450e50 100755 --- a/test-node.bash +++ b/test-node.bash @@ -340,7 +340,7 @@ if $force_init; then if $tokenbridge; then echo == Deploying L1-L2 token bridge rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge + docker-compose run -e ROLLUP_OWNER=$sequenceraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge docker-compose run --entrypoint sh tokenbridge -c "cat network.json" echo fi From f2fd0bd90856dff5757e6ea6b03ef0228a5a8ea3 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Thu, 2 Nov 2023 16:56:50 +0100 Subject: [PATCH 05/23] Add delay for services to be ready --- test-node.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/test-node.bash b/test-node.bash index 14450e50..855deab3 100755 --- a/test-node.bash +++ b/test-node.bash @@ -378,6 +378,7 @@ if $force_init; then if $l3_token_bridge; then echo == Deploying L2-L3 token bridge + sleep 120 rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e CHILD_RPC=http://l3node:3347 tokenbridge deploy:local:token-bridge docker-compose run --entrypoint sh tokenbridge -c "cat network.json" From 1d7ba35cfccc803b5244cbf9f0f87a0a9040dbb1 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Thu, 2 Nov 2023 17:30:38 +0100 Subject: [PATCH 06/23] Delay before the L1-L2 token bridge deployment --- test-node.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index 855deab3..3e015225 100755 --- a/test-node.bash +++ b/test-node.bash @@ -339,6 +339,7 @@ if $force_init; then if $tokenbridge; then echo == Deploying L1-L2 token bridge + sleep 120 rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` docker-compose run -e ROLLUP_OWNER=$sequenceraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge docker-compose run --entrypoint sh tokenbridge -c "cat network.json" @@ -378,7 +379,6 @@ if $force_init; then if $l3_token_bridge; then echo == Deploying L2-L3 token bridge - sleep 120 rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e CHILD_RPC=http://l3node:3347 tokenbridge deploy:local:token-bridge docker-compose run --entrypoint sh tokenbridge -c "cat network.json" From e432e19414ae6fb21e3056808ca7a9e5d2084d7f Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 3 Nov 2023 09:57:51 +0100 Subject: [PATCH 07/23] Add support for native L2-L3 bridging of the fee token --- scripts/ethcommands.ts | 61 ++++++++++++++++++++++++++++++++++++++++-- test-node.bash | 11 +++++--- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/scripts/ethcommands.ts b/scripts/ethcommands.ts index 7442fb47..634825d5 100644 --- a/scripts/ethcommands.ts +++ b/scripts/ethcommands.ts @@ -52,6 +52,32 @@ async function bridgeFunds(argv: any, parentChainUrl: string, chainUrl: string, } } +async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: string, inboxAddr: string) { + argv.provider = new ethers.providers.WebSocketProvider(parentChainUrl); + + argv.to = "address_" + inboxAddr; + + const iface = new ethers.utils.Interface(["function depositERC20(uint256 amount)"]) + argv.data = iface.encodeFunctionData("depositERC20", [ethers.utils.parseEther(argv.amount)]); + + await runStress(argv, sendTransaction); + + argv.provider.destroy(); + if (argv.wait) { + const childProvider = new ethers.providers.WebSocketProvider(chainUrl); + const account = namedAccount(argv.from, argv.threadId).connect(childProvider) + const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); + while (true) { + const balance = await account.getBalance() + if (balance.gte(ethers.utils.parseEther(argv.amount))) { + return + } + await sleep(100) + } + } +} + + export const bridgeFundsCommand = { command: "bridge-funds", describe: "sends funds from l1 to l2", @@ -84,7 +110,6 @@ export const bridgeFundsCommand = { }, }; - export const bridgeToL3Command = { command: "bridge-to-l3", describe: "sends funds from l2 to l3", @@ -117,6 +142,38 @@ export const bridgeToL3Command = { }, }; +export const bridgeNativeTokenToL3Command = { + command: "bridge-native-token-to-l3", + describe: "bridge native token from l2 to l3", + builder: { + amount: { + string: true, + describe: "amount to transfer", + default: "10", + }, + from: { + string: true, + describe: "account (see general help)", + default: "funnel", + }, + wait: { + boolean: true, + describe: "wait till l3 has balance of amount", + default: false, + }, + }, + handler: async (argv: any) => { + const deploydata = JSON.parse( + fs + .readFileSync(path.join(consts.configpath, "l3deployment.json")) + .toString() + ); + const inboxAddr = ethers.utils.hexlify(deploydata.inbox); + + await bridgeFunds(argv, argv.l2url, argv.l3url, inboxAddr) + }, +}; + export const createERC20Command = { command: "create-erc20", describe: "creates simple ERC20 on L2", @@ -228,7 +285,7 @@ export const sendL2Command = { export const sendL3Command = { command: "send-l3", - describe: "sends funds between l2 accounts", + describe: "sends funds between l3 accounts", builder: { ethamount: { string: true, diff --git a/test-node.bash b/test-node.bash index 3e015225..a1cfcd72 100755 --- a/test-node.bash +++ b/test-node.bash @@ -385,9 +385,14 @@ if $force_init; then echo fi - if ! $l3_custom_fee_token; then - docker-compose run scripts bridge-to-l3 --ethamount 50000 --wait - docker-compose run scripts bridge-to-l3 --ethamount 500 --wait --from "key_0x$devprivkey" + echo == Fund L3 accounts + if $l3_custom_fee_token; then + docker-compose run scripts bridge-to-l3 --amount 50000 --wait + docker-compose run scripts bridge-to-l3 --amount 500 --wait --from "key_0x$devprivkey" + else + docker-compose run scripts bridge-to-l3 --amount 50000 --from user_token_bridge_deployer --wait + docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait + docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait fi fi From b157facccf2d788058bb1ce34432933dfe952154 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 3 Nov 2023 14:57:37 +0100 Subject: [PATCH 08/23] Provide deployer keys as env var --- test-node.bash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index 3e015225..4d0f6de7 100755 --- a/test-node.bash +++ b/test-node.bash @@ -379,8 +379,9 @@ if $force_init; then if $l3_token_bridge; then echo == Deploying L2-L3 token bridge + deployer_key=`printf "%s" "user_token_bridge_deployer" | openssl dgst -sha256 | sed 's/^.*= //'` rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker-compose run -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e CHILD_RPC=http://l3node:3347 tokenbridge deploy:local:token-bridge + docker-compose run -e ROLLUP_OWNER=$l3owneraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e PARENT_KEY=$deployer_key -e CHILD_RPC=http://l3node:3347 -e CHILD_KEY=$deployer_key tokenbridge deploy:local:token-bridge docker-compose run --entrypoint sh tokenbridge -c "cat network.json" echo fi From b3f40eea605553e306de0b1445d7c08b51ae4db1 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 3 Nov 2023 15:50:57 +0100 Subject: [PATCH 09/23] Fix native bridging --- scripts/ethcommands.ts | 1 + scripts/index.ts | 2 ++ test-node.bash | 8 ++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/ethcommands.ts b/scripts/ethcommands.ts index 634825d5..51f7a3c1 100644 --- a/scripts/ethcommands.ts +++ b/scripts/ethcommands.ts @@ -170,6 +170,7 @@ export const bridgeNativeTokenToL3Command = { ); const inboxAddr = ethers.utils.hexlify(deploydata.inbox); + argv.ethamount = "0" await bridgeFunds(argv, argv.l2url, argv.l3url, inboxAddr) }, }; diff --git a/scripts/index.ts b/scripts/index.ts index ee27b9e1..c39406ed 100644 --- a/scripts/index.ts +++ b/scripts/index.ts @@ -10,6 +10,7 @@ import { } from "./accounts"; import { bridgeFundsCommand, + bridgeNativeTokenToL3Command, bridgeToL3Command, createERC20Command, sendL1Command, @@ -31,6 +32,7 @@ async function main() { .options(stressOptions) .command(bridgeFundsCommand) .command(bridgeToL3Command) + .command(bridgeNativeTokenToL3Command) .command(createERC20Command) .command(sendL1Command) .command(sendL2Command) diff --git a/test-node.bash b/test-node.bash index fa82506c..022abd26 100755 --- a/test-node.bash +++ b/test-node.bash @@ -388,12 +388,12 @@ if $force_init; then echo == Fund L3 accounts if $l3_custom_fee_token; then - docker-compose run scripts bridge-to-l3 --amount 50000 --wait - docker-compose run scripts bridge-to-l3 --amount 500 --wait --from "key_0x$devprivkey" - else - docker-compose run scripts bridge-to-l3 --amount 50000 --from user_token_bridge_deployer --wait + docker-compose run scripts bridge-native-token-to-l3 --amount 50000 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait + else + docker-compose run scripts bridge-to-l3 --ethamount 50000 --wait + docker-compose run scripts bridge-to-l3 --ethamount 500 --wait --from "key_0x$devprivkey" fi fi From 26d2b22f1bf56964c39245ceb9579eb4012a4e47 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 3 Nov 2023 17:16:07 +0100 Subject: [PATCH 10/23] Approve token before bridging --- scripts/ethcommands.ts | 21 ++++++++++++++++----- test-node.bash | 3 ++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/scripts/ethcommands.ts b/scripts/ethcommands.ts index 51f7a3c1..c8a299ad 100644 --- a/scripts/ethcommands.ts +++ b/scripts/ethcommands.ts @@ -3,6 +3,7 @@ import { ContractFactory, ethers, Wallet } from "ethers"; import * as consts from "./consts"; import { namedAccount, namedAddress } from "./accounts"; import * as ERC20PresetFixedSupplyArtifact from "@openzeppelin/contracts/build/contracts/ERC20PresetFixedSupply.json"; +import * as ERC20 from "@openzeppelin/contracts/build/contracts/ERC20.json"; import * as fs from "fs"; const path = require("path"); @@ -52,11 +53,19 @@ async function bridgeFunds(argv: any, parentChainUrl: string, chainUrl: string, } } -async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: string, inboxAddr: string) { +async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: string, inboxAddr: string, token: string) { argv.provider = new ethers.providers.WebSocketProvider(parentChainUrl); argv.to = "address_" + inboxAddr; + /// approve inbox to use fee token + const childProvider = new ethers.providers.WebSocketProvider(chainUrl); + const bridger = namedAccount(argv.from, argv.threadId).connect(childProvider) + + const nativeTokenContract = new ethers.Contract(token, ERC20.abi, bridger) + await nativeTokenContract.approve(inboxAddr, ethers.utils.parseEther(argv.amount)) + + /// deposit fee token const iface = new ethers.utils.Interface(["function depositERC20(uint256 amount)"]) argv.data = iface.encodeFunctionData("depositERC20", [ethers.utils.parseEther(argv.amount)]); @@ -64,11 +73,9 @@ async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: st argv.provider.destroy(); if (argv.wait) { - const childProvider = new ethers.providers.WebSocketProvider(chainUrl); - const account = namedAccount(argv.from, argv.threadId).connect(childProvider) const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); while (true) { - const balance = await account.getBalance() + const balance = await bridger.getBalance() if (balance.gte(ethers.utils.parseEther(argv.amount))) { return } @@ -156,6 +163,10 @@ export const bridgeNativeTokenToL3Command = { describe: "account (see general help)", default: "funnel", }, + token: { + string: true, + describe: "chain's custom fee token", + }, wait: { boolean: true, describe: "wait till l3 has balance of amount", @@ -171,7 +182,7 @@ export const bridgeNativeTokenToL3Command = { const inboxAddr = ethers.utils.hexlify(deploydata.inbox); argv.ethamount = "0" - await bridgeFunds(argv, argv.l2url, argv.l3url, inboxAddr) + await bridgeNativeToken(argv, argv.l2url, argv.l3url, inboxAddr, argv.token) }, }; diff --git a/test-node.bash b/test-node.bash index 022abd26..c681df83 100755 --- a/test-node.bash +++ b/test-node.bash @@ -388,7 +388,8 @@ if $force_init; then echo == Fund L3 accounts if $l3_custom_fee_token; then - docker-compose run scripts bridge-native-token-to-l3 --amount 50000 --from user_token_bridge_deployer --wait + nativeTokenAddress=`docker-compose run scripts create-erc20 --deployer user_fee_token_deployer --mintTo user_token_bridge_deployer | tail -n 1 | awk '{ print $NF }'` + docker-compose run scripts bridge-native-token-to-l3 --token $nativeTokenAddress --amount 50000 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait else From 5e0b8f2f064b6796e2e18208c6de1c18f5716c5d Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 3 Nov 2023 17:30:38 +0100 Subject: [PATCH 11/23] Use correct providers --- scripts/ethcommands.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/ethcommands.ts b/scripts/ethcommands.ts index c8a299ad..63a70808 100644 --- a/scripts/ethcommands.ts +++ b/scripts/ethcommands.ts @@ -59,10 +59,8 @@ async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: st argv.to = "address_" + inboxAddr; /// approve inbox to use fee token - const childProvider = new ethers.providers.WebSocketProvider(chainUrl); - const bridger = namedAccount(argv.from, argv.threadId).connect(childProvider) - - const nativeTokenContract = new ethers.Contract(token, ERC20.abi, bridger) + const bridgerParentChain = namedAccount(argv.from, argv.threadId).connect(argv.provider) + const nativeTokenContract = new ethers.Contract(token, ERC20.abi, bridgerParentChain) await nativeTokenContract.approve(inboxAddr, ethers.utils.parseEther(argv.amount)) /// deposit fee token @@ -73,6 +71,8 @@ async function bridgeNativeToken(argv: any, parentChainUrl: string, chainUrl: st argv.provider.destroy(); if (argv.wait) { + const childProvider = new ethers.providers.WebSocketProvider(chainUrl); + const bridger = namedAccount(argv.from, argv.threadId).connect(childProvider) const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); while (true) { const balance = await bridger.getBalance() From 5f6a418e2f922cec3136c07335a903182d3857b2 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Mon, 6 Nov 2023 10:57:56 +0100 Subject: [PATCH 12/23] Fetch native token address from config file --- test-node.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test-node.bash b/test-node.bash index c681df83..1d36f025 100755 --- a/test-node.bash +++ b/test-node.bash @@ -388,8 +388,8 @@ if $force_init; then echo == Fund L3 accounts if $l3_custom_fee_token; then - nativeTokenAddress=`docker-compose run scripts create-erc20 --deployer user_fee_token_deployer --mintTo user_token_bridge_deployer | tail -n 1 | awk '{ print $NF }'` - docker-compose run scripts bridge-native-token-to-l3 --token $nativeTokenAddress --amount 50000 --from user_token_bridge_deployer --wait + native_token=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup[\"native-token\"]' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker-compose run scripts bridge-native-token-to-l3 --token $native_token --amount 50000 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait else From 12d9bed2c808d25b22b7a708ce9b3662b17c5876 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Tue, 28 Nov 2023 13:13:55 +0100 Subject: [PATCH 13/23] Use latest token-bridge-contracts tag --- tokenbridge/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokenbridge/Dockerfile b/tokenbridge/Dockerfile index 37eb13f6..699d9bc0 100644 --- a/tokenbridge/Dockerfile +++ b/tokenbridge/Dockerfile @@ -2,7 +2,7 @@ FROM node:16-bullseye-slim RUN apt-get update && \ apt-get install -y git docker.io python3 chromium build-essential WORKDIR /workspace -RUN git clone -b add-creator-ci https://github.com/OffchainLabs/token-bridge-contracts.git ./ +RUN git clone -b v1.1.1 https://github.com/OffchainLabs/token-bridge-contracts.git ./ RUN yarn install RUN yarn build ENTRYPOINT ["yarn"] From a59d41c3b15162a76b5ff8d96ae0a0788ae4ce4a Mon Sep 17 00:00:00 2001 From: gzeon Date: Fri, 8 Dec 2023 23:56:16 +0800 Subject: [PATCH 14/23] Update test-node.bash --- test-node.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index ab2e42fe..a7b23ad7 100755 --- a/test-node.bash +++ b/test-node.bash @@ -172,7 +172,7 @@ while [[ $# -gt 0 ]]; do echo --pos l1 is a proof-of-stake chain \(using prysm for consensus\) echo --validate heavy computation, validating all blocks in WASM echo --l3-fee-token L3 chain is set up to use custom fee token. Only valid if also '--l3node' is provided - echo --l3-token-bridge: Deploy L2-L3 token bridge. Only valid if also '--l3node' is provided + echo --l3-token-bridge Deploy L2-L3 token bridge. Only valid if also '--l3node' is provided echo --batchposters batch posters [0-3] echo --redundantsequencers redundant sequencers [0-3] echo --detach detach from nodes after running them From e93fba1173346d9d6adec6ca6560e0b00f469ee4 Mon Sep 17 00:00:00 2001 From: gzeon Date: Fri, 8 Dec 2023 23:57:08 +0800 Subject: [PATCH 15/23] chore: use v1.1.2 --- tokenbridge/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokenbridge/Dockerfile b/tokenbridge/Dockerfile index 699d9bc0..cb07a60e 100644 --- a/tokenbridge/Dockerfile +++ b/tokenbridge/Dockerfile @@ -2,7 +2,7 @@ FROM node:16-bullseye-slim RUN apt-get update && \ apt-get install -y git docker.io python3 chromium build-essential WORKDIR /workspace -RUN git clone -b v1.1.1 https://github.com/OffchainLabs/token-bridge-contracts.git ./ +RUN git clone -b v1.1.2 https://github.com/OffchainLabs/token-bridge-contracts.git ./ RUN yarn install RUN yarn build ENTRYPOINT ["yarn"] From 1366df693cde8f78542992b79b5c895db958f693 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Thu, 21 Dec 2023 17:38:54 +0100 Subject: [PATCH 16/23] Use 'docker compose' CLI instead of 'docker-compose' when --wait flag is used 'docker-compose' CLI seems to be out of date in Github runners, so doesn't recognize '--wait' flag. Ref: https://stackoverflow.com/questions/65949957/how-can-i-wait-for-the-container-to-be-healthy-in-github-action#comment136082101_76422970 --- test-node.bash | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test-node.bash b/test-node.bash index 0479e319..9b04c655 100755 --- a/test-node.bash +++ b/test-node.bash @@ -319,16 +319,16 @@ if $force_init; then docker-compose run geth init --datadir /datadir/ /config/geth_genesis.json echo == Starting geth - docker-compose up --wait geth + docker compose up --wait geth echo == Creating prysm genesis docker-compose up create_beacon_chain_genesis echo == Running prysm - docker-compose up --wait prysm_beacon_chain - docker-compose up --wait prysm_validator + docker compose up --wait prysm_beacon_chain + docker compose up --wait prysm_validator else - docker-compose up --wait geth + docker compose up --wait geth fi echo == Funding validator and sequencer @@ -355,12 +355,12 @@ if $force_init; then docker-compose run scripts write-config echo == Initializing redis - docker-compose up --wait redis + docker compose up --wait redis docker-compose run scripts redis-init --redundancy $redundantsequencers fi echo == Funding l2 funnel and dev key - docker-compose up --wait $INITIAL_SEQ_NODES + docker compose up --wait $INITIAL_SEQ_NODES docker-compose run scripts bridge-funds --ethamount 100000 --wait docker-compose run scripts bridge-funds --ethamount 1000 --wait --from "key_0x$devprivkey" @@ -402,7 +402,7 @@ if $force_init; then docker-compose run --entrypoint sh sequencer -c "jq [.[]] /config/deployed_l3_chain_info.json > /config/l3_chain_info.json" echo == Funding l3 funnel and dev key - docker-compose up --wait l3node sequencer + docker compose up --wait l3node sequencer if $l3_token_bridge; then echo == Deploying L2-L3 token bridge From 7ca15aac2643c4c6a874bf8c5340f3511148d8f1 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Thu, 21 Dec 2023 18:09:32 +0100 Subject: [PATCH 17/23] update docker compose command --- test-node.bash | 106 ++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/test-node.bash b/test-node.bash index 9b04c655..f0a51923 100755 --- a/test-node.bash +++ b/test-node.bash @@ -8,16 +8,16 @@ BLOCKSCOUT_VERSION=offchainlabs/blockscout:v1.0.0-c8db5b1 mydir=`dirname $0` cd "$mydir" -if ! which docker-compose > /dev/null; then - echo == Error! docker-compose not installed - echo please install docker-compose and have it in PATH +if ! which docker compose > /dev/null; then + echo == Error! docker compose not installed + echo please install docker compose and have it in PATH echo see https://docs.docker.com/compose/install/ exit 1 fi if [[ $# -gt 0 ]] && [[ $1 == "script" ]]; then shift - docker-compose run scripts "$@" + docker compose run scripts "$@" exit $? fi @@ -264,7 +264,7 @@ if $force_build; then if $tokenbridge || $l3_token_bridge; then LOCAL_BUILD_NODES="$LOCAL_BUILD_NODES tokenbridge" fi - docker-compose build --no-rm $LOCAL_BUILD_NODES + docker compose build --no-rm $LOCAL_BUILD_NODES fi if $dev_build_nitro; then @@ -286,12 +286,12 @@ else fi if $force_build; then - docker-compose build --no-rm $NODES scripts + docker compose build --no-rm $NODES scripts fi if $force_init; then echo == Removing old data.. - docker-compose down + docker compose down leftoverContainers=`docker container ls -a --filter label=com.docker.compose.project=nitro-testnode -q | xargs echo` if [ `echo $leftoverContainers | wc -w` -gt 0 ]; then docker rm $leftoverContainers @@ -303,26 +303,26 @@ if $force_init; then fi echo == Generating l1 keys - docker-compose run scripts write-accounts - docker-compose run --entrypoint sh geth -c "echo passphrase > /datadir/passphrase" - docker-compose run --entrypoint sh geth -c "chown -R 1000:1000 /keystore" - docker-compose run --entrypoint sh geth -c "chown -R 1000:1000 /config" + docker compose run scripts write-accounts + docker compose run --entrypoint sh geth -c "echo passphrase > /datadir/passphrase" + docker compose run --entrypoint sh geth -c "chown -R 1000:1000 /keystore" + docker compose run --entrypoint sh geth -c "chown -R 1000:1000 /config" if $consensusclient; then echo == Writing configs - docker-compose run scripts write-geth-genesis-config + docker compose run scripts write-geth-genesis-config echo == Writing configs - docker-compose run scripts write-prysm-config + docker compose run scripts write-prysm-config echo == Initializing go-ethereum genesis configuration - docker-compose run geth init --datadir /datadir/ /config/geth_genesis.json + docker compose run geth init --datadir /datadir/ /config/geth_genesis.json echo == Starting geth docker compose up --wait geth echo == Creating prysm genesis - docker-compose up create_beacon_chain_genesis + docker compose up create_beacon_chain_genesis echo == Running prysm docker compose up --wait prysm_beacon_chain @@ -332,74 +332,74 @@ if $force_init; then fi echo == Funding validator and sequencer - docker-compose run scripts send-l1 --ethamount 1000 --to validator --wait - docker-compose run scripts send-l1 --ethamount 1000 --to sequencer --wait + docker compose run scripts send-l1 --ethamount 1000 --to validator --wait + docker compose run scripts send-l1 --ethamount 1000 --to sequencer --wait echo == create l1 traffic - docker-compose run scripts send-l1 --ethamount 1000 --to user_l1user --wait - docker-compose run scripts send-l1 --ethamount 0.0001 --from user_l1user --to user_l1user_b --wait --delay 500 --times 1000000 > /dev/null & + docker compose run scripts send-l1 --ethamount 1000 --to user_l1user --wait + docker compose run scripts send-l1 --ethamount 0.0001 --from user_l1user --to user_l1user_b --wait --delay 500 --times 1000000 > /dev/null & echo == Writing l2 chain config - docker-compose run scripts write-l2-chain-config + docker compose run scripts write-l2-chain-config - sequenceraddress=`docker-compose run scripts print-address --account sequencer | tail -n 1 | tr -d '\r\n'` + sequenceraddress=`docker compose run scripts print-address --account sequencer | tail -n 1 | tr -d '\r\n'` - docker-compose run --entrypoint /usr/local/bin/deploy sequencer --l1conn ws://geth:8546 --l1keystore /home/user/l1keystore --sequencerAddress $sequenceraddress --ownerAddress $sequenceraddress --l1DeployAccount $sequenceraddress --l1deployment /config/deployment.json --authorizevalidators 10 --wasmrootpath /home/user/target/machines --l1chainid=$l1chainid --l2chainconfig /config/l2_chain_config.json --l2chainname arb-dev-test --l2chaininfo /config/deployed_chain_info.json - docker-compose run --entrypoint sh sequencer -c "jq [.[]] /config/deployed_chain_info.json > /config/l2_chain_info.json" + docker compose run --entrypoint /usr/local/bin/deploy sequencer --l1conn ws://geth:8546 --l1keystore /home/user/l1keystore --sequencerAddress $sequenceraddress --ownerAddress $sequenceraddress --l1DeployAccount $sequenceraddress --l1deployment /config/deployment.json --authorizevalidators 10 --wasmrootpath /home/user/target/machines --l1chainid=$l1chainid --l2chainconfig /config/l2_chain_config.json --l2chainname arb-dev-test --l2chaininfo /config/deployed_chain_info.json + docker compose run --entrypoint sh sequencer -c "jq [.[]] /config/deployed_chain_info.json > /config/l2_chain_info.json" if $simple; then echo == Writing configs - docker-compose run scripts write-config --simple + docker compose run scripts write-config --simple else echo == Writing configs - docker-compose run scripts write-config + docker compose run scripts write-config echo == Initializing redis docker compose up --wait redis - docker-compose run scripts redis-init --redundancy $redundantsequencers + docker compose run scripts redis-init --redundancy $redundantsequencers fi echo == Funding l2 funnel and dev key docker compose up --wait $INITIAL_SEQ_NODES - docker-compose run scripts bridge-funds --ethamount 100000 --wait - docker-compose run scripts bridge-funds --ethamount 1000 --wait --from "key_0x$devprivkey" + docker compose run scripts bridge-funds --ethamount 100000 --wait + docker compose run scripts bridge-funds --ethamount 1000 --wait --from "key_0x$devprivkey" if $tokenbridge; then echo == Deploying L1-L2 token bridge sleep 120 - rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker-compose run -e ROLLUP_OWNER=$sequenceraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge - docker-compose run --entrypoint sh tokenbridge -c "cat network.json" + rollupAddress=`docker compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker compose run -e ROLLUP_OWNER=$sequenceraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge + docker compose run --entrypoint sh tokenbridge -c "cat network.json" echo fi if $l3node; then echo == Funding l3 users - docker-compose run scripts send-l2 --ethamount 1000 --to l3owner --wait - docker-compose run scripts send-l2 --ethamount 1000 --to l3sequencer --wait + docker compose run scripts send-l2 --ethamount 1000 --to l3owner --wait + docker compose run scripts send-l2 --ethamount 1000 --to l3sequencer --wait echo == Funding l2 deployers - docker-compose run scripts send-l2 --ethamount 100 --to user_token_bridge_deployer --wait - docker-compose run scripts send-l2 --ethamount 100 --to user_fee_token_deployer --wait + docker compose run scripts send-l2 --ethamount 100 --to user_token_bridge_deployer --wait + docker compose run scripts send-l2 --ethamount 100 --to user_fee_token_deployer --wait echo == create l2 traffic - docker-compose run scripts send-l2 --ethamount 100 --to user_traffic_generator --wait - docker-compose run scripts send-l2 --ethamount 0.0001 --from user_traffic_generator --to user_fee_token_deployer --wait --delay 500 --times 1000000 > /dev/null & + docker compose run scripts send-l2 --ethamount 100 --to user_traffic_generator --wait + docker compose run scripts send-l2 --ethamount 0.0001 --from user_traffic_generator --to user_fee_token_deployer --wait --delay 500 --times 1000000 > /dev/null & echo == Writing l3 chain config - docker-compose run scripts write-l3-chain-config + docker compose run scripts write-l3-chain-config if $l3_custom_fee_token; then echo == Deploying custom fee token - nativeTokenAddress=`docker-compose run scripts create-erc20 --deployer user_fee_token_deployer --mintTo user_token_bridge_deployer | tail -n 1 | awk '{ print $NF }'` + nativeTokenAddress=`docker compose run scripts create-erc20 --deployer user_fee_token_deployer --mintTo user_token_bridge_deployer | tail -n 1 | awk '{ print $NF }'` EXTRA_L3_DEPLOY_FLAG="--nativeTokenAddress $nativeTokenAddress" fi echo == Deploying L3 - l3owneraddress=`docker-compose run scripts print-address --account l3owner | tail -n 1 | tr -d '\r\n'` - l3sequenceraddress=`docker-compose run scripts print-address --account l3sequencer | tail -n 1 | tr -d '\r\n'` - docker-compose run --entrypoint /usr/local/bin/deploy sequencer --l1conn ws://sequencer:8548 --l1keystore /home/user/l1keystore --sequencerAddress $l3sequenceraddress --ownerAddress $l3owneraddress --l1DeployAccount $l3owneraddress --l1deployment /config/l3deployment.json --authorizevalidators 10 --wasmrootpath /home/user/target/machines --l1chainid=412346 --l2chainconfig /config/l3_chain_config.json --l2chainname orbit-dev-test --l2chaininfo /config/deployed_l3_chain_info.json --maxDataSize 104857 $EXTRA_L3_DEPLOY_FLAG - docker-compose run --entrypoint sh sequencer -c "jq [.[]] /config/deployed_l3_chain_info.json > /config/l3_chain_info.json" + l3owneraddress=`docker compose run scripts print-address --account l3owner | tail -n 1 | tr -d '\r\n'` + l3sequenceraddress=`docker compose run scripts print-address --account l3sequencer | tail -n 1 | tr -d '\r\n'` + docker compose run --entrypoint /usr/local/bin/deploy sequencer --l1conn ws://sequencer:8548 --l1keystore /home/user/l1keystore --sequencerAddress $l3sequenceraddress --ownerAddress $l3owneraddress --l1DeployAccount $l3owneraddress --l1deployment /config/l3deployment.json --authorizevalidators 10 --wasmrootpath /home/user/target/machines --l1chainid=412346 --l2chainconfig /config/l3_chain_config.json --l2chainname orbit-dev-test --l2chaininfo /config/deployed_l3_chain_info.json --maxDataSize 104857 $EXTRA_L3_DEPLOY_FLAG + docker compose run --entrypoint sh sequencer -c "jq [.[]] /config/deployed_l3_chain_info.json > /config/l3_chain_info.json" echo == Funding l3 funnel and dev key docker compose up --wait l3node sequencer @@ -407,21 +407,21 @@ if $force_init; then if $l3_token_bridge; then echo == Deploying L2-L3 token bridge deployer_key=`printf "%s" "user_token_bridge_deployer" | openssl dgst -sha256 | sed 's/^.*= //'` - rollupAddress=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker-compose run -e ROLLUP_OWNER=$l3owneraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e PARENT_KEY=$deployer_key -e CHILD_RPC=http://l3node:3347 -e CHILD_KEY=$deployer_key tokenbridge deploy:local:token-bridge - docker-compose run --entrypoint sh tokenbridge -c "cat network.json" + rollupAddress=`docker compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker compose run -e ROLLUP_OWNER=$l3owneraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_RPC=http://sequencer:8547 -e PARENT_KEY=$deployer_key -e CHILD_RPC=http://l3node:3347 -e CHILD_KEY=$deployer_key tokenbridge deploy:local:token-bridge + docker compose run --entrypoint sh tokenbridge -c "cat network.json" echo fi echo == Fund L3 accounts if $l3_custom_fee_token; then - native_token=`docker-compose run --entrypoint sh poster -c "jq -r '.[0].rollup[\"native-token\"]' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker-compose run scripts bridge-native-token-to-l3 --token $native_token --amount 50000 --from user_token_bridge_deployer --wait - docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait - docker-compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait + native_token=`docker compose run --entrypoint sh poster -c "jq -r '.[0].rollup[\"native-token\"]' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` + docker compose run scripts bridge-native-token-to-l3 --token $native_token --amount 50000 --from user_token_bridge_deployer --wait + docker compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait + docker compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait else - docker-compose run scripts bridge-to-l3 --ethamount 50000 --wait - docker-compose run scripts bridge-to-l3 --ethamount 500 --wait --from "key_0x$devprivkey" + docker compose run scripts bridge-to-l3 --ethamount 50000 --wait + docker compose run scripts bridge-to-l3 --ethamount 500 --wait --from "key_0x$devprivkey" fi fi @@ -437,5 +437,5 @@ if $run; then echo if things go wrong - use --init to create a new chain echo - docker-compose up $UP_FLAG $NODES + docker compose up $UP_FLAG $NODES fi From 937af32a3c92a9913121fb64229e2c6f91065ac2 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 22 Dec 2023 10:16:49 +0100 Subject: [PATCH 18/23] Check not needed anymore --- test-node.bash | 7 ------- 1 file changed, 7 deletions(-) diff --git a/test-node.bash b/test-node.bash index f0a51923..82ad3b9a 100755 --- a/test-node.bash +++ b/test-node.bash @@ -8,13 +8,6 @@ BLOCKSCOUT_VERSION=offchainlabs/blockscout:v1.0.0-c8db5b1 mydir=`dirname $0` cd "$mydir" -if ! which docker compose > /dev/null; then - echo == Error! docker compose not installed - echo please install docker compose and have it in PATH - echo see https://docs.docker.com/compose/install/ - exit 1 -fi - if [[ $# -gt 0 ]] && [[ $1 == "script" ]]; then shift docker compose run scripts "$@" From 683f88745818a3830bb5a4ebdf3873248f471f80 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 22 Dec 2023 10:51:27 +0100 Subject: [PATCH 19/23] Remove unnecessary sleep --- test-node.bash | 1 - 1 file changed, 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index 82ad3b9a..f1b621f5 100755 --- a/test-node.bash +++ b/test-node.bash @@ -359,7 +359,6 @@ if $force_init; then if $tokenbridge; then echo == Deploying L1-L2 token bridge - sleep 120 rollupAddress=`docker compose run --entrypoint sh poster -c "jq -r '.[0].rollup.rollup' /config/deployed_chain_info.json | tail -n 1 | tr -d '\r\n'"` docker compose run -e ROLLUP_OWNER=$sequenceraddress -e ROLLUP_ADDRESS=$rollupAddress -e PARENT_KEY=$devprivkey -e PARENT_RPC=http://geth:8545 -e CHILD_KEY=$devprivkey -e CHILD_RPC=http://sequencer:8547 tokenbridge deploy:local:token-bridge docker compose run --entrypoint sh tokenbridge -c "cat network.json" From d77154dd20af632d5759c0899c9f33a3f5248a09 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 22 Dec 2023 10:52:00 +0100 Subject: [PATCH 20/23] Use latest token bridge design TODO: switch this to v1.2.0 when it's released --- tokenbridge/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokenbridge/Dockerfile b/tokenbridge/Dockerfile index cb07a60e..2b952168 100644 --- a/tokenbridge/Dockerfile +++ b/tokenbridge/Dockerfile @@ -2,7 +2,7 @@ FROM node:16-bullseye-slim RUN apt-get update && \ apt-get install -y git docker.io python3 chromium build-essential WORKDIR /workspace -RUN git clone -b v1.1.2 https://github.com/OffchainLabs/token-bridge-contracts.git ./ +RUN git clone -b feat-registry https://github.com/OffchainLabs/token-bridge-contracts.git ./ RUN yarn install RUN yarn build ENTRYPOINT ["yarn"] From 8bb39c2dbf6f31ed8bbac56aa413f83b20ecf2dc Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Fri, 22 Dec 2023 11:40:03 +0100 Subject: [PATCH 21/23] Read native token address from l3deployment.json --- scripts/ethcommands.ts | 7 ++----- test-node.bash | 3 +-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/scripts/ethcommands.ts b/scripts/ethcommands.ts index 63a70808..3d782333 100644 --- a/scripts/ethcommands.ts +++ b/scripts/ethcommands.ts @@ -163,10 +163,6 @@ export const bridgeNativeTokenToL3Command = { describe: "account (see general help)", default: "funnel", }, - token: { - string: true, - describe: "chain's custom fee token", - }, wait: { boolean: true, describe: "wait till l3 has balance of amount", @@ -180,9 +176,10 @@ export const bridgeNativeTokenToL3Command = { .toString() ); const inboxAddr = ethers.utils.hexlify(deploydata.inbox); + const nativeTokenAddr = ethers.utils.hexlify(deploydata["native-token"]); argv.ethamount = "0" - await bridgeNativeToken(argv, argv.l2url, argv.l3url, inboxAddr, argv.token) + await bridgeNativeToken(argv, argv.l2url, argv.l3url, inboxAddr, nativeTokenAddr) }, }; diff --git a/test-node.bash b/test-node.bash index f1b621f5..7d360e4c 100755 --- a/test-node.bash +++ b/test-node.bash @@ -407,8 +407,7 @@ if $force_init; then echo == Fund L3 accounts if $l3_custom_fee_token; then - native_token=`docker compose run --entrypoint sh poster -c "jq -r '.[0].rollup[\"native-token\"]' /config/deployed_l3_chain_info.json | tail -n 1 | tr -d '\r\n'"` - docker compose run scripts bridge-native-token-to-l3 --token $native_token --amount 50000 --from user_token_bridge_deployer --wait + docker compose run scripts bridge-native-token-to-l3 --amount 50000 --from user_token_bridge_deployer --wait docker compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --wait docker compose run scripts send-l3 --ethamount 500 --from user_token_bridge_deployer --to "key_0x$devprivkey" --wait else From 7c5d3e6ab13f949c6560607e81fc9fd154ee3a28 Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Mon, 8 Jan 2024 16:45:11 +0100 Subject: [PATCH 22/23] Bump nitro --- test-node.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index 7d360e4c..c51e4103 100755 --- a/test-node.bash +++ b/test-node.bash @@ -2,7 +2,7 @@ set -e -NITRO_NODE_VERSION=offchainlabs/nitro-node:v2.2.0-alpha.1-fdd098e-dev +NITRO_NODE_VERSION=offchainlabs/nitro-node:v2.2.2-8f33fea BLOCKSCOUT_VERSION=offchainlabs/blockscout:v1.0.0-c8db5b1 mydir=`dirname $0` From d109d0fad92bcc89179b3bd29edd35e31dac6e5e Mon Sep 17 00:00:00 2001 From: Goran Vladika Date: Mon, 8 Jan 2024 18:48:38 +0100 Subject: [PATCH 23/23] Use the working nitro version --- test-node.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-node.bash b/test-node.bash index c51e4103..407d03bc 100755 --- a/test-node.bash +++ b/test-node.bash @@ -2,7 +2,7 @@ set -e -NITRO_NODE_VERSION=offchainlabs/nitro-node:v2.2.2-8f33fea +NITRO_NODE_VERSION=offchainlabs/nitro-node:v2.2.2-8f33fea-dev BLOCKSCOUT_VERSION=offchainlabs/blockscout:v1.0.0-c8db5b1 mydir=`dirname $0`