From 62b02b7b0af4340ae36d6f4d3d89b47c96e73fd0 Mon Sep 17 00:00:00 2001 From: Morty Date: Tue, 10 Jun 2025 00:31:13 +0800 Subject: [PATCH 1/8] feat: add l1 anvil for shadow fork --- .gitignore | 1 + docker-compose/docker-compose.yml | 44 +++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a6cb72de..9c6fd0b0 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ target/ docker-compose/grafana_data/ docker-compose/l2reth/ docker-compose/prometheus_data/ +docker-compose/l1devnet/ diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 0171a582..6ff25b95 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -1,6 +1,35 @@ version: '3' services: + l1-devnet: + image: scrolltech/l1-devnet:v0.0.4 + container_name: l1-devnet + entrypoint: ["bash", "-c"] + command: > + ' + EXTRA_PARAMS=""; + if [ "$${FORK_BLOCK_NUMBER}" != "" ]; then + EXTRA_PARAMS="--fork-block-number $${FORK_BLOCK_NUMBER}"; + fi; + if [ "$${ENV:-}" = "sepolia" ]; then + anvil --fork-url http://l1reth-rpc.sepolia.scroll.tech:8545 --chain-id 11155111 --block-time 12 $EXTRA_PARAMS + elif [ "$${ENV:-}" = "mainnet" ]; then + anvil --fork-url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --chain-id 1 --block-time 12 $EXTRA_PARAMS + fi + ' + profiles: + - shadow-fork + environment: + - ENV=${ENV} + - FORK_BLOCK_NUMBER=${FORK_BLOCK_NUMBER} + ports: + - "8543:8545" # JSON-RPC + - "8544:8546" # WebSocket + volumes: + - ./l1devnet:/l1devnet + networks: + - scroll-network + rollup-node: image: scrolltech/rollup-node:v0.0.1-rc9 container_name: rollup-node @@ -10,21 +39,32 @@ services: if [ "$${ENV:-}" = "dev" ]; then exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --log.stdout.format log-fmt -vvv --sequencer.enabled --sequencer.block-time 250 --builder.deadline 250ms --sequencer.payload-building-duration 230 --txpool.pending-max-count=1000000 --builder.gaslimit=10000000000 --rpc.max-connections=5000 elif [ "$${ENV:-}" = "sepolia" ]; then + if [ "$SHADOW_FORK" = "true" ]; then + URL_PARAMS="--l1.url l1-devnet:8545"; + else + URL_PARAMS="--l1.url http://l1reth-rpc.sepolia.scroll.tech:8545"; + fi exec rollup-node node --chain scroll-sepolia --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ - --log.stdout.format log-fmt -vvv --l1.url http://l1reth-rpc.sepolia.scroll.tech:8545 --beacon.url http://l1reth-cl.sepolia.scroll.tech:5052 --network.scroll-wire --network.bridge + --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.sepolia.scroll.tech:5052 --network.scroll-wire --network.bridge --trusted-peers "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303,enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303,enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303" elif [ "$${ENV:-}" = "mainnet" ]; then + if [ "$SHADOW_FORK" = "true" ]; then + URL_PARAMS="--l1.url l1-devnet:8545 --beacon.url l1-devnet:8545"; + else + URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052"; + fi exec rollup-node node --chain scroll --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ - --log.stdout.format log-fmt -vvv --l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052 --network.scroll-wire --network.bridge \ + --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052 --network.scroll-wire --network.bridge \ --trusted-peers "enode://c6ac91f43df3d63916ac1ae411cdd5ba249d55d48a7bec7f8cd5bb351a31aba437e5a69e8a1de74d73fdfeba8af1cfe9caf9846ecd3abf60d1ffdf4925b55b23@54.186.123.248:30303,enode://fdcc807b5d1353f3a1e98b90208ce6ef1b7d446136e51eaa8ad657b55518a2f8b37655e42375d61622e6ea18f3faf9d070c9bbdf012cf5484bcbad33b7a15fb1@44.227.91.206:30303,enode://6beb5a3efbb39be73d17630b6da48e94c0ce7ec665172111463cb470197b20c12faa1fa6f835b81c28571277d1017e65c4e426cc92a46141cf69118ecf28ac03@44.237.194.52:30303,enode://7cf893d444eb8e129dca0f6485b3df579911606e7c728be4fa55fcc5f155a37c3ce07d217ccec5447798bde465ac2bdba2cb8763d107e9f3257e787579e9f27e@52.35.203.107:30303,enode://c7b2d94e95da343db6e667a01cef90376a592f2d277fbcbf6e9c9186734ed8003d01389571bd10cdbab7a6e5adfa6f0c7b55644d0db24e0b9deb4ec80f842075@54.70.236.187:30303" fi ' environment: - ENV=${ENV:-dev} + - SHADOW_FORK=${SHADOW_FORK:-false} - RUST_LOG=sqlx=off,info ports: - "8545:8545" # JSON-RPC From 6f5d7fe193d99f4956d7413de43ab708cb5e20f1 Mon Sep 17 00:00:00 2001 From: Morty Date: Sat, 5 Jul 2025 06:16:13 +0800 Subject: [PATCH 2/8] refactor: docker compose shadow-fork --- docker-compose/.env.shadow-fork | 3 +++ docker-compose/docker-compose.yml | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 docker-compose/.env.shadow-fork diff --git a/docker-compose/.env.shadow-fork b/docker-compose/.env.shadow-fork new file mode 100644 index 00000000..2b54d05b --- /dev/null +++ b/docker-compose/.env.shadow-fork @@ -0,0 +1,3 @@ +# .env.shadow-fork +SHADOW_FORK=true +FORK_BLOCK_NUMBER=0 \ No newline at end of file diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 6ff25b95..d98de027 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -19,6 +19,8 @@ services: ' profiles: - shadow-fork + env_file: + - .env.shadow-fork environment: - ENV=${ENV} - FORK_BLOCK_NUMBER=${FORK_BLOCK_NUMBER} @@ -51,9 +53,9 @@ services: --trusted-peers "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303,enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303,enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303" elif [ "$${ENV:-}" = "mainnet" ]; then if [ "$SHADOW_FORK" = "true" ]; then - URL_PARAMS="--l1.url l1-devnet:8545 --beacon.url l1-devnet:8545"; + URL_PARAMS="--l1.url l1-devnet:8545"; else - URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052"; + URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1"; fi exec rollup-node node --chain scroll --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev @@ -62,6 +64,8 @@ services: --trusted-peers "enode://c6ac91f43df3d63916ac1ae411cdd5ba249d55d48a7bec7f8cd5bb351a31aba437e5a69e8a1de74d73fdfeba8af1cfe9caf9846ecd3abf60d1ffdf4925b55b23@54.186.123.248:30303,enode://fdcc807b5d1353f3a1e98b90208ce6ef1b7d446136e51eaa8ad657b55518a2f8b37655e42375d61622e6ea18f3faf9d070c9bbdf012cf5484bcbad33b7a15fb1@44.227.91.206:30303,enode://6beb5a3efbb39be73d17630b6da48e94c0ce7ec665172111463cb470197b20c12faa1fa6f835b81c28571277d1017e65c4e426cc92a46141cf69118ecf28ac03@44.237.194.52:30303,enode://7cf893d444eb8e129dca0f6485b3df579911606e7c728be4fa55fcc5f155a37c3ce07d217ccec5447798bde465ac2bdba2cb8763d107e9f3257e787579e9f27e@52.35.203.107:30303,enode://c7b2d94e95da343db6e667a01cef90376a592f2d277fbcbf6e9c9186734ed8003d01389571bd10cdbab7a6e5adfa6f0c7b55644d0db24e0b9deb4ec80f842075@54.70.236.187:30303" fi ' + env_file: + - .env.shadow-fork environment: - ENV=${ENV:-dev} - SHADOW_FORK=${SHADOW_FORK:-false} From a0f9820a36417520d0aee12c33d62f99736f2f1d Mon Sep 17 00:00:00 2001 From: Morty Date: Mon, 7 Jul 2025 04:09:25 +0800 Subject: [PATCH 3/8] update docker image --- docker-compose/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 138c61c1..5453239b 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -33,7 +33,7 @@ services: - scroll-network rollup-node: - image: scrolltech/rollup-node:v0.0.1-rc9 + image: jayjayjayjay/rollup-node:v0.0.4 container_name: rollup-node entrypoint: ["sh", "-c"] command: > From da206ce4c8a92db79766cae61959f71e4e4e1e2d Mon Sep 17 00:00:00 2001 From: Morty Date: Mon, 7 Jul 2025 06:02:48 +0800 Subject: [PATCH 4/8] update docker image --- docker-compose/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 5453239b..60c4101f 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -33,7 +33,7 @@ services: - scroll-network rollup-node: - image: jayjayjayjay/rollup-node:v0.0.4 + image: scrolltech/rollup-node:v0.0.1-rc19 container_name: rollup-node entrypoint: ["sh", "-c"] command: > From 1dcc81b0691cfce06f218cef84edd44eeb8055b2 Mon Sep 17 00:00:00 2001 From: Morty Date: Mon, 7 Jul 2025 18:50:07 +0800 Subject: [PATCH 5/8] fix: l1-devent host issue --- docker-compose/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 60c4101f..f8e6ea81 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -12,9 +12,9 @@ services: EXTRA_PARAMS="--fork-block-number $${FORK_BLOCK_NUMBER}"; fi; if [ "$${ENV:-}" = "sepolia" ]; then - anvil --fork-url http://l1reth-rpc.sepolia.scroll.tech:8545 --chain-id 11155111 --block-time 12 $EXTRA_PARAMS + anvil --fork-url http://l1reth-rpc.sepolia.scroll.tech:8545 --chain-id 11155111 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS elif [ "$${ENV:-}" = "mainnet" ]; then - anvil --fork-url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --chain-id 1 --block-time 12 $EXTRA_PARAMS + anvil --fork-url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --chain-id 1 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS fi ' profiles: From 43bf496d99da2aa07bd455bfce919fdfafb40474 Mon Sep 17 00:00:00 2001 From: Morty Date: Mon, 7 Jul 2025 19:10:24 +0800 Subject: [PATCH 6/8] add README for docker-compose --- docker-compose/.env.shadow-fork | 3 +- docker-compose/README.md | 89 +++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 docker-compose/README.md diff --git a/docker-compose/.env.shadow-fork b/docker-compose/.env.shadow-fork index 2b54d05b..360c9a75 100644 --- a/docker-compose/.env.shadow-fork +++ b/docker-compose/.env.shadow-fork @@ -1,3 +1,4 @@ # .env.shadow-fork SHADOW_FORK=true -FORK_BLOCK_NUMBER=0 \ No newline at end of file +FORK_BLOCK_NUMBER=8700000 +ENV=sepolia diff --git a/docker-compose/README.md b/docker-compose/README.md new file mode 100644 index 00000000..d8372b1e --- /dev/null +++ b/docker-compose/README.md @@ -0,0 +1,89 @@ +# Scroll Rollup Node Docker Compose + +This guide explains how to use Docker Compose to launch the Scroll Rollup Node, including standard and shadow-fork modes. + +--- + +## Prerequisites +- [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) installed +- Clone this repository + +--- + +## Quick Start: Launching the Node + +1. **Navigate to the `docker-compose` directory:** + ```sh + cd docker-compose + ``` + +2. **Start the node and monitoring stack:** + ```sh + docker compose up -d + ``` + This will launch the rollup node, Prometheus, and Grafana with default settings. + +3. **Access the services:** + - Rollup Node JSON-RPC: [http://localhost:8545](http://localhost:8545) + - Rollup Node WebSocket: [ws://localhost:8546](ws://localhost:8546) + - Prometheus: [http://localhost:19090](http://localhost:19090) + - Grafana: [http://localhost:13000](http://localhost:13000) + +--- + +## Shadow-Fork Mode + +Shadow-fork mode allows you to run the node against a forked L1 chain for testing and development. + +### 1. Edit the `.env.shadow-fork` file + +The file `docker-compose/.env.shadow-fork` contains environment variables for shadow-fork mode: + +``` +SHADOW_FORK=true +FORK_BLOCK_NUMBER=8700000 # Change to your desired fork block +ENV=sepolia # Or 'mainnet' for mainnet fork +``` + +### 2. Launch with the shadow-fork profile + +**Recommended (Docker Compose v1.28+):** + +```sh +docker compose --env-file .env.shadow-fork --profile shadow-fork up -d +``` + +- This will start both the L1 devnet and the rollup node in shadow-fork mode. +- The `FORK_BLOCK_NUMBER` and `ENV` variables control the fork point and network. + +**Alternative:** +You can also copy or rename `.env.shadow-fork` to `.env` if you want it to be loaded automatically: + +```sh +cp .env.shadow-fork .env +# Then run: +docker compose --profile shadow-fork up -d +``` + +--- + +## Stopping the Stack + +To stop all services: +```sh +docker compose down +``` + +--- + +## Troubleshooting +- Make sure the ports (8545, 8546, 19090, 13000) are not used by other processes. +- If you change environment variables, restart the stack with `docker compose down && docker compose up -d`. +- For shadow-fork mode, always ensure you specify the correct `--env-file` or have the right `.env` file in place. + +--- + +## More +- See `docker-compose/docker-compose.yml` for all available services and configuration options. +- For advanced usage, refer to the official [Docker Compose documentation](https://docs.docker.com/compose/). + From 3f261455610ef75f28ed95c65204c3182de497a1 Mon Sep 17 00:00:00 2001 From: Morty Date: Wed, 9 Jul 2025 01:35:19 +0800 Subject: [PATCH 7/8] chore: move docker compose command to separate files --- docker-compose/docker-compose.yml | 44 ++------------------------ docker-compose/launch_l1.bash | 13 ++++++++ docker-compose/launch_rollup_node.bash | 28 ++++++++++++++++ 3 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 docker-compose/launch_l1.bash create mode 100644 docker-compose/launch_rollup_node.bash diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index f8e6ea81..44808169 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -4,19 +4,7 @@ services: l1-devnet: image: scrolltech/l1-devnet:v0.0.4 container_name: l1-devnet - entrypoint: ["bash", "-c"] - command: > - ' - EXTRA_PARAMS=""; - if [ "$${FORK_BLOCK_NUMBER}" != "" ]; then - EXTRA_PARAMS="--fork-block-number $${FORK_BLOCK_NUMBER}"; - fi; - if [ "$${ENV:-}" = "sepolia" ]; then - anvil --fork-url http://l1reth-rpc.sepolia.scroll.tech:8545 --chain-id 11155111 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS - elif [ "$${ENV:-}" = "mainnet" ]; then - anvil --fork-url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --chain-id 1 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS - fi - ' + entrypoint: ["bash", "/docker-compose/launch_l1.bash"] profiles: - shadow-fork env_file: @@ -35,35 +23,7 @@ services: rollup-node: image: scrolltech/rollup-node:v0.0.1-rc19 container_name: rollup-node - entrypoint: ["sh", "-c"] - command: > - ' - if [ "$${ENV:-}" = "dev" ]; then - exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --log.stdout.format log-fmt -vvv --sequencer.enabled --sequencer.block-time 250 --sequencer.payload-building-duration 230 --txpool.pending-max-count=1000000 --builder.gaslimit=10000000000 --rpc.max-connections=5000 - elif [ "$${ENV:-}" = "sepolia" ]; then - if [ "$SHADOW_FORK" = "true" ]; then - URL_PARAMS="--l1.url l1-devnet:8545"; - else - URL_PARAMS="--l1.url http://l1reth-rpc.sepolia.scroll.tech:8545"; - fi - exec rollup-node node --chain scroll-sepolia --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ - --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ - --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ - --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.sepolia.scroll.tech:5052 --network.scroll-wire --network.bridge - --trusted-peers "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303,enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303,enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303" - elif [ "$${ENV:-}" = "mainnet" ]; then - if [ "$SHADOW_FORK" = "true" ]; then - URL_PARAMS="--l1.url l1-devnet:8545"; - else - URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1"; - fi - exec rollup-node node --chain scroll-mainnet --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ - --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev - --ws --ws.addr 0.0.0.0 --ws.port 8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ - --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052 --network.scroll-wire --network.bridge \ - --trusted-peers "enode://c6ac91f43df3d63916ac1ae411cdd5ba249d55d48a7bec7f8cd5bb351a31aba437e5a69e8a1de74d73fdfeba8af1cfe9caf9846ecd3abf60d1ffdf4925b55b23@54.186.123.248:30303,enode://fdcc807b5d1353f3a1e98b90208ce6ef1b7d446136e51eaa8ad657b55518a2f8b37655e42375d61622e6ea18f3faf9d070c9bbdf012cf5484bcbad33b7a15fb1@44.227.91.206:30303,enode://6beb5a3efbb39be73d17630b6da48e94c0ce7ec665172111463cb470197b20c12faa1fa6f835b81c28571277d1017e65c4e426cc92a46141cf69118ecf28ac03@44.237.194.52:30303,enode://7cf893d444eb8e129dca0f6485b3df579911606e7c728be4fa55fcc5f155a37c3ce07d217ccec5447798bde465ac2bdba2cb8763d107e9f3257e787579e9f27e@52.35.203.107:30303,enode://c7b2d94e95da343db6e667a01cef90376a592f2d277fbcbf6e9c9186734ed8003d01389571bd10cdbab7a6e5adfa6f0c7b55644d0db24e0b9deb4ec80f842075@54.70.236.187:30303" - fi - ' + entrypoint: ["bash", "/docker-compose/launch_rollup_node.bash"] env_file: - .env.shadow-fork environment: diff --git a/docker-compose/launch_l1.bash b/docker-compose/launch_l1.bash new file mode 100644 index 00000000..159f4d25 --- /dev/null +++ b/docker-compose/launch_l1.bash @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -e + +EXTRA_PARAMS="" +if [ "${FORK_BLOCK_NUMBER}" != "" ]; then + EXTRA_PARAMS="--fork-block-number ${FORK_BLOCK_NUMBER}" +fi + +if [ "${ENV:-}" = "sepolia" ]; then + exec anvil --fork-url http://l1reth-rpc.sepolia.scroll.tech:8545 --chain-id 11155111 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS +elif [ "${ENV:-}" = "mainnet" ]; then + exec anvil --fork-url http://l1geth-rpc.mainnet.scroll.tech:8545/l1 --chain-id 1 --host 0.0.0.0 --block-time 12 $EXTRA_PARAMS +fi \ No newline at end of file diff --git a/docker-compose/launch_rollup_node.bash b/docker-compose/launch_rollup_node.bash new file mode 100644 index 00000000..c53139bb --- /dev/null +++ b/docker-compose/launch_rollup_node.bash @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -e + +if [ "${ENV:-}" = "dev" ]; then + exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --log.stdout.format log-fmt -vvv --sequencer.enabled --sequencer.block-time 250 --sequencer.payload-building-duration 230 --txpool.pending-max-count=1000000 --builder.gaslimit=10000000000 --rpc.max-connections=5000 +elif [ "${ENV:-}" = "sepolia" ]; then + if [ "${SHADOW_FORK}" = "true" ]; then + URL_PARAMS="--l1.url l1-devnet:8545" + else + URL_PARAMS="--l1.url http://l1reth-rpc.sepolia.scroll.tech:8545" + fi + exec rollup-node node --chain scroll-sepolia --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ + --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ + --ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ + --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.sepolia.scroll.tech:5052 --network.scroll-wire --network.bridge \ + --trusted-peers "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303,enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303,enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303" +elif [ "${ENV:-}" = "mainnet" ]; then + if [ "${SHADOW_FORK}" = "true" ]; then + URL_PARAMS="--l1.url l1-devnet:8545" + else + URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1" + fi + exec rollup-node node --chain scroll-mainnet --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery \ + --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ + --ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \ + --log.stdout.format log-fmt -vvv $URL_PARAMS --beacon.url http://l1reth-cl.mainnet.scroll.tech:5052 --network.scroll-wire --network.bridge \ + --trusted-peers "enode://c6ac91f43df3d63916ac1ae411cdd5ba249d55d48a7bec7f8cd5bb351a31aba437e5a69e8a1de74d73fdfeba8af1cfe9caf9846ecd3abf60d1ffdf4925b55b23@54.186.123.248:30303,enode://fdcc807b5d1353f3a1e98b90208ce6ef1b7d446136e51eaa8ad657b55518a2f8b37655e42375d61622e6ea18f3faf9d070c9bbdf012cf5484bcbad33b7a15fb1@44.227.91.206:30303,enode://6beb5a3efbb39be73d17630b6da48e94c0ce7ec665172111463cb470197b20c12faa1fa6f835b81c28571277d1017e65c4e426cc92a46141cf69118ecf28ac03@44.237.194.52:30303,enode://7cf893d444eb8e129dca0f6485b3df579911606e7c728be4fa55fcc5f155a37c3ce07d217ccec5447798bde465ac2bdba2cb8763d107e9f3257e787579e9f27e@52.35.203.107:30303,enode://c7b2d94e95da343db6e667a01cef90376a592f2d277fbcbf6e9c9186734ed8003d01389571bd10cdbab7a6e5adfa6f0c7b55644d0db24e0b9deb4ec80f842075@54.70.236.187:30303" +fi \ No newline at end of file From e1c8cc1ab9a9c0c3d199ffe1a535aa21ef0eaef5 Mon Sep 17 00:00:00 2001 From: Morty Date: Wed, 9 Jul 2025 03:51:40 +0800 Subject: [PATCH 8/8] fix: addlaunch order dependency --- docker-compose/docker-compose.yml | 16 +++++++++++++--- docker-compose/launch_rollup_node.bash | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 44808169..675634a9 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -2,9 +2,9 @@ version: '3' services: l1-devnet: - image: scrolltech/l1-devnet:v0.0.4 + image: ghcr.io/foundry-rs/foundry:v1.2.3 container_name: l1-devnet - entrypoint: ["bash", "/docker-compose/launch_l1.bash"] + entrypoint: ["bash", "/launch_l1.bash"] profiles: - shadow-fork env_file: @@ -17,13 +17,19 @@ services: - "8544:8546" # WebSocket volumes: - ./l1devnet:/l1devnet + - ./launch_l1.bash:/launch_l1.bash + healthcheck: + test: ["CMD", "cast", "bn", "-r", "http://localhost:8545"] + interval: 3s + timeout: 2s + retries: 20 networks: - scroll-network rollup-node: image: scrolltech/rollup-node:v0.0.1-rc19 container_name: rollup-node - entrypoint: ["bash", "/docker-compose/launch_rollup_node.bash"] + entrypoint: ["bash", "/launch_rollup_node.bash"] env_file: - .env.shadow-fork environment: @@ -36,8 +42,12 @@ services: - "6060:6060" # Metrics volumes: - ./l2reth:/l2reth + - ./launch_rollup_node.bash:/launch_rollup_node.bash networks: - scroll-network + depends_on: + l1-devnet: + condition: service_healthy prometheus: image: prom/prometheus:latest diff --git a/docker-compose/launch_rollup_node.bash b/docker-compose/launch_rollup_node.bash index c53139bb..87534a5d 100644 --- a/docker-compose/launch_rollup_node.bash +++ b/docker-compose/launch_rollup_node.bash @@ -5,7 +5,7 @@ if [ "${ENV:-}" = "dev" ]; then exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --disable-discovery --http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev --log.stdout.format log-fmt -vvv --sequencer.enabled --sequencer.block-time 250 --sequencer.payload-building-duration 230 --txpool.pending-max-count=1000000 --builder.gaslimit=10000000000 --rpc.max-connections=5000 elif [ "${ENV:-}" = "sepolia" ]; then if [ "${SHADOW_FORK}" = "true" ]; then - URL_PARAMS="--l1.url l1-devnet:8545" + URL_PARAMS="--l1.url http://l1-devnet:8545" else URL_PARAMS="--l1.url http://l1reth-rpc.sepolia.scroll.tech:8545" fi @@ -16,7 +16,7 @@ elif [ "${ENV:-}" = "sepolia" ]; then --trusted-peers "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303,enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303,enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303" elif [ "${ENV:-}" = "mainnet" ]; then if [ "${SHADOW_FORK}" = "true" ]; then - URL_PARAMS="--l1.url l1-devnet:8545" + URL_PARAMS="--l1.url http://l1-devnet:8545" else URL_PARAMS="--l1.url http://l1geth-rpc.mainnet.scroll.tech:8545/l1" fi