From a046f00ad0c57733e2c529b6011d6c862773c793 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:11:45 +0000 Subject: [PATCH 01/27] CI tests --- .env.example | 2 + .../resources/kurtosis-network-params.yaml | 15 +++++++ .github/workflows/contract-tests.yml | 42 +++++++++++++++++++ blockscout/docker-compose-clean.yaml | 2 - blockscout/docker-compose.yaml | 2 - docker-compose-split-nodes.yaml | 2 - docker-compose.yaml | 2 - shell-scripts/start-nitro.sh | 30 +++++++++++-- 8 files changed, 85 insertions(+), 12 deletions(-) create mode 100644 .github/resources/kurtosis-network-params.yaml create mode 100644 .github/workflows/contract-tests.yml diff --git a/.env.example b/.env.example index fa281a3..6117c95 100644 --- a/.env.example +++ b/.env.example @@ -40,6 +40,8 @@ NITRO_PORT=8449 # Whether to split the Nitro node into one batch-poster, one staker, and one rpc node # If set to false, a single Nitro node will handle all three roles SPLIT_NODES=false +# Whether to attach the docker containers to a specific network +DOCKER_NETWORK= ########################## diff --git a/.github/resources/kurtosis-network-params.yaml b/.github/resources/kurtosis-network-params.yaml new file mode 100644 index 0000000..c5f8b41 --- /dev/null +++ b/.github/resources/kurtosis-network-params.yaml @@ -0,0 +1,15 @@ +participants: + - el_type: geth + el_image: "ethereum/client-go:v1.16.7" + el_extra_params: [ + "--state.scheme=hash", + "--gcmode=archive", + "--syncmode=full", + ] + cl_type: prysm + cl_image: "gcr.io/offchainlabs/prysm/beacon-chain:v7.1.0" + vc_type: prysm + vc_image: "gcr.io/offchainlabs/prysm/validator:v7.1.0" +network_params: + network_id: "1337" + prefunded_accounts: '{"0x3f1Eae7D46d88F08fc2F8ed27FCb2AB183EB2d0E": {"balance": "100ETH"}}' \ No newline at end of file diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml new file mode 100644 index 0000000..12cdadb --- /dev/null +++ b/.github/workflows/contract-tests.yml @@ -0,0 +1,42 @@ +name: CI + +on: + workflow_dispatch: + pull_request: + merge_group: + push: + branches: + - main + +jobs: + test-e2e: + name: Test e2e + runs-on: ubuntu-latest + steps: + - name: Install Kurtosis + run: | + echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list + sudo apt update + sudo apt install kurtosis-cli + + - name: Start Kurtosis engine + run: kurtosis engine start + + - name: Run L1 node + run: kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file ../resources/kurtosis-network-params.yaml + + - name: Setup node/yarn + uses: actions/setup-node@v3 + with: + node-version: 22 + cache: 'yarn' + cache-dependency-path: '**/yarn.lock' + + - name: Install packages + run: yarn + + - name: Build nitro-contracts + run: yarn build-nitro-contracts + + - name: Deploy RollupCreator + run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator diff --git a/blockscout/docker-compose-clean.yaml b/blockscout/docker-compose-clean.yaml index 5d48991..87b57d7 100644 --- a/blockscout/docker-compose-clean.yaml +++ b/blockscout/docker-compose-clean.yaml @@ -1,5 +1,3 @@ -version: '3.9' - services: # Based on ./services/redis.yml redis-db-clean: diff --git a/blockscout/docker-compose.yaml b/blockscout/docker-compose.yaml index 7e5b280..33ee764 100644 --- a/blockscout/docker-compose.yaml +++ b/blockscout/docker-compose.yaml @@ -1,5 +1,3 @@ -version: '3.9' - # Source reference (for other services, and defaults) # https://docs.docker.com/compose/compose-file/ diff --git a/docker-compose-split-nodes.yaml b/docker-compose-split-nodes.yaml index e5d2f29..509c358 100644 --- a/docker-compose-split-nodes.yaml +++ b/docker-compose-split-nodes.yaml @@ -1,5 +1,3 @@ -version: '3.9' - # Configuration for split nodes # Activate with the env variable SPLIT_NODES=true diff --git a/docker-compose.yaml b/docker-compose.yaml index 46f18cf..e08a662 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,3 @@ -version: '3.9' - # Extra services: # - Blockscout (under profile "blockscout") # - Split nodes (under profile "split-nodes") diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index e50d2fd..185650f 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -8,14 +8,36 @@ set +o allexport # Add single-node or split-nodes profile based on $SPLIT_NODES PROFILES="" if [ "$SPLIT_NODES" = "true" ]; then - PROFILES="$PROFILES --profile split-nodes" + PROFILES="$PROFILES split-nodes" else - PROFILES="$PROFILES --profile single-node" + PROFILES="$PROFILES single-node" fi # Add blockscout profile if enabled if [ "$ENABLE_BLOCKSCOUT" = "true" ]; then - PROFILES="$PROFILES --profile blockscout" + PROFILES="$PROFILES blockscout" fi -docker compose $PROFILES up +# Enable the selected profiles +export COMPOSE_PROFILES="$PROFILES" + +# Obtain the list of services to be started +mapfile -t SERVICES < <(docker compose config --services) +echo "Services: ${SERVICES[*]}" + +# Create containers without starting them +docker compose create "${SERVICES[@]}" + +# Connect containers to the testnet docker network if needed +if [ -n "$DOCKER_NETWORK" ]; then + for svc in "${SERVICES[@]}"; do + cid=$(docker compose ps -a -q "$svc") + [ -z "$cid" ] && continue + docker network connect "$DOCKER_NETWORK" "$cid" 2>/dev/null || true + done +fi + +# Start all services +docker compose start "${SERVICES[@]}" + +echo "Nitro services started with profiles: $COMPOSE_PROFILES" \ No newline at end of file From 3f9eef06907bf63060a12fca5d89e32fe31418d0 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:14:15 +0000 Subject: [PATCH 02/27] Fix --- .github/workflows/contract-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 12cdadb..803bf71 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -23,7 +23,7 @@ jobs: run: kurtosis engine start - name: Run L1 node - run: kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file ../resources/kurtosis-network-params.yaml + run: kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file .github/resources/kurtosis-network-params.yaml - name: Setup node/yarn uses: actions/setup-node@v3 From c06384a50083acee9b5548fabe4cbb95ebea7378 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:24:57 +0000 Subject: [PATCH 03/27] Test --- .github/workflows/contract-tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 803bf71..080dfda 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -23,7 +23,10 @@ jobs: run: kurtosis engine start - name: Run L1 node - run: kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file .github/resources/kurtosis-network-params.yaml + run: | + pwd + ls -ltra + kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file .github/resources/kurtosis-network-params.yaml - name: Setup node/yarn uses: actions/setup-node@v3 From b7a72cb5ec72c3f2580f15cecf35118aeb5d5313 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:28:29 +0000 Subject: [PATCH 04/27] Fix --- .github/workflows/contract-tests.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 080dfda..c1be374 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -1,18 +1,17 @@ name: CI on: - workflow_dispatch: pull_request: - merge_group: - push: - branches: - - main + workflow_dispatch: jobs: test-e2e: name: Test e2e runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Kurtosis run: | echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list @@ -41,5 +40,5 @@ jobs: - name: Build nitro-contracts run: yarn build-nitro-contracts - - name: Deploy RollupCreator - run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator + # - name: Deploy RollupCreator + # run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator From 2b973fc36247e37e7e575434cd2e06a931ce8760 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:37:25 +0000 Subject: [PATCH 05/27] Test --- .github/workflows/contract-tests.yml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index c1be374..b29f537 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -8,6 +8,13 @@ jobs: test-e2e: name: Test e2e runs-on: ubuntu-latest + env: + PARENT_CHAIN_ID: 1337 + PARENT_CHAIN_RPC_URL: http://172.16.0.10:8545 + PARENT_CHAIN_BEACON_RPC_URL: http://172.16.0.11:3500 + CHAIN_OWNER_PRIVATE_KEY: 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 + MAX_DATA_SIZE: 117964 + steps: - name: Checkout repository uses: actions/checkout@v4 @@ -22,10 +29,7 @@ jobs: run: kurtosis engine start - name: Run L1 node - run: | - pwd - ls -ltra - kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file .github/resources/kurtosis-network-params.yaml + run: kurtosis run --enclave l1-network github.com/ethpandaops/ethereum-package --args-file .github/resources/kurtosis-network-params.yaml - name: Setup node/yarn uses: actions/setup-node@v3 @@ -37,8 +41,14 @@ jobs: - name: Install packages run: yarn + - name: Create .env file + run: cp .env.example .env + + - name: Update submodules + run: git submodule update --init --force --recursive + - name: Build nitro-contracts run: yarn build-nitro-contracts - # - name: Deploy RollupCreator - # run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator + - name: Deploy RollupCreator + run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator From cf04043fcb3247e0650f24c0873c4aabdfa91e2c Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:38:56 +0000 Subject: [PATCH 06/27] Format2 --- .github/workflows/contract-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index b29f537..1edce6a 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -10,9 +10,9 @@ jobs: runs-on: ubuntu-latest env: PARENT_CHAIN_ID: 1337 - PARENT_CHAIN_RPC_URL: http://172.16.0.10:8545 - PARENT_CHAIN_BEACON_RPC_URL: http://172.16.0.11:3500 - CHAIN_OWNER_PRIVATE_KEY: 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 + PARENT_CHAIN_RPC_URL: "http://172.16.0.10:8545" + PARENT_CHAIN_BEACON_RPC_URL: "http://172.16.0.11:3500" + CHAIN_OWNER_PRIVATE_KEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" MAX_DATA_SIZE: 117964 steps: From 8aa1639f042cf32e9656cfb49cc441a554b67a42 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 15:49:31 +0000 Subject: [PATCH 07/27] Test --- .github/workflows/contract-tests.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 1edce6a..022fb24 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -45,7 +45,15 @@ jobs: run: cp .env.example .env - name: Update submodules - run: git submodule update --init --force --recursive + run: | + git submodule update --init --force --recursive nitro-contracts + git submodule update --init --force --recursive token-bridge-contracts + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: v1.3.6 + cache: false - name: Build nitro-contracts run: yarn build-nitro-contracts From cd78adcbb23ce04520116ec4d428b16f048407a5 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Thu, 18 Dec 2025 16:30:11 +0000 Subject: [PATCH 08/27] Allow passing env variables on CLI --- shell-scripts/deploy-rollupcreator.sh | 3 +++ shell-scripts/deploy-tokenbridgecreator.sh | 3 +++ shell-scripts/local-deployment.sh | 0 shell-scripts/start-nitro.sh | 3 +++ 4 files changed, 9 insertions(+) create mode 100644 shell-scripts/local-deployment.sh diff --git a/shell-scripts/deploy-rollupcreator.sh b/shell-scripts/deploy-rollupcreator.sh index 643cce2..5b09c02 100755 --- a/shell-scripts/deploy-rollupcreator.sh +++ b/shell-scripts/deploy-rollupcreator.sh @@ -1,8 +1,11 @@ #!/bin/bash # Loading .env file +# (This small hack preserves existing exported environment variables, usually set in CLI) set -o allexport +curenv=$(declare -p -x) source .env +eval "$curenv" set +o allexport # Check whether the required environment variables are set diff --git a/shell-scripts/deploy-tokenbridgecreator.sh b/shell-scripts/deploy-tokenbridgecreator.sh index 88709a0..97213fa 100755 --- a/shell-scripts/deploy-tokenbridgecreator.sh +++ b/shell-scripts/deploy-tokenbridgecreator.sh @@ -1,8 +1,11 @@ #!/bin/bash # Loading .env file +# (This small hack preserves existing exported environment variables, usually set in CLI) set -o allexport +curenv=$(declare -p -x) source .env +eval "$curenv" set +o allexport # Check whether the required environment variables are set diff --git a/shell-scripts/local-deployment.sh b/shell-scripts/local-deployment.sh new file mode 100644 index 0000000..e69de29 diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index 185650f..b195a57 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -1,8 +1,11 @@ #!/usr/bin/env bash # Loading .env file +# (This small hack preserves existing exported environment variables, usually set in CLI) set -o allexport +curenv=$(declare -p -x) source .env +eval "$curenv" set +o allexport # Add single-node or split-nodes profile based on $SPLIT_NODES From e343f1417f60eb4ed5deaf9f426daee8750adab0 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 13:43:50 +0000 Subject: [PATCH 09/27] Fix RollupCreator deployment --- .github/workflows/contract-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 022fb24..68bbf5b 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -59,4 +59,4 @@ jobs: run: yarn build-nitro-contracts - name: Deploy RollupCreator - run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator + run: PARENT_CHAIN_RPC_URL="http://172.16.0.10:8545" PARENT_CHAIN_BEACON_RPC_URL="http://172.16.0.11:3500" CHAIN_OWNER_PRIVATE_KEY="0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" MAX_DATA_SIZE=117964 CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator From a164d9d62a2f0d1e52842ddedfd0735295ab3cee Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 14:03:40 +0000 Subject: [PATCH 10/27] Fix --- .github/workflows/contract-tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 68bbf5b..ed12176 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -59,4 +59,7 @@ jobs: run: yarn build-nitro-contracts - name: Deploy RollupCreator - run: PARENT_CHAIN_RPC_URL="http://172.16.0.10:8545" PARENT_CHAIN_BEACON_RPC_URL="http://172.16.0.11:3500" CHAIN_OWNER_PRIVATE_KEY="0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" MAX_DATA_SIZE=117964 CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator + env: + CUSTOM_RPC_URL: "http://172.16.0.10:8545" + CUSTOM_PRIVKEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" + run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator From db085c846dcde27f16ea4924a4c42de49dedc01b Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 14:20:17 +0000 Subject: [PATCH 11/27] Add WETH deployment and tokenbridgecreator --- .github/resources/WETH9.sol | 62 ++++++++++++++++++++++++++++ .github/workflows/contract-tests.yml | 13 ++++++ 2 files changed, 75 insertions(+) create mode 100644 .github/resources/WETH9.sol diff --git a/.github/resources/WETH9.sol b/.github/resources/WETH9.sol new file mode 100644 index 0000000..19eb34f --- /dev/null +++ b/.github/resources/WETH9.sol @@ -0,0 +1,62 @@ +pragma solidity ^0.4.18; + +contract WETH9 { + string public name = "Wrapped Ether"; + string public symbol = "WETH"; + uint8 public decimals = 18; + + event Approval(address indexed src, address indexed guy, uint wad); + event Transfer(address indexed src, address indexed dst, uint wad); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + mapping (address => uint) public balanceOf; + mapping (address => mapping (address => uint)) public allowance; + + function() public payable { + deposit(); + } + function deposit() public payable { + balanceOf[msg.sender] += msg.value; + Deposit(msg.sender, msg.value); + } + function withdraw(uint wad) public { + require(balanceOf[msg.sender] >= wad); + balanceOf[msg.sender] -= wad; + msg.sender.transfer(wad); + Withdrawal(msg.sender, wad); + } + + function totalSupply() public view returns (uint) { + return this.balance; + } + + function approve(address guy, uint wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + Approval(msg.sender, guy, wad); + return true; + } + + function transfer(address dst, uint wad) public returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom(address src, address dst, uint wad) + public + returns (bool) + { + require(balanceOf[src] >= wad); + + if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) { + require(allowance[src][msg.sender] >= wad); + allowance[src][msg.sender] -= wad; + } + + balanceOf[src] -= wad; + balanceOf[dst] += wad; + + Transfer(src, dst, wad); + + return true; + } +} diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index ed12176..574943b 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -63,3 +63,16 @@ jobs: CUSTOM_RPC_URL: "http://172.16.0.10:8545" CUSTOM_PRIVKEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator + + - name: Deploy WETH + run: forge create --rpc-url $CUSTOM_RPC_URL --private-key $CUSTOM_PRIVKEY --broadcast ./.github/resources/contracts/WETH9.sol:WETH9 + + - name: Build token-bridge-contracts + run: yarn build-token-bridge-contracts + + - name: Deploy TokenBridgeCreator + env: + BASECHAIN_RPC: "http://172.16.0.10:8545" + BASECHAIN_DEPLOYER_KEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" + BASECHAIN_WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + run: yarn deploy-token-bridge-creator From 472a8457e1e1b18089928486b7fca9c954211e2e Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 14:42:10 +0000 Subject: [PATCH 12/27] Fix --- .github/workflows/contract-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 574943b..259c4b7 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -65,7 +65,7 @@ jobs: run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator - name: Deploy WETH - run: forge create --rpc-url $CUSTOM_RPC_URL --private-key $CUSTOM_PRIVKEY --broadcast ./.github/resources/contracts/WETH9.sol:WETH9 + run: forge create --rpc-url $PARENT_CHAIN_RPC_URL --private-key $CHAIN_OWNER_PRIVATE_KEY --broadcast ./.github/resources/contracts/WETH9.sol:WETH9 - name: Build token-bridge-contracts run: yarn build-token-bridge-contracts From ad6c1729645d30f9a138b8aefb78beaacb220a30 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 14:54:09 +0000 Subject: [PATCH 13/27] Fix --- .github/workflows/contract-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index 259c4b7..d3cd9e5 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -65,7 +65,7 @@ jobs: run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator - name: Deploy WETH - run: forge create --rpc-url $PARENT_CHAIN_RPC_URL --private-key $CHAIN_OWNER_PRIVATE_KEY --broadcast ./.github/resources/contracts/WETH9.sol:WETH9 + run: forge create --rpc-url $PARENT_CHAIN_RPC_URL --private-key $CHAIN_OWNER_PRIVATE_KEY --broadcast ./.github/resources/WETH9.sol:WETH9 - name: Build token-bridge-contracts run: yarn build-token-bridge-contracts From 331b575940d7dc5ce4ddb714445fc0696fc87f93 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 16:10:41 +0000 Subject: [PATCH 14/27] Add Rollup creation --- .github/workflows/contract-tests.yml | 17 ++++++++++++----- scripts/chain-deployer/deployNewChain.ts | 9 ++------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index d3cd9e5..c4a98f0 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -60,8 +60,8 @@ jobs: - name: Deploy RollupCreator env: - CUSTOM_RPC_URL: "http://172.16.0.10:8545" - CUSTOM_PRIVKEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" + CUSTOM_RPC_URL: ${{ env.PARENT_CHAIN_RPC_URL }} + CUSTOM_PRIVKEY: ${{ env.CHAIN_OWNER_PRIVATE_KEY }} run: CREATE2_PROXY_DEPLOYMENT=true yarn deploy-rollup-creator - name: Deploy WETH @@ -72,7 +72,14 @@ jobs: - name: Deploy TokenBridgeCreator env: - BASECHAIN_RPC: "http://172.16.0.10:8545" - BASECHAIN_DEPLOYER_KEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" - BASECHAIN_WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + BASECHAIN_RPC: ${{ env.PARENT_CHAIN_RPC_URL }} + BASECHAIN_DEPLOYER_KEY: ${{ env.CHAIN_OWNER_PRIVATE_KEY }} + BASECHAIN_WETH: "0xD92773693917F0fF664f85c3cB698c33420947ff" run: yarn deploy-token-bridge-creator + + - name: Create Rollup + env: + ROLLUPCREATOR_FACTORY_ADDRESS: "0x7D0ED5a90b744F5872261a7D5509A85b283E95c9" + WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" + CHAIN_MAX_DATA_SIZE: ${{ env.MAX_DATA_SIZE }} + run: yarn deploy-chain \ No newline at end of file diff --git a/scripts/chain-deployer/deployNewChain.ts b/scripts/chain-deployer/deployNewChain.ts index 5d472b3..8034084 100644 --- a/scripts/chain-deployer/deployNewChain.ts +++ b/scripts/chain-deployer/deployNewChain.ts @@ -27,14 +27,9 @@ import { chainIsAnytrust } from '../../src/utils/chain-info-helpers'; import 'dotenv/config'; // Check for required env variables -if ( - !process.env.PARENT_CHAIN_ID || - !process.env.CHAIN_OWNER_PRIVATE_KEY || - !process.env.BATCH_POSTER_PRIVATE_KEY || - !process.env.STAKER_PRIVATE_KEY -) { +if (!process.env.PARENT_CHAIN_ID || !process.env.CHAIN_OWNER_PRIVATE_KEY) { throw new Error( - 'The following environment variables must be present: PARENT_CHAIN_ID, CHAIN_OWNER_PRIVATE_KEY, BATC_POSTER_PRIVATE_KEY, STAKER_PRIVATE_KEY', + 'The following environment variables must be present: PARENT_CHAIN_ID, CHAIN_OWNER_PRIVATE_KEY', ); } From a3748f2188fe3dc8ab999c76455385f72a338720 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 16:57:04 +0000 Subject: [PATCH 15/27] Empty private keys in example --- .env.example | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 6117c95..d90de0d 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,9 @@ ########################## # Private keys (Required) ########################## -CHAIN_OWNER_PRIVATE_KEY=0x0 -BATCH_POSTER_PRIVATE_KEY=0x0 -STAKER_PRIVATE_KEY=0x0 +CHAIN_OWNER_PRIVATE_KEY= +BATCH_POSTER_PRIVATE_KEY= +STAKER_PRIVATE_KEY= ########################## From 7450fe3d0303c5691f87276e46b3467414973650 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 17:28:31 +0000 Subject: [PATCH 16/27] Fix --- .github/workflows/contract-tests.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml index c4a98f0..5ff24e9 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/contract-tests.yml @@ -82,4 +82,14 @@ jobs: ROLLUPCREATOR_FACTORY_ADDRESS: "0x7D0ED5a90b744F5872261a7D5509A85b283E95c9" WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" CHAIN_MAX_DATA_SIZE: ${{ env.MAX_DATA_SIZE }} - run: yarn deploy-chain \ No newline at end of file + BATCH_POSTER_PRIVATE_KEY: "0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65" + STAKER_PRIVATE_KEY: "0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890" + run: yarn deploy-chain + + - name: Start nitro + env: + DOCKER_NETWORK: "kt-l1-network" + run: yarn start-nitro + + - name: Initialize chain + run: yarn initialize-chain \ No newline at end of file From a8d0dea221095db9f2cd15a163ec6ca2e8428b08 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Fri, 19 Dec 2025 18:34:57 +0000 Subject: [PATCH 17/27] Add local L1 to supported L1s --- src/utils/chain-info-helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/chain-info-helpers.ts b/src/utils/chain-info-helpers.ts index 0449638..fa0a91c 100644 --- a/src/utils/chain-info-helpers.ts +++ b/src/utils/chain-info-helpers.ts @@ -46,7 +46,7 @@ export const getChainConfiguration = () => { }; export const chainIsL1 = (chain: Chain) => { - return chain.id == 1 || chain.id == 11155111; + return chain.id == 1 || chain.id == 11155111 || chain.id == 1337; }; export const chainIsAnytrust = (): boolean => { From 5b5a7121e7a40659c34780217c047cc99208b589 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Sun, 21 Dec 2025 15:03:07 +0000 Subject: [PATCH 18/27] Fix command --- .github/workflows/{contract-tests.yml => ci-test.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{contract-tests.yml => ci-test.yml} (99%) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/ci-test.yml similarity index 99% rename from .github/workflows/contract-tests.yml rename to .github/workflows/ci-test.yml index 5ff24e9..c5bed5b 100644 --- a/.github/workflows/contract-tests.yml +++ b/.github/workflows/ci-test.yml @@ -89,7 +89,7 @@ jobs: - name: Start nitro env: DOCKER_NETWORK: "kt-l1-network" - run: yarn start-nitro + run: yarn start-node - name: Initialize chain run: yarn initialize-chain \ No newline at end of file From 34153c9d8f2564f1c597864ae4772dd5ea89f0c3 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Sun, 21 Dec 2025 17:39:31 +0000 Subject: [PATCH 19/27] Last steps --- .github/workflows/ci-test.yml | 15 ++++++++++++--- scripts/chain-deployer/deployNewChain.ts | 9 +++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index c5bed5b..66a9ed3 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -13,6 +13,8 @@ jobs: PARENT_CHAIN_RPC_URL: "http://172.16.0.10:8545" PARENT_CHAIN_BEACON_RPC_URL: "http://172.16.0.11:3500" CHAIN_OWNER_PRIVATE_KEY: "0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659" + BATCH_POSTER_PRIVATE_KEY: "0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65" + STAKER_PRIVATE_KEY: "0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890" MAX_DATA_SIZE: 117964 steps: @@ -82,8 +84,6 @@ jobs: ROLLUPCREATOR_FACTORY_ADDRESS: "0x7D0ED5a90b744F5872261a7D5509A85b283E95c9" WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" CHAIN_MAX_DATA_SIZE: ${{ env.MAX_DATA_SIZE }} - BATCH_POSTER_PRIVATE_KEY: "0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65" - STAKER_PRIVATE_KEY: "0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890" run: yarn deploy-chain - name: Start nitro @@ -92,4 +92,13 @@ jobs: run: yarn start-node - name: Initialize chain - run: yarn initialize-chain \ No newline at end of file + run: yarn initialize-chain + + - name: Deploy TokenBridge + env: + TOKENBRIDGECREATOR_FACTORY_ADDRESS: "0xBd7f7c83BdBABfD65a98c6D2AFc9261F3d2Eb03B" + WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" + run: yarn deploy-token-bridge + + - name: Transfer ownership + run: yarn transfer-ownership \ No newline at end of file diff --git a/scripts/chain-deployer/deployNewChain.ts b/scripts/chain-deployer/deployNewChain.ts index 8034084..3b2c45f 100644 --- a/scripts/chain-deployer/deployNewChain.ts +++ b/scripts/chain-deployer/deployNewChain.ts @@ -27,9 +27,14 @@ import { chainIsAnytrust } from '../../src/utils/chain-info-helpers'; import 'dotenv/config'; // Check for required env variables -if (!process.env.PARENT_CHAIN_ID || !process.env.CHAIN_OWNER_PRIVATE_KEY) { +if ( + !process.env.PARENT_CHAIN_ID || + !process.env.CHAIN_OWNER_PRIVATE_KEY || + !process.env.BATCH_POSTER_PRIVATE_KEY || + !process.env.STAKER_PRIVATE_KEY +) { throw new Error( - 'The following environment variables must be present: PARENT_CHAIN_ID, CHAIN_OWNER_PRIVATE_KEY', + 'The following environment variables must be present: PARENT_CHAIN_ID, CHAIN_OWNER_PRIVATE_KEY, BATCH_POSTER_PRIVATE_KEY, STAKER_PRIVATE_KEY', ); } From a98ab6becc93d93048e5924188ad6b2f767757de Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Sun, 21 Dec 2025 21:00:24 +0000 Subject: [PATCH 20/27] Global envs --- .github/workflows/ci-test.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index 66a9ed3..16eea1d 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -16,6 +16,10 @@ jobs: BATCH_POSTER_PRIVATE_KEY: "0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65" STAKER_PRIVATE_KEY: "0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890" MAX_DATA_SIZE: 117964 + CHAIN_MAX_DATA_SIZE: 117964 + ROLLUPCREATOR_FACTORY_ADDRESS: "0x7D0ED5a90b744F5872261a7D5509A85b283E95c9" + TOKENBRIDGECREATOR_FACTORY_ADDRESS: "0xBd7f7c83BdBABfD65a98c6D2AFc9261F3d2Eb03B" + WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" steps: - name: Checkout repository @@ -76,14 +80,10 @@ jobs: env: BASECHAIN_RPC: ${{ env.PARENT_CHAIN_RPC_URL }} BASECHAIN_DEPLOYER_KEY: ${{ env.CHAIN_OWNER_PRIVATE_KEY }} - BASECHAIN_WETH: "0xD92773693917F0fF664f85c3cB698c33420947ff" + BASECHAIN_WETH: ${{ env.WETH_ADDRESS }} run: yarn deploy-token-bridge-creator - name: Create Rollup - env: - ROLLUPCREATOR_FACTORY_ADDRESS: "0x7D0ED5a90b744F5872261a7D5509A85b283E95c9" - WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" - CHAIN_MAX_DATA_SIZE: ${{ env.MAX_DATA_SIZE }} run: yarn deploy-chain - name: Start nitro @@ -95,9 +95,6 @@ jobs: run: yarn initialize-chain - name: Deploy TokenBridge - env: - TOKENBRIDGECREATOR_FACTORY_ADDRESS: "0xBd7f7c83BdBABfD65a98c6D2AFc9261F3d2Eb03B" - WETH_ADDRESS: "0xD92773693917F0fF664f85c3cB698c33420947ff" run: yarn deploy-token-bridge - name: Transfer ownership From c6c09be01bdf6c628e2e05d792dfd509f085564b Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 22 Dec 2025 10:13:43 +0000 Subject: [PATCH 21/27] Add logs --- shell-scripts/start-nitro.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index b195a57..74922ec 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -34,9 +34,11 @@ docker compose create "${SERVICES[@]}" # Connect containers to the testnet docker network if needed if [ -n "$DOCKER_NETWORK" ]; then for svc in "${SERVICES[@]}"; do - cid=$(docker compose ps -a -q "$svc") - [ -z "$cid" ] && continue - docker network connect "$DOCKER_NETWORK" "$cid" 2>/dev/null || true + echo "Connecting service $svc to network $DOCKER_NETWORK" + cid=$(docker compose ps -a -q "$svc") + [ -z "$cid" ] && continue + docker network connect "$DOCKER_NETWORK" "$cid" 2>/dev/null || true + echo "Service connected" done fi From 898816759b91890087b1c5007ced37469afccc6b Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 22 Dec 2025 10:54:24 +0000 Subject: [PATCH 22/27] Fix nitro URL --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index d90de0d..99cc07a 100644 --- a/.env.example +++ b/.env.example @@ -35,7 +35,7 @@ DEPLOY_FACTORIES_TO_L2=true # Nitro node ########################## NITRO_DOCKER_IMAGE_TAG="offchainlabs/nitro-node:v3.8.0-62c0aa7" -NITRO_RPC_URL="http://localhost" +NITRO_RPC_URL="http://127.0.0.1" NITRO_PORT=8449 # Whether to split the Nitro node into one batch-poster, one staker, and one rpc node # If set to false, a single Nitro node will handle all three roles From 76798356424b8f6c710ddca1cb0b9a967cbe5f49 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 22 Dec 2025 14:39:40 +0000 Subject: [PATCH 23/27] Troubleshoot issue --- .github/workflows/ci-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index 16eea1d..cc8ecd3 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -91,6 +91,9 @@ jobs: DOCKER_NETWORK: "kt-l1-network" run: yarn start-node + - name: Check logs + run: docker compose logs nitro + - name: Initialize chain run: yarn initialize-chain From 62ef41a8ee240d351db4a95952c8f750eb9c2f1e Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 22 Dec 2025 16:27:21 +0000 Subject: [PATCH 24/27] Fix naming issue --- .env.example | 2 +- src/utils/node-configuration.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 99cc07a..04412ef 100644 --- a/.env.example +++ b/.env.example @@ -17,7 +17,7 @@ PARENT_CHAIN_BEACON_RPC_URL= ############################ # Arbitrum chain information ############################ -ARBITRUM_CHAIN_NAME= +ARBITRUM_CHAIN_NAME=TestChain USE_GENESIS_FILE=false diff --git a/src/utils/node-configuration.ts b/src/utils/node-configuration.ts index be3a0ab..36c7147 100644 --- a/src/utils/node-configuration.ts +++ b/src/utils/node-configuration.ts @@ -50,7 +50,7 @@ export const buildNodeConfiguration = ( // Preparing the node configuration // const nodeConfigParameters: PrepareNodeConfigParams = { - chainName: process.env.ARBITRUM_CHAIN_NAME || 'My Arbitrum chain', + chainName: process.env.ARBITRUM_CHAIN_NAME || 'MyArbitrumChain', chainConfig, coreContracts, batchPosterPrivateKey, From 09b7768bdc5508d16ff4dc060a54425b4751bc20 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 29 Dec 2025 12:36:26 +0000 Subject: [PATCH 25/27] Add fix for permissions --- docker-compose-split-nodes.yaml | 3 +++ docker-compose.yaml | 2 ++ shell-scripts/start-nitro.sh | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/docker-compose-split-nodes.yaml b/docker-compose-split-nodes.yaml index 509c358..689af6c 100644 --- a/docker-compose-split-nodes.yaml +++ b/docker-compose-split-nodes.yaml @@ -4,6 +4,7 @@ services: batch-poster: profiles: [split-nodes] + user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:8149:${NITRO_PORT}" @@ -19,6 +20,7 @@ services: profiles: [split-nodes] depends_on: - batch-poster + user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:8249:${NITRO_PORT}" @@ -33,6 +35,7 @@ services: profiles: [split-nodes] depends_on: - batch-poster + user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:${NITRO_PORT}:${NITRO_PORT}" diff --git a/docker-compose.yaml b/docker-compose.yaml index e08a662..6df4ff2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -8,6 +8,7 @@ include: services: nitro: profiles: [single-node] + user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:${NITRO_PORT}:${NITRO_PORT}" @@ -21,6 +22,7 @@ services: das-server: image: "${NITRO_DOCKER_IMAGE_TAG}" + user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" entrypoint: [ "/bin/bash", "-c", "/das-server.sh ${USE_ANYTRUST}" ] volumes: - "./chainConfig/das-server:/home/user/.arbitrum" diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index 74922ec..5951f73 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -28,6 +28,10 @@ export COMPOSE_PROFILES="$PROFILES" mapfile -t SERVICES < <(docker compose config --services) echo "Services: ${SERVICES[*]}" +#Export the user and group ID to be used by the nitro service +export LOCAL_UID=$(id -u) +export LOCAL_GID=$(id -g) + # Create containers without starting them docker compose create "${SERVICES[@]}" From 3b94d647f1b739bbb5a8f05f97652e29a5df6dd0 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Mon, 29 Dec 2025 13:00:18 +0000 Subject: [PATCH 26/27] Revert last change and try something else --- .github/workflows/ci-test.yml | 6 ++++++ docker-compose-split-nodes.yaml | 3 --- docker-compose.yaml | 2 -- shell-scripts/start-nitro.sh | 4 ---- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index cc8ecd3..c8568ca 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -85,6 +85,12 @@ jobs: - name: Create Rollup run: yarn deploy-chain + + - name: Set permissions + # TestChain is the default chain name in .env.example + run: | + mkdir -p /home/user/.arbitrum/TestChain + sudo chown -R 1000:1000 /home/user/.arbitrum/TestChain - name: Start nitro env: diff --git a/docker-compose-split-nodes.yaml b/docker-compose-split-nodes.yaml index 689af6c..509c358 100644 --- a/docker-compose-split-nodes.yaml +++ b/docker-compose-split-nodes.yaml @@ -4,7 +4,6 @@ services: batch-poster: profiles: [split-nodes] - user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:8149:${NITRO_PORT}" @@ -20,7 +19,6 @@ services: profiles: [split-nodes] depends_on: - batch-poster - user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:8249:${NITRO_PORT}" @@ -35,7 +33,6 @@ services: profiles: [split-nodes] depends_on: - batch-poster - user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:${NITRO_PORT}:${NITRO_PORT}" diff --git a/docker-compose.yaml b/docker-compose.yaml index 6df4ff2..e08a662 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -8,7 +8,6 @@ include: services: nitro: profiles: [single-node] - user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" image: "${NITRO_DOCKER_IMAGE_TAG}" ports: - "127.0.0.1:${NITRO_PORT}:${NITRO_PORT}" @@ -22,7 +21,6 @@ services: das-server: image: "${NITRO_DOCKER_IMAGE_TAG}" - user: "${LOCAL_UID:-1000}:${LOCAL_GID:-1000}" entrypoint: [ "/bin/bash", "-c", "/das-server.sh ${USE_ANYTRUST}" ] volumes: - "./chainConfig/das-server:/home/user/.arbitrum" diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index 5951f73..74922ec 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -28,10 +28,6 @@ export COMPOSE_PROFILES="$PROFILES" mapfile -t SERVICES < <(docker compose config --services) echo "Services: ${SERVICES[*]}" -#Export the user and group ID to be used by the nitro service -export LOCAL_UID=$(id -u) -export LOCAL_GID=$(id -g) - # Create containers without starting them docker compose create "${SERVICES[@]}" From cd8a98010bbe94328dce7f4fc428e1ee9a39e1d6 Mon Sep 17 00:00:00 2001 From: TucksonDev Date: Tue, 30 Dec 2025 12:40:28 +0000 Subject: [PATCH 27/27] Add CI specific flow --- .github/workflows/ci-test.yml | 8 +------- docker-compose.ci.yaml | 18 ++++++++++++++++++ shell-scripts/start-nitro.sh | 15 ++++++++++++--- 3 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 docker-compose.ci.yaml diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index c8568ca..8168c59 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -85,17 +85,11 @@ jobs: - name: Create Rollup run: yarn deploy-chain - - - name: Set permissions - # TestChain is the default chain name in .env.example - run: | - mkdir -p /home/user/.arbitrum/TestChain - sudo chown -R 1000:1000 /home/user/.arbitrum/TestChain - name: Start nitro env: DOCKER_NETWORK: "kt-l1-network" - run: yarn start-node + run: CI_RUN=true yarn start-node - name: Check logs run: docker compose logs nitro diff --git a/docker-compose.ci.yaml b/docker-compose.ci.yaml new file mode 100644 index 0000000..bad9dec --- /dev/null +++ b/docker-compose.ci.yaml @@ -0,0 +1,18 @@ +services: + nitro: + # Replace the base volumes with: + volumes: + # Named volume for chain data (no host permissions issues) + - nitro_data:/home/user/.arbitrum + + # Bind-mount the config into a different path, read-only + - ./chainConfig/rpc:/home/user/rpc-config:ro + + # Override the command so it uses the new config path + command: + - --conf.file=/home/user/rpc-config/rpc-config.json + - --node.feed.output.enable + - --node.feed.output.port=9642 + +volumes: + nitro_data: \ No newline at end of file diff --git a/shell-scripts/start-nitro.sh b/shell-scripts/start-nitro.sh index 74922ec..eb9b2f6 100755 --- a/shell-scripts/start-nitro.sh +++ b/shell-scripts/start-nitro.sh @@ -24,18 +24,27 @@ fi # Enable the selected profiles export COMPOSE_PROFILES="$PROFILES" +# If running in CI, layer docker-compose.ci.yaml on top +COMPOSE_FILES=() +if [ "$CI_RUN" = "true" ]; then + echo "CI_RUN=true detected: using docker-compose.ci.yaml overlay" + COMPOSE_FILES=(-f docker-compose.yaml -f docker-compose.ci.yaml) +else + COMPOSE_FILES=() +fi + # Obtain the list of services to be started mapfile -t SERVICES < <(docker compose config --services) echo "Services: ${SERVICES[*]}" # Create containers without starting them -docker compose create "${SERVICES[@]}" +docker compose "${COMPOSE_FILES[@]}" create "${SERVICES[@]}" # Connect containers to the testnet docker network if needed if [ -n "$DOCKER_NETWORK" ]; then for svc in "${SERVICES[@]}"; do echo "Connecting service $svc to network $DOCKER_NETWORK" - cid=$(docker compose ps -a -q "$svc") + cid=$(docker compose "${COMPOSE_FILES[@]}" ps -a -q "$svc") [ -z "$cid" ] && continue docker network connect "$DOCKER_NETWORK" "$cid" 2>/dev/null || true echo "Service connected" @@ -43,6 +52,6 @@ if [ -n "$DOCKER_NETWORK" ]; then fi # Start all services -docker compose start "${SERVICES[@]}" +docker compose "${COMPOSE_FILES[@]}" start "${SERVICES[@]}" echo "Nitro services started with profiles: $COMPOSE_PROFILES" \ No newline at end of file