diff --git a/.github/actions/compute-docker-images-hash/action.yml b/.github/actions/compute-docker-images-hash/action.yml index 7f195e68f..4e2fd7c67 100644 --- a/.github/actions/compute-docker-images-hash/action.yml +++ b/.github/actions/compute-docker-images-hash/action.yml @@ -16,8 +16,8 @@ runs: id: compute-docker-images-hash shell: bash run: | - docker_images_traces_v1=$(docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml --profile l1 --profile l2 config 2>/dev/null | grep "image:" | awk '{print $2}') - docker_images_traces_v2=$(docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml --profile l1 --profile l2 config 2>/dev/null | grep "image:" | awk '{print $2}') + docker_images_traces_v1=$(docker compose -f docker/compose-tracing-v1-ci-extension.yml --profile l1 --profile l2 config 2>/dev/null | grep "image:" | awk '{print $2}') + docker_images_traces_v2=$(docker compose -f docker/compose-tracing-v2-ci-extension.yml --profile l1 --profile l2 config 2>/dev/null | grep "image:" | awk '{print $2}') docker_images=$(echo "$docker_images_traces_v1 $docker_images_traces_v2") docker_images_unique=$(echo $docker_images | xargs -n1 | sort -u) docker_images_trimmed=$(echo $docker_images_unique | xargs -n1 | grep -Ev "linea-postman|linea-coordinator|linea-transaction-exclusion-api|linea-traces-api-facade|linea-prover" | xargs) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 677229433..c064f3170 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,9 +48,7 @@ jobs: - 'config/common/traces-limits-v2.toml' - 'config/coordinator/**' - 'e2e/**' - - 'docker/compose.yml' - - 'docker/compose-local-dev.overrides.yml' - - 'docker/compose-local-dev-traces-v2.overrides.yml' + - 'docker/compose-*.yml' staterecovery: - 'state-recovery/**' - 'buildSrc/**' diff --git a/.github/workflows/reuse-run-e2e-tests.yml b/.github/workflows/reuse-run-e2e-tests.yml index 660ba471d..0eaa3f13d 100644 --- a/.github/workflows/reuse-run-e2e-tests.yml +++ b/.github/workflows/reuse-run-e2e-tests.yml @@ -96,8 +96,8 @@ jobs: - name: Create directory for conflated traces run: | mkdir -p tmp/local/traces/v2/conflated - chmod -R a+w tmp/local/traces/v2/conflated - # Disable cache for pulling docker images as empirically found that this + chmod -R a+rw tmp/local/ + # Disable cache for pulling docker images as empirically found that this # (retrieving cache and loading docker images) actually increased test time-to-completion # - name: Restore cached images # id: restore-cached-images @@ -111,7 +111,7 @@ jobs: retry_wait_seconds: 30 timeout_minutes: 10 command: | - make pull-images-external-to-monorepo + make docker-pull-images-external-to-monorepo - name: Download local docker image artifacts uses: actions/download-artifact@v4 with: @@ -134,7 +134,7 @@ jobs: retry_wait_seconds: 30 timeout_minutes: 10 command: | - make start-all + make start-env-with-tracing-v1-ci on_retry_command: | make clean-environment - name: Spin up fresh environment with besu tracing with retry @@ -146,7 +146,7 @@ jobs: retry_wait_seconds: 30 timeout_minutes: 10 command: | - make start-all-traces-v2 + make start-env-with-tracing-v2-ci on_retry_command: | make clean-environment - name: List docker containers/images @@ -168,16 +168,17 @@ jobs: if: ${{ failure() && inputs.e2e-tests-logs-dump }} run: | mkdir -p docker_logs + find tmp/local/ >> docker_logs/files_in_shared_dir.txt docker ps -a >> docker_logs/docker_ps.txt docker logs coordinator --since 1h &>> docker_logs/coordinator.txt - docker logs prover --since 1h &>> docker_logs/prover.txt - docker logs prover-v3 --since 1h &>> docker_logs/prover-v3.txt; + docker logs prover --since 1h &>> docker_logs/prover.txt || true + docker logs prover-v3 --since 1h &>> docker_logs/prover-v3.txt; || true docker logs shomei --since 1h &>> docker_logs/shomei.txt docker logs zkbesu-shomei --since 1h &>> docker_logs/zkbesu-shomei.txt docker logs shomei-frontend --since 1h &>> docker_logs/shomei-frontend.txt docker logs postman --since 1h &>> docker_logs/postman.txt - docker logs traces-node --since 1h &>> docker_logs/traces-node.txt - docker logs traces-node-v2 --since 1h &>> docker_logs/traces-node-v2.txt; + docker logs traces-node --since 1h &>> docker_logs/traces-node.txt || true + docker logs traces-node-v2 --since 1h &>> docker_logs/traces-node-v2.txt; || true docker logs l2-node-besu --since 1h &>> docker_logs/l2-node-besu.txt; docker logs transaction-exclusion-api --since 1h &>> docker_logs/transaction-exclusion-api.txt docker logs sequencer --since 1h &>> docker_logs/sequencer.txt diff --git a/Makefile b/Makefile index 043cb9b19..e00930166 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +include makefile-contracts.mk + define get_future_time $(shell \ OS=$$(uname); \ @@ -9,15 +11,8 @@ $(shell \ ) endef -pnpm-install: - pnpm install - -docker-pull-develop: - L1_GENESIS_TIME=$(get_future_time) docker compose -f docker/compose.yml pull - -clean-smc-folders: - rm -f contracts/.openzeppelin/unknown-31648428.json - rm -f contracts/.openzeppelin/unknown-1337.json +docker-pull-images-external-to-monorepo: + docker compose -f docker/compose-tracing-v1-ci-extension.yml -f docker/compose-tracing-v2-ci-extension.yml --profile external-to-monorepo pull clean-local-folders: make clean-smc-folders @@ -28,230 +23,93 @@ clean-testnet-folders: rm -rf tmp/testnet/* clean-environment: - docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml --profile l1 --profile l2 --profile debug --profile staterecovery kill -s 9 || true - docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml --profile l1 --profile l2 --profile debug --profile staterecovery down || true + docker compose -f docker/compose-tracing-v1-ci-extension.yml -f docker/compose-tracing-v2-ci-extension.yml --profile l1 --profile l2 --profile debug --profile staterecovery kill -s 9 || true + docker compose -f docker/compose-tracing-v1-ci-extension.yml -f docker/compose-tracing-v2-ci-extension.yml --profile l1 --profile l2 --profile debug --profile staterecovery down || true make clean-local-folders docker volume rm linea-local-dev linea-logs || true # ignore failure if volumes do not exist already docker system prune -f || true +start-env: COMPOSE_PROFILES:=l1,l2 +start-env: CLEAN_PREVIOUS_ENV:=true +start-env: COMPOSE_FILE:=docker/compose-tracing-v2.yml +start-env: L1_CONTRACT_VERSION:=6 +start-env: SKIP_CONTRACTS_DEPLOYMENT:=false +start-env: LINEA_PROTOCOL_CONTRACTS_ONLY:=false +start-env: + if [ "$(CLEAN_PREVIOUS_ENV)" = "true" ]; then \ + make clean-environment; \ + else \ + echo "Starting stack reusing previous state"; \ + fi + L1_GENESIS_TIME=$(get_future_time) COMPOSE_PROFILES=$(COMPOSE_PROFILES) docker compose -f $(COMPOSE_FILE) up -d + if [ "$(SKIP_CONTRACTS_DEPLOYMENT)" = "true" ]; then \ + echo "Skipping contracts deployment"; \ + else \ + make deploy-contracts L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) LINEA_PROTOCOL_CONTRACTS_ONLY=$(LINEA_PROTOCOL_CONTRACTS_ONLY); \ + fi + start-l1: - L1_GENESIS_TIME=$(get_future_time) docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml --profile l1 up -d + command start-env COMPOSE_PROFILES:=l1 COMPOSE_FILE:=docker/compose-tracing-v2.yml SKIP_CONTRACTS_DEPLOYMENT:=true start-l2: - docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml --profile l2 up -d + command start-env COMPOSE_PROFILES:=l2 COMPOSE_FILE:=docker/compose-tracing-v2.yml SKIP_CONTRACTS_DEPLOYMENT:=true start-l2-blockchain-only: - docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml --profile l2-bc up -d - -start-whole-environment: COMPOSE_PROFILES:=l1,l2 -start-whole-environment: - # docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml build prover - L1_GENESIS_TIME=$(get_future_time) COMPOSE_PROFILES=$(COMPOSE_PROFILES) docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml up -d - - -start-whole-environment-traces-v2: COMPOSE_PROFILES:=l1,l2 -start-whole-environment-traces-v2: - @if [ -z "$(L1_GENESIS_TIME)" ]; then \ - L1_GENESIS_TIME=$(get_future_time); \ - fi; \ - L1_GENESIS_TIME=$$L1_GENESIS_TIME COMPOSE_PROFILES=$(COMPOSE_PROFILES) docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml up -d - -pull-all-images: - COMPOSE_PROFILES:=l1,l2 docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml pull - -pull-images-external-to-monorepo: - docker compose -f docker/compose.yml -f docker/compose-local-dev-traces-v2.overrides.yml --profile external-to-monorepo pull - -compile-contracts: - cd contracts; \ - make compile - -compile-contracts-no-cache: - cd contracts/; \ - make force-compile - -deploy-linea-rollup: L1_CONTRACT_VERSION:=6 -deploy-linea-rollup: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - PRIVATE_KEY=$${DEPLOYMENT_PRIVATE_KEY:-0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80} \ - RPC_URL=http:\\localhost:8445/ \ - VERIFIER_CONTRACT_NAME=IntegrationTestTrueVerifier \ - LINEA_ROLLUP_INITIAL_STATE_ROOT_HASH=0x072ead6777750dc20232d1cee8dc9a395c2d350df4bbaa5096c6f59b214dcecd \ - LINEA_ROLLUP_INITIAL_L2_BLOCK_NUMBER=0 \ - LINEA_ROLLUP_SECURITY_COUNCIL=0x90F79bf6EB2c4f870365E785982E1f101E93b906 \ - LINEA_ROLLUP_OPERATORS=$${LINEA_ROLLUP_OPERATORS:-0x70997970C51812dc3A010C7d01b50e0d17dc79C8,0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC} \ - LINEA_ROLLUP_RATE_LIMIT_PERIOD=86400 \ - LINEA_ROLLUP_RATE_LIMIT_AMOUNT=1000000000000000000000 \ - LINEA_ROLLUP_GENESIS_TIMESTAMP=1683325137 \ - npx ts-node local-deployments-artifacts/deployPlonkVerifierAndLineaRollupV$(L1_CONTRACT_VERSION).ts - -deploy-linea-rollup-v6: - $(MAKE) deploy-linea-rollup L1_CONTRACT_VERSION=6 - -deploy-l2messageservice: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - MESSAGE_SERVICE_CONTRACT_NAME=L2MessageService \ - PRIVATE_KEY=$${DEPLOYMENT_PRIVATE_KEY:-0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae} \ - RPC_URL=http:\\localhost:8545/ \ - L2MSGSERVICE_SECURITY_COUNCIL=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 \ - L2MSGSERVICE_L1L2_MESSAGE_SETTER=$${L2MSGSERVICE_L1L2_MESSAGE_SETTER:-0xd42e308fc964b71e18126df469c21b0d7bcb86cc} \ - L2MSGSERVICE_RATE_LIMIT_PERIOD=86400 \ - L2MSGSERVICE_RATE_LIMIT_AMOUNT=1000000000000000000000 \ - npx ts-node local-deployments-artifacts/deployL2MessageService.ts - -deploy-token-bridge-l1: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ - RPC_URL=http:\\localhost:8445/ \ - REMOTE_CHAIN_ID=1337 \ - TOKEN_BRIDGE_L1=true \ - L1_TOKEN_BRIDGE_SECURITY_COUNCIL=0x90F79bf6EB2c4f870365E785982E1f101E93b906 \ - L2MESSAGESERVICE_ADDRESS=0xe537D669CA013d86EBeF1D64e40fC74CADC91987 \ - LINEA_ROLLUP_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 \ - npx ts-node local-deployments-artifacts/deployBridgedTokenAndTokenBridge.ts - -deploy-token-bridge-l2: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - SAVE_ADDRESS=true \ - PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ - RPC_URL=http:\\localhost:8545/ \ - REMOTE_CHAIN_ID=31648428 \ - TOKEN_BRIDGE_L1=false \ - L2_TOKEN_BRIDGE_SECURITY_COUNCIL=0xf17f52151EbEF6C7334FAD080c5704D77216b732 \ - L2MESSAGESERVICE_ADDRESS=0xe537D669CA013d86EBeF1D64e40fC74CADC91987 \ - LINEA_ROLLUP_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 \ - npx ts-node local-deployments-artifacts/deployBridgedTokenAndTokenBridge.ts - -deploy-l1-test-erc20: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ - RPC_URL=http:\\localhost:8445/ \ - TEST_ERC20_L1=true \ - TEST_ERC20_NAME=TestERC20 \ - TEST_ERC20_SYMBOL=TERC20 \ - TEST_ERC20_INITIAL_SUPPLY=100000 \ - npx ts-node local-deployments-artifacts/deployTestERC20.ts - -deploy-l2-test-erc20: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ - RPC_URL=http:\\localhost:8545/ \ - TEST_ERC20_L1=false \ - TEST_ERC20_NAME=TestERC20 \ - TEST_ERC20_SYMBOL=TERC20 \ - TEST_ERC20_INITIAL_SUPPLY=100000 \ - npx ts-node local-deployments-artifacts/deployTestERC20.ts - -deploy-l2-evm-opcode-tester: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ - RPC_URL=http:\\localhost:8545/ \ - npx ts-node local-deployments-artifacts/deployLondonEvmTestingFramework.ts - - -evm-opcode-tester-execute-all-opcodes: OPCODE_TEST_CONTRACT_ADDRESS:=0x997FC3aF1F193Cbdc013060076c67A13e218980e -evm-opcode-tester-execute-all-opcodes: - # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE - cd contracts/; \ - OPCODE_TEST_CONTRACT_ADDRESS=$(OPCODE_TEST_CONTRACT_ADDRESS) \ - NUMBER_OF_RUNS=3 \ - PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ - RPC_URL=http:\\localhost:8545/ \ - npx ts-node local-deployments-artifacts/executeAllOpcodes.ts + command start-env COMPOSE_PROFILES:=l2-bc COMPOSE_FILE:=docker/compose-tracing-v2.yml SKIP_CONTRACTS_DEPLOYMENT:=true fresh-start-l2-blockchain-only: make clean-environment make start-l2-blockchain-only -restart-shomei: - docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml rm zkbesu-shomei shomei - rm -rf tmp/local/shomei/* - docker compose -f docker/compose.yml -f docker/compose-local-dev.overrides.yml up zkbesu-shomei shomei -d - -fresh-start-all: COMPOSE_PROFILES:="l1,l2" -fresh-start-all: L1_CONTRACT_VERSION:=6 -fresh-start-all: - make clean-environment - make start-all L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) COMPOSE_PROFILES=$(COMPOSE_PROFILES) - -fresh-start-all-traces-v2: COMPOSE_PROFILES:="l1,l2" -fresh-start-all-traces-v2: L1_CONTRACT_VERSION:=6 -fresh-start-all-traces-v2: - make clean-environment - $(MAKE) start-all-traces-v2 L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) COMPOSE_PROFILES=$(COMPOSE_PROFILES) - -start-all: COMPOSE_PROFILES:=l1,l2 -start-all: L1_CONTRACT_VERSION:=6 -start-all: - L1_GENESIS_TIME=$(get_future_time) make start-whole-environment COMPOSE_PROFILES=$(COMPOSE_PROFILES) - make deploy-contracts L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) - -start-all-traces-v2: COMPOSE_PROFILES:="l1,l2" -start-all-traces-v2: L1_CONTRACT_VERSION:=6 -start-all-traces-v2: - L1_GENESIS_TIME=$(get_future_time) make start-whole-environment-traces-v2 COMPOSE_PROFILES=$(COMPOSE_PROFILES) - $(MAKE) deploy-contracts L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) +## +## Creating new targets to avoid conflicts with existing targets +## Redundant targets above will cleanup once this get's merged +## +start-env-with-tracing-v1: + make start-env COMPOSE_FILE=docker/compose-tracing-v1.yml LINEA_PROTOCOL_CONTRACTS_ONLY=true -deploy-contracts: L1_CONTRACT_VERSION:=6 -deploy-contracts: - cd contracts/; \ - export L1_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://localhost:8445) && \ - export L2_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae --rpc-url http://localhost:8545) && \ - cd .. && \ - $(MAKE) -j6 deploy-linea-rollup-v$(L1_CONTRACT_VERSION) deploy-token-bridge-l1 deploy-l1-test-erc20 deploy-l2messageservice deploy-token-bridge-l2 deploy-l2-test-erc20 +start-env-with-tracing-v1-ci: + make start-env COMPOSE_FILE=docker/compose-tracing-v1-ci-extension.yml -deploy-contracts-minimal: L1_CONTRACT_VERSION:=6 -deploy-contracts-minimal: - cd contracts/; \ - export L1_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://localhost:8445) && \ - export L2_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae --rpc-url http://localhost:8545) && \ - cd .. && \ - $(MAKE) -j6 deploy-linea-rollup-v$(L1_CONTRACT_VERSION) deploy-l2messageservice +start-env-with-tracing-v2: + make start-env COMPOSE_FILE=docker/compose-tracing-v2.yml LINEA_PROTOCOL_CONTRACTS_ONLY=true -fresh-start-all-staterecovery: COMPOSE_PROFILES:=l1,l2,staterecovery -fresh-start-all-staterecovery: L1_CONTRACT_VERSION:=6 -fresh-start-all-staterecovery: - make clean-environment - make start-whole-environment-traces-v2 COMPOSE_PROFILES=$(COMPOSE_PROFILES) - $(MAKE) deploy-contracts-minimal L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) +start-env-with-tracing-v2-ci: + make start-env COMPOSE_FILE=docker/compose-tracing-v2-ci-extension.yml -fresh-start-staterecovery-for-replay-only: COMPOSE_PROFILES:=l1,staterecovery -fresh-start-staterecovery-for-replay-only: - make clean-environment - make start-whole-environment-traces-v2 COMPOSE_PROFILES=$(COMPOSE_PROFILES) +start-env-with-staterecovery: COMPOSE_PROFILES:=l1,l2,staterecovery +start-env-with-staterecovery: L1_CONTRACT_VERSION:=6 +start-env-with-staterecovery: + make start-env COMPOSE_FILE=docker/compose-tracing-v2-staterecovery-extension.yml LINEA_PROTOCOL_CONTRACTS_ONLY=true L1_CONTRACT_VERSION=$(L1_CONTRACT_VERSION) staterecovery-replay-from-block: L1_ROLLUP_CONTRACT_ADDRESS:=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 staterecovery-replay-from-block: STATERECOVERY_OVERRIDE_START_BLOCK_NUMBER:=1 staterecovery-replay-from-block: - docker compose -f docker/compose.yml down zkbesu-shomei-sr shomei-sr - L1_ROLLUP_CONTRACT_ADDRESS=$(L1_ROLLUP_CONTRACT_ADDRESS) STATERECOVERY_OVERRIDE_START_BLOCK_NUMBER=$(STATERECOVERY_OVERRIDE_START_BLOCK_NUMBER) docker compose -f docker/compose.yml up zkbesu-shomei-sr shomei-sr -d + docker compose -f docker/compose-tracing-v2-staterecovery-extension.yml down zkbesu-shomei-sr shomei-sr + L1_ROLLUP_CONTRACT_ADDRESS=$(L1_ROLLUP_CONTRACT_ADDRESS) STATERECOVERY_OVERRIDE_START_BLOCK_NUMBER=$(STATERECOVERY_OVERRIDE_START_BLOCK_NUMBER) docker compose -f docker/compose-tracing-v2-staterecovery-extension.yml up zkbesu-shomei-sr shomei-sr -d +## +# Testnet +## testnet-start-l2: - docker compose -f docker/compose.yml -f docker/compose-testnet-sync.overrides.yml --profile l2 up -d + docker compose -f docker/compose-tracing-v2.yml -f docker/compose-testnet-sync.overrides.yml --profile l2 up -d testnet-start-l2-traces-node-only: - docker compose -f docker/compose.yml -f docker/compose-testnet-sync.overries.yml up traces-node -d + docker compose -f docker/compose-tracing-v2.yml -f docker/compose-testnet-sync.overries.yml up traces-node -d testnet-start: start-l1 deploy-linea-rollup-v6 testnet-start-l2 testnet-restart-l2-keep-state: - docker compose -f docker/compose.yml -f docker/compose-testnet-sync.overrides.yml rm -f -s -v sequencer traces-node coordinator + docker compose -f docker/compose-tracing-v2.yml -f docker/compose-testnet-sync.overrides.yml rm -f -s -v sequencer traces-node coordinator make testnet-start-l2 testnet-restart-l2-clean-state: - docker compose -f docker/compose.yml -f docker/compose-testnet-sync.overrides.yml rm -f -s -v sequencer traces-node coordinator + docker compose -f docker/compose-tracing-v2.yml -f docker/compose-testnet-sync.overrides.yml rm -f -s -v sequencer traces-node coordinator docker volume rm testnet-data make clean-testnet-folders make testnet-start-l2 testnet-down: - docker compose -f docker/compose.yml -f docker/compose-testnet-sync.overrides.yml --profile l1 --profile l2 down -v + docker compose -f docker/compose-tracing-v2.yml -f docker/compose-testnet-sync.overrides.yml --profile l1 --profile l2 down -v make clean-testnet-folders stop_pid: @@ -263,34 +121,4 @@ stop_pid: echo "$(PID_FILE) does not exist. No process to stop."; \ fi -restart-l2-minimal-stack-local: - make stop-coordinator - make stop-traces-api - make stop_pid PID_FILE=tmp/local/traces-app.pid - make clean-environment - make start-l2 - make deploy-l2messageservice-to-local - make start-traces-api - make start-coordinator - # TODO: use locally built prover for faster feedback loop - -stop-l2-minimal-stack-local: - make stop-coordinator - make stop-traces-api - make clean-environment - -start-coordinator: - mkdir -p tmp/local/logs - ./gradlew coordinator:app:run \ - -Dconfig.override.testL1Disabled=true \ - -Dconfig.override.traces.counters.endpoints="http://127.0.0.1:8081" \ - -Dconfig.override.traces.conflation.endpoints="http://127.0.0.1:8081" \ - -Dconfig.override.dynamic-gas-price-service.miner-gas-price-update-recipients="http://127.0.0.1:8545/,http://127.0.0.1:8645/" > tmp/local/logs/coordinator.log & echo "$$!" > tmp/local/coordinator.pid - -stop-coordinator: - make stop_pid PID_FILE=tmp/local/coordinator.pid - -restart-coordinator: - make stop-coordinator - make start-coordinator diff --git a/build.gradle b/build.gradle index bdceb482c..9655a32d0 100644 --- a/build.gradle +++ b/build.gradle @@ -96,6 +96,11 @@ allprojects { maxParallelForks = Math.max(Runtime.runtime.availableProcessors(), 9) } + tasks.withType(Test).matching { it.name == 'integrationTest' }.configureEach { + outputs.cacheIf { false } + outputs.upToDateWhen { false } + } + afterEvaluate { subproject -> if (hasJavaOrKotlinPlugins(subproject)) { subproject.apply plugin: 'com.diffplug.spotless' @@ -142,7 +147,6 @@ dockerCompose { "l1-node-genesis-generator", "l1-el-node", "l1-cl-node", - "l2-node", // For debug // "l1-blockscout", // "l2-blockscout" @@ -154,7 +158,7 @@ dockerCompose { "l2" ] useComposeFiles = [ - "${project.rootDir.path}/docker/compose.yml" + "${project.rootDir.path}/docker/compose-tracing-v2.yml" ] waitForHealthyStateTimeout = Duration.ofMinutes(3) waitForTcpPorts = false @@ -170,7 +174,7 @@ dockerCompose { localStackPostgresDbOnly { startedServices = ["postgres"] useComposeFiles = [ - "${project.rootDir.path}/docker/compose.yml" + "${project.rootDir.path}/docker/compose-tracing-v2.yml" ] waitForHealthyStateTimeout = Duration.ofMinutes(3) waitForTcpPorts = true @@ -199,8 +203,7 @@ dockerCompose { "staterecovery" ] useComposeFiles = [ - "${project.rootDir.path}/docker/compose.yml", - "${project.rootDir.path}/docker/compose-local-dev-traces-v2.overrides.yml" + "${project.rootDir.path}/docker/compose-tracing-v2-staterecovery-extension.yml" ] waitForHealthyStateTimeout = Duration.ofMinutes(3) waitForTcpPorts = false diff --git a/docker/compose-geth.overrides.yml b/docker/compose-geth.overrides.yml deleted file mode 100644 index 4b11d7fa3..000000000 --- a/docker/compose-geth.overrides.yml +++ /dev/null @@ -1,70 +0,0 @@ -services: - sequencer: - healthcheck: - test: [ "CMD-SHELL", "sh -c \"[ -f /l2-zkgeth-sequencer/geth/LOCK ]\"" ] - interval: 1s - timeout: 1s - retries: 120 - hostname: sequencer - container_name: sequencer - image: consensys/linea-geth:${ZKGETH_TAG:-0588665} - platform: linux/amd64 - profiles: [ "l2", "l2-bc", "debug" ] - ports: - - "8545:8545" - - "8546:8546" - - "8550:8550" - - "30301:30301" - restart: "no" - environment: - DATA_DIR: "/l2-zkgeth-sequencer/" - BOOTNODE_PORT: '30301' - NETRESTRICT: "11.11.11.0/24" - ZKGETH_COUNT_ONLY: "true" - ZKGETH_DISABLE_TRACES: "true" - ZKGETH_EMPTY_BLOCK_CREATION: "false" - ZKGETH_TRACES_LIMITS_FILE: "/config/limits.toml" - ZKGETH_BLOCK_SIZE_LIMIT: "108592" # 129072(coordinator limit) - 20*1024(safety margin) - ZKGETH_TRACE_OVERFLOW_NBRETRIES: "10" - ZKGETH_ADDR_BLACKLIST: "0x0000000000000000000000000000000000000001:0x0000000000000000000000000000000000000002:0x0000000000000000000000000000000000000003:0x0000000000000000000000000000000000000004:0x0000000000000000000000000000000000000005:0x0000000000000000000000000000000000000006:0x0000000000000000000000000000000000000007:0x0000000000000000000000000000000000000008:0x0000000000000000000000000000000000000009" - MAX_BLOCK_GAS: 10000000 #10M - MAX_BLOCKDATA_BYTES: 35000 #35 KBytes - MAX_TXDATA_BYTES: 30000 #30 KBytes - ETHSTATS_URL: "linea-sequencer:${WS_SECRET:-dummy-secret}@l2-ethstats:3000" - entrypoint: "" - command: [ "sh", "/scripts/sequencer.sh", "1337", "/genesis.json", "0x0", "0x1C9C380", "0xF4240", "0x6d976c9b8ceee705d4fe8699b44e5eb58242f484" ] - volumes: - - ./geth/scripts:/scripts:ro - - ./config/linea-local-dev-genesis-PoA.json:/genesis.json:ro - - ../config/common/traces-limits-v1.toml:/config/limits.toml:ro - # - ./config/jwt-secret.hex:/jwt-secret.hex:ro - - ./geth/geth-l2-boot.key:/boot.key:ro - - ./keystore/L2:/keystore:ro - - local-dev:/data/ - networks: - linea: - ipv4_address: 11.11.11.101 - - l2-node: - environment: - BOOTNODES: "enode://f94118749beb981da38b82ab6be7b00dc0082783d698080fd0ae45a2c3d42f1ce74cbb153ffcfb1379b64235605bfff43f85b112032ddd9685ad2ab88735e1b1@11.11.11.101:30301" - - traces-node: - environment: - BOOTNODES: "enode://f94118749beb981da38b82ab6be7b00dc0082783d698080fd0ae45a2c3d42f1ce74cbb153ffcfb1379b64235605bfff43f85b112032ddd9685ad2ab88735e1b1@11.11.11.101:30301" - - zkbesu-shomei: - entrypoint: - - /bin/bash - - -c - - | - /opt/besu/bin/besu \ - --config-file=/var/lib/besu/zkbesu-config.toml \ - --genesis-file=/var/lib/besu/genesis.json \ - --min-gas-price=0 \ - --revert-reason-enabled \ - --node-private-key-file=/var/lib/besu/key \ - --plugin-shomei-http-host="11.11.11.114" \ - --plugin-shomei-http-port=8888 \ - --bootnodes=enode://f94118749beb981da38b82ab6be7b00dc0082783d698080fd0ae45a2c3d42f1ce74cbb153ffcfb1379b64235605bfff43f85b112032ddd9685ad2ab88735e1b1@11.11.11.101:30301 \ - --data-path=/traces diff --git a/docker/compose-local-dev-traces-v2.overrides.yml b/docker/compose-local-dev-traces-v2.overrides.yml deleted file mode 100644 index 6fe825c26..000000000 --- a/docker/compose-local-dev-traces-v2.overrides.yml +++ /dev/null @@ -1,97 +0,0 @@ -# to use this file run -# docker compose -f compose.yml -f compose-local-dev-traces-v2.overrides.yml --profile l2 --profile l1 up - -services: - sequencer: - image: consensys/linea-besu-package:devnet-811f30b - volumes: - - ../config/common/traces-limits-besu-v2.toml:/var/lib/besu/traces-limits.toml:ro - - l2-node-besu: - image: consensys/linea-besu-package:devnet-811f30b - volumes: - - ../config/common/traces-limits-besu-v2.toml:/var/lib/besu/traces-limits.toml:ro - - traces-node: - entrypoint: ['echo', 'forced exit as replaced by traces-node-v2'] - - traces-api: - command: ['echo', 'forced exit as replaced by traces-node-v2'] - - traces-node-v2: - hostname: traces-node-v2 - container_name: traces-node-v2 - image: consensys/linea-besu-package:devnet-811f30b - profiles: [ "l2", "l2-bc", "debug", "external-to-monorepo" ] - depends_on: - sequencer: - condition: service_healthy - ports: - - "8745:8545" - - "8746:8546" - - "8750:8550" - - "8751:8548" - - "30308:30303" - healthcheck: - test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ] - interval: 1s - timeout: 1s - retries: 120 - restart: "no" - environment: - JAVA_OPTS: -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC - LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml - entrypoint: - - /bin/bash - - -c - - | - /opt/besu/bin/besu \ - --config-file=/var/lib/besu/traces-node-v2.config.toml \ - --genesis-file=/var/lib/besu/genesis.json \ - --bootnodes=enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303 - volumes: - - ./config/traces-node-v2/traces-node-v2-config.toml:/var/lib/besu/traces-node-v2.config.toml:ro - - ./config/traces-node-v2/log4j.xml:/var/lib/besu/log4j.xml:ro - - ./config/linea-local-dev-genesis-PoA-besu.json/:/var/lib/besu/genesis.json:ro - - ../tmp/local/:/data/:rw - networks: - linea: - ipv4_address: 11.11.11.115 - - prover: - command: ['echo', 'forced exit as replaced by prover-v3'] - - prover-v3: # prover compatible with the traces from zkbesu - container_name: prover-v3 - hostname: prover-v3 - image: consensys/linea-prover:${PROVER_TAG:-543aedd} - platform: linux/amd64 - # to avoid spinning up on CI for now - profiles: [ "l2" ] - environment: - GOMAXPROCS: 16 - CONFIG_FILE: "/opt/linea/prover/config.toml" - GOMEMLIMIT: "10GiB" - WORKER_ID: prover-i1 # keep this prover- to mimic prod env prover-aggregation-91 - volumes: - - ../tmp/local/:/data/ - - logs:/logs - - ./config/prover/v3/prover-config.toml:/opt/linea/prover/config.toml:ro - - ../prover/prover-assets:/opt/linea/prover/prover-assets:ro - networks: - linea: - ipv4_address: 11.11.11.109 - - coordinator: - # ./gradlew :coordinator:app:shadowJar - # docker build coordinator --build-context=jar=./coordinator/app/build/libs/ -t local/linea-coordinator:latest - # image: local/linea-coordinator:latest - command: [ 'java', '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005','-Dvertx.configurationFile=/var/lib/coordinator/vertx-options.json', '-Dlog4j2.configurationFile=/var/lib/coordinator/log4j2-dev.xml', '-jar', 'libs/coordinator.jar', '--traces-limits-v2', 'config/traces-limits-v2.toml', '--smart-contract-errors', 'config/smart-contract-errors.toml', '--gas-price-cap-time-of-day-multipliers', 'config/gas-price-cap-time-of-day-multipliers.toml', 'config/coordinator-docker.config.toml', 'config/coordinator-docker-traces-v2-override.config.toml' ] - # command: ['echo', 'forced exit to run coordinator in debug mode in IntelliJ'] - ports: - # Attach the IDE's remote java debugger to localhost:5005 to debug coordinator - - "5005:5005" - volumes: - - ../config/common/traces-limits-v2.toml:/opt/consensys/linea/coordinator/config/traces-limits-v2.toml:ro - - ../config/coordinator/coordinator-docker-traces-v2-override.config.toml:/opt/consensys/linea/coordinator/config/coordinator-docker-traces-v2-override.config.toml:ro - - ../tmp/local/:/data/ diff --git a/docker/compose-local-dev.overrides.yml b/docker/compose-local-dev.overrides.yml deleted file mode 100644 index ad2d748b0..000000000 --- a/docker/compose-local-dev.overrides.yml +++ /dev/null @@ -1,42 +0,0 @@ -# to use this file run -# docker compose -f compose.yml -f compose-local-dev.overrides.yml --profile l2 --profile l1 up - -services: - traces-node: - volumes: - - ../tmp/local/:/data/ - - traces-api: -# image: consensys/linea-traces-api-facade:137ab52 - volumes: - - ../tmp/local/:/data/ - - prover: - # pull_policy: never - # image: consensys/linea-prover:latest - # platform: linux/arm64 - # build: - # context: ../ - # dockerfile: ./prover/Dockerfile - # additional_contexts: - # prover: ../prover/ - # corset: ../corset/ - # constraints: ../constraints/ - volumes: - - ../tmp/local/:/data/ - - coordinator: - # ./gradlew :coordinator:app:shadowJar - # docker build coordinator --build-context=jar=./coordinator/app/build/libs/ -t local/linea-coordinator:latest - # image: local/linea-coordinator:latest - # command: [ 'java', '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005','-Dvertx.configurationFile=/var/lib/coordinator/vertx-options.json', '-Dlog4j2.configurationFile=/var/lib/coordinator/log4j2-dev.xml', '-jar', 'libs/coordinator.jar', '--traces-limits', 'config/traces-limits-v1.toml', '--smart-contract-errors', 'config/smart-contract-errors.toml', '--gas-price-cap-time-of-day-multipliers', 'config/gas-price-cap-time-of-day-multipliers.toml', 'config/coordinator-docker.config.toml' ] - # command: ['echo', 'forced exit to run coordinator in debug mode in IntelliJ'] - ports: - # Attach the IDE's remote java debugger to localhost:5005 to debug coordinator - - "5005:5005" - volumes: - - ../tmp/local/:/data/ - - l2-node-besu: - environment: - JAVA_OPTS: -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC \ No newline at end of file diff --git a/docker/compose-spec-extra-observability.yml b/docker/compose-spec-extra-observability.yml new file mode 100644 index 000000000..50071c23a --- /dev/null +++ b/docker/compose-spec-extra-observability.yml @@ -0,0 +1,127 @@ +services: + ######################## + # Block Explorer stack + ######################## + l1-blockscout: + container_name: l1-blockscout + hostname: l1-blockscout + image: blockscout/blockscout:${BLOCKSCOUT_TAG:-5.0.0} + profiles: [ "debug" ] + depends_on: + postgres: + condition: service_healthy + l1-el-node: + condition: service_started + command: bash -c "bin/blockscout eval \"Elixir.Explorer.ReleaseTasks.create_and_migrate()\" && bin/blockscout start" + env_file: + - ../config/blockscout/l1-blockscout.env + environment: + ETHEREUM_JSONRPC_HTTP_URL: http://l1-el-node:8545/ + ETHEREUM_JSONRPC_TRACE_URL: http://l1-el-node:8545/ + ETHEREUM_JSONRPC_WS_URL: ws://l1-el-node:8546/ + DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/l1_blockscout_db?ssl=false + ECTO_USE_SSL: 'false' + ports: + - "4001:4000" + volumes: + - ./config/l1-node/el/genesis.json:/app/genesis.json:ro + networks: + - l1network + + l2-blockscout: + container_name: l2-blockscout + hostname: l2-blockscout + image: blockscout/blockscout:${BLOCKSCOUT_TAG:-5.0.0} + profiles: [ "debug" ] + depends_on: + postgres: + condition: service_healthy + l2-node: + condition: service_started + # - smart-contract-verifier not supported for v0.1 + command: bash -c "bin/blockscout eval \"Elixir.Explorer.ReleaseTasks.create_and_migrate()\" && bin/blockscout start" + env_file: + - ../config/blockscout/l2-blockscout.env + environment: + ETHEREUM_JSONRPC_HTTP_URL: http://l2-node:8545/ + ETHEREUM_JSONRPC_TRACE_URL: http://l2-node:8545/ + ETHEREUM_JSONRPC_WS_URL: ws://l2-node:8546/ + DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/l2_blockscout_db?ssl=false + ECTO_USE_SSL: 'false' + ports: + - "4000:4000" + volumes: + - ./config/linea-local-dev-genesis-PoA.json:/app/genesis.json:ro + networks: + - linea + + ######################## + # Observability stack + ######################## + l2-ethstats: + container_name: l2-ethstats + image: puppeth/ethstats:latest + profiles: [ "l2-observability", "debug" ] + environment: + WS_SECRET: ${WS_SECRET:-dummy-secret} + ports: + - "3000:3000" + restart: on-failure + networks: + linea: + ipv4_address: 11.11.11.200 + + loki: + container_name: loki + hostname: loki + image: grafana/loki:2.9.7 + profiles: [ "observability" ] + ports: + - "3100:3100" + command: -config.file=/etc/loki/loki-config.yaml + volumes: + - ./config/observability/loki-config.yaml:/etc/loki/loki-config.yaml + networks: + - linea + + promtail: + container_name: promtail + hostname: promtail + image: grafana/promtail:2.9.7 # use same version as loki + profiles: [ "observability" ] + volumes: + - ./config/observability/promtail-config.yaml:/etc/promtail/promtail-config.yaml + - ./../tmp/logs/:/var/log/ + command: -config.file=/etc/promtail/promtail-config.yaml + networks: + - linea + + prometheus: + container_name: prometheus + hostname: prometheus + image: prom/prometheus:v2.26.0 + profiles: [ "observability" ] + ports: + - "9090:9090" + volumes: + - ./config/observability/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml + command: + - '--config.file=/etc/prometheus/prometheus-config.yaml' + networks: + - linea + + grafana: + container_name: grafana + hostname: grafana + image: grafana/grafana:10.2.2 + profiles: [ "observability" ] + ports: + - "3001:3000" + volumes: + - ./config/observability/grafana.ini:/etc/grafana/grafana.ini + - ./config/observability/grafana-datasources:/etc/grafana/provisioning/datasources + depends_on: + - loki + networks: + - linea + diff --git a/docker/compose-spec-l1-services.yml b/docker/compose-spec-l1-services.yml new file mode 100644 index 000000000..113090e03 --- /dev/null +++ b/docker/compose-spec-l1-services.yml @@ -0,0 +1,88 @@ +services: + l1-el-node: + container_name: l1-el-node + hostname: l1-el-node + image: consensys/linea-besu-package:${BESU_PACKAGE_TAG:-mainnet-fc27c01} + profiles: [ "l1", "debug", "external-to-monorepo" ] + depends_on: + l1-node-genesis-generator: + condition: service_completed_successfully + healthcheck: + test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ] + interval: 1s + timeout: 1s + retries: 120 + environment: + LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml + JAVA_OPTS: -Xmx512m -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC + entrypoint: + - /bin/bash + - -c + - | + rm -fr /opt/besu/plugins && \ + /opt/besu/bin/besu --config-file=/config/config.toml + volumes: + - ./config/l1-node/el/besu.key:/config/keys/besu.key:ro + - ./config/l1-node/el/config.toml:/config/config.toml:ro + - ./config/l1-node/jwtsecret.txt:/config/jwtsecret.txt:ro + - ./config/l1-node/el/log4j.xml:/var/lib/besu/log4j.xml:ro + - local-dev:/data + ports: + - "8445:8545" + - "8446:8546" + - "8551:8551/tcp" + - "30303:30303" + - "9001:9001/tcp" + networks: + l1network: + ipv4_address: 10.10.10.201 + + l1-cl-node: + container_name: l1-cl-node + hostname: l1-cl-node + image: consensys/teku:25.1.0 + profiles: [ "l1", "debug", "external-to-monorepo" ] + depends_on: + l1-el-node: + condition: service_started + l1-node-genesis-generator: + condition: service_completed_successfully + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:4000/eth/v1/node/health || exit 1"] + interval: 1s + timeout: 1s + retries: 120 + environment: + LOG4J_CONFIGURATION_FILE: /config/log4j.xml + command: [ "--config-file=/config/config-file.yaml" ] + volumes: + - ./config/l1-node/cl/teku.key:/config/keys/teku.key:ro + - ./config/l1-node/cl/teku-keys:/config/keys/teku-keys:ro + - ./config/l1-node/cl/teku-secrets:/config/keys/teku-secrets:ro + - ./config/l1-node/jwtsecret.txt:/config/jwtsecret.txt:ro + - ./config/l1-node/cl/config.yaml:/config/config-file.yaml:ro + - ./config/l1-node/cl/log4j.xml:/config/log4j.xml:ro + - local-dev:/data + ports: + - "9002:9000" + - "8008:8008/tcp" + - "4003:4000/tcp" + networks: + l1network: + ipv4_address: 10.10.10.202 + + l1-node-genesis-generator: + build: + context: ./config/l1-node/ + profiles: [ "l1", "debug", "external-to-monorepo" ] + command: + --genesis-time ${L1_GENESIS_TIME} + --l1-genesis /config/l1-genesis.json + --network-config /config/network-config.yml + --mnemonics /config/mnemonics.yaml + --output-dir /data/l1-node-config + volumes: + - ./config/l1-node/cl/network-config.yml:/config/network-config.yml:ro + - ./config/l1-node/cl/mnemonics.yaml:/config/mnemonics.yaml:ro + - ./config/l1-node/el/genesis.json:/config/l1-genesis.json + - local-dev:/data diff --git a/docker/compose.yml b/docker/compose-spec-l2-services.yml similarity index 75% rename from docker/compose.yml rename to docker/compose-spec-l2-services.yml index 1875266c1..a7ddb0235 100644 --- a/docker/compose.yml +++ b/docker/compose-spec-l2-services.yml @@ -1,21 +1,3 @@ -volumes: - local-dev: - name: "linea-local-dev" - logs: - name: "linea-logs" - -networks: - linea: - driver: bridge - ipam: - config: - - subnet: 11.11.11.0/24 - l1network: - driver: bridge - ipam: - config: - - subnet: 10.10.10.0/24 - # To debug inside the network and volumes: # docker run --rm -it --network=docker_linea -v=linea-local-dev:/data -v=linea-logs:/logs weibeld/ubuntu-networking bash @@ -119,7 +101,6 @@ services: restart: "no" environment: LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml - JAVA_OPTS: -Xmx1536m -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC entrypoint: - /bin/bash - -c @@ -173,12 +154,51 @@ services: volumes: - ./geth/scripts:/scripts:ro - ./config/linea-local-dev-genesis-PoA.json:/genesis.json:ro - - local-dev:/data/ - # - ../tmp/:/data/ + - ../tmp/local/:/data/ networks: linea: ipv4_address: 11.11.11.102 + traces-node-v2: + hostname: traces-node-v2 + container_name: traces-node-v2 + image: consensys/linea-besu-package:devnet-811f30b + profiles: [ "l2", "l2-bc", "debug", "external-to-monorepo" ] + depends_on: + sequencer: + condition: service_healthy + ports: + - "8745:8545" + - "8746:8546" + - "8750:8550" + - "8751:8548" + - "30308:30303" + healthcheck: + test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ] + interval: 1s + timeout: 1s + retries: 120 + restart: "no" + environment: + JAVA_OPTS: -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC + LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml + entrypoint: + - /bin/bash + - -c + - | + /opt/besu/bin/besu \ + --config-file=/var/lib/besu/traces-node-v2.config.toml \ + --genesis-file=/var/lib/besu/genesis.json \ + --bootnodes=enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303 + volumes: + - ./config/traces-node-v2/traces-node-v2-config.toml:/var/lib/besu/traces-node-v2.config.toml:ro + - ./config/traces-node-v2/log4j.xml:/var/lib/besu/log4j.xml:ro + - ./config/linea-local-dev-genesis-PoA-besu.json/:/var/lib/besu/genesis.json:ro + - ../tmp/local/:/data/:rw + networks: + linea: + ipv4_address: 11.11.11.115 + prover: container_name: prover hostname: prover @@ -192,8 +212,8 @@ services: GOMEMLIMIT: "10GiB" WORKER_ID: prover-i1 # keep this prover- to mimic prod env prover-aggregation-91 volumes: - - local-dev:/data - logs:/logs + - ../tmp/local/:/data/ - ./config/prover/v2/prover-controller.config.toml:/opt/linea/prover/config/controller/controller.config.toml - ./config/prover/v2/prover-execution.config.toml:/opt/linea/prover/config/executor/execution.config.toml - ./config/prover/v2/prover-decompression.config.toml:/opt/linea/prover/config/executor/decompression.config.toml @@ -203,6 +223,27 @@ services: linea: ipv4_address: 11.11.11.108 + prover-v3: # prover compatible with the traces from zkbesu + container_name: prover-v3 + hostname: prover-v3 + image: consensys/linea-prover:${PROVER_TAG:-543aedd} + platform: linux/amd64 + # to avoid spinning up on CI for now + profiles: [ "l2" ] + environment: + GOMAXPROCS: 16 + CONFIG_FILE: "/opt/linea/prover/config.toml" + GOMEMLIMIT: "10GiB" + WORKER_ID: prover-i1 # keep this prover- to mimic prod env prover-aggregation-91 + volumes: + - ../tmp/local/:/data/ + - logs:/logs + - ./config/prover/v3/prover-config.toml:/opt/linea/prover/config.toml:ro + - ../prover/prover-assets:/opt/linea/prover/prover-assets:ro + networks: + linea: + ipv4_address: 11.11.11.109 + postman: container_name: postman hostname: postman @@ -238,36 +279,15 @@ services: - ../config/traces-api/traces-app-docker.config.toml:/opt/consensys/linea/traces-api-facade/config/traces-app-docker.config.toml:ro - ../config/traces-api/vertx-options.json:/opt/consensys/linea/traces-api-facade/config/vertx-options.json:ro - ../config/traces-api/log4j2-dev.xml:/opt/consensys/linea/traces-api-facade/config/log4j2-dev.xml:ro - - local-dev:/data/ + - ../tmp/local/:/data/ networks: linea: ipv4_address: 11.11.11.105 - transaction-exclusion-api: - hostname: transaction-exclusion-api - container_name: transaction-exclusion-api - image: consensys/linea-transaction-exclusion-api:${TRANSACTION_EXCLUSION_API_TAG:-1f8647e} - profiles: [ "l2", "debug" ] - restart: on-failure - depends_on: - postgres: - condition: service_healthy - ports: - - "8082:8080" - command: [ 'java', '-Dvertx.configurationFile=config/vertx-options.json', '-Dlog4j2.configurationFile=config/log4j2-dev.xml', '-jar', 'libs/transaction-exclusion-api.jar', 'config/transaction-exclusion-app-docker.config.toml', ] - volumes: - - ../config/transaction-exclusion-api/transaction-exclusion-app-docker.config.toml:/opt/consensys/linea/transaction-exclusion-api/config/transaction-exclusion-app-docker.config.toml:ro - - ../config/transaction-exclusion-api/vertx-options.json:/opt/consensys/linea/transaction-exclusion-api/config/vertx-options.json:ro - - ../config/transaction-exclusion-api/log4j2-dev.xml:/opt/consensys/linea/transaction-exclusion-api/config/log4j2-dev.xml:ro - - local-dev:/data/ - networks: - linea: - ipv4_address: 11.11.11.110 - coordinator: hostname: coordinator container_name: coordinator - image: consensys/linea-coordinator:${COORDINATOR_TAG:-1f8647e} + image: consensys/linea-coordinator:${COORDINATOR_TAG:-c08e279} platform: linux/amd64 profiles: [ "l2", "debug" ] depends_on: @@ -279,8 +299,8 @@ services: condition: service_started shomei: condition: service_started - shomei-frontend: - condition: service_started +# shomei-frontend: +# condition: service_started ports: - "9545:9545" restart: on-failure @@ -293,8 +313,7 @@ services: - ../config/common/gas-price-cap-time-of-day-multipliers.toml:/opt/consensys/linea/coordinator/config/gas-price-cap-time-of-day-multipliers.toml:ro - ../config/coordinator/vertx-options.json:/var/lib/coordinator/vertx-options.json:ro - ../config/coordinator/log4j2-dev.xml:/var/lib/coordinator/log4j2-dev.xml:ro - - ../testdata/type2state-manager/state-proof.json:/opt/consensys/linea/coordinator/testdata/type2state-manager/state-proof.json - - local-dev:/data/ + - ../tmp/local/:/data/ networks: l1network: ipv4_address: 10.10.10.106 @@ -317,19 +336,6 @@ services: networks: - linea - l2-ethstats: - container_name: l2-ethstats - image: puppeth/ethstats:latest - profiles: [ "l2-observability", "debug" ] - environment: - WS_SECRET: ${WS_SECRET:-dummy-secret} - ports: - - "3000:3000" - restart: on-failure - networks: - linea: - ipv4_address: 11.11.11.200 - postgres: image: postgres:16.0 hostname: postgres @@ -360,120 +366,6 @@ services: - linea - l1network - l1-el-node: - container_name: l1-el-node - hostname: l1-el-node - image: consensys/linea-besu-package:${BESU_PACKAGE_TAG:-mainnet-fc27c01} - profiles: [ "l1", "debug", "external-to-monorepo" ] - depends_on: - l1-node-genesis-generator: - condition: service_completed_successfully - healthcheck: - test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ] - interval: 1s - timeout: 1s - retries: 120 - environment: - LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml - JAVA_OPTS: -Xmx512m -XX:+UnlockExperimentalVMOptions -XX:-UseG1GC -XX:+UseZGC - entrypoint: - - /bin/bash - - -c - - | - rm -fr /opt/besu/plugins && \ - /opt/besu/bin/besu --config-file=/config/config.toml - volumes: - - ./config/l1-node/el/besu.key:/config/keys/besu.key:ro - - ./config/l1-node/el/config.toml:/config/config.toml:ro - - ./config/l1-node/jwtsecret.txt:/config/jwtsecret.txt:ro - - ./config/l1-node/el/log4j.xml:/var/lib/besu/log4j.xml:ro - - local-dev:/data - ports: - - "8445:8545" - - "8446:8546" - - "8551:8551/tcp" - - "30303:30303" - - "9001:9001/tcp" - networks: - l1network: - ipv4_address: 10.10.10.201 - - l1-cl-node: - container_name: l1-cl-node - hostname: l1-cl-node - image: consensys/teku:25.1.0 - profiles: [ "l1", "debug", "external-to-monorepo" ] - depends_on: - l1-el-node: - condition: service_started - l1-node-genesis-generator: - condition: service_completed_successfully - healthcheck: - test: ["CMD-SHELL", "curl -f http://localhost:4000/eth/v1/node/health || exit 1"] - interval: 1s - timeout: 1s - retries: 120 - environment: - LOG4J_CONFIGURATION_FILE: /config/log4j.xml - command: [ "--config-file=/config/config-file.yaml" ] - volumes: - - ./config/l1-node/cl/teku.key:/config/keys/teku.key:ro - - ./config/l1-node/cl/teku-keys:/config/keys/teku-keys:ro - - ./config/l1-node/cl/teku-secrets:/config/keys/teku-secrets:ro - - ./config/l1-node/jwtsecret.txt:/config/jwtsecret.txt:ro - - ./config/l1-node/cl/config.yaml:/config/config-file.yaml:ro - - ./config/l1-node/cl/log4j.xml:/config/log4j.xml:ro - - local-dev:/data - ports: - - "9002:9000" - - "8008:8008/tcp" - - "4003:4000/tcp" - networks: - l1network: - ipv4_address: 10.10.10.202 - - l1-node-genesis-generator: - build: - context: ./config/l1-node/ - profiles: [ "l1", "debug", "external-to-monorepo" ] - command: - --genesis-time ${L1_GENESIS_TIME} - --l1-genesis /config/l1-genesis.json - --network-config /config/network-config.yml - --mnemonics /config/mnemonics.yaml - --output-dir /data/l1-node-config - volumes: - - ./config/l1-node/cl/network-config.yml:/config/network-config.yml:ro - - ./config/l1-node/cl/mnemonics.yaml:/config/mnemonics.yaml:ro - - ./config/l1-node/el/genesis.json:/config/l1-genesis.json - - local-dev:/data - - l1-blockscout: - container_name: l1-blockscout - hostname: l1-blockscout - image: blockscout/blockscout:${BLOCKSCOUT_TAG:-5.0.0} - profiles: [ "debug" ] - depends_on: - postgres: - condition: service_healthy - l1-el-node: - condition: service_started - command: bash -c "bin/blockscout eval \"Elixir.Explorer.ReleaseTasks.create_and_migrate()\" && bin/blockscout start" - env_file: - - ../config/blockscout/l1-blockscout.env - environment: - ETHEREUM_JSONRPC_HTTP_URL: http://l1-el-node:8545/ - ETHEREUM_JSONRPC_TRACE_URL: http://l1-el-node:8545/ - ETHEREUM_JSONRPC_WS_URL: ws://l1-el-node:8546/ - DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/l1_blockscout_db?ssl=false - ECTO_USE_SSL: 'false' - ports: - - "4001:4000" - volumes: - - ./config/l1-node/el/genesis.json:/app/genesis.json:ro - networks: - - l1network - zkbesu-shomei: image: consensys/linea-besu-package:${BESU_PACKAGE_TAG:-devnet-fc27c01} hostname: zkbesu-shomei @@ -550,7 +442,6 @@ services: - --trace-start-block-number=0 - --data-path=/data/shomei volumes: - - local-dev:/data/ - ./config/shomei/log4j.xml:/log4j.xml:ro # - ../tmp/local/shomei:/data/shomei/:z @@ -594,35 +485,28 @@ services: - --use-finalized-block-hash=0x0ca7c811d834d51a08e390bef9ae24db8623338bad13176d420b2f03bc282b90 #some unlikely hash volumes: - - local-dev:/data/ - ./config/shomei/log4j.xml:/log4j.xml:ro - l2-blockscout: - container_name: l2-blockscout - hostname: l2-blockscout - image: blockscout/blockscout:${BLOCKSCOUT_TAG:-5.0.0} - profiles: [ "debug" ] + transaction-exclusion-api: + hostname: transaction-exclusion-api + container_name: transaction-exclusion-api + image: consensys/linea-transaction-exclusion-api:${TRANSACTION_EXCLUSION_API_TAG:-1f8647e} + profiles: [ "l2", "debug" ] + restart: on-failure depends_on: postgres: condition: service_healthy - l2-node: - condition: service_started - # - smart-contract-verifier not supported for v0.1 - command: bash -c "bin/blockscout eval \"Elixir.Explorer.ReleaseTasks.create_and_migrate()\" && bin/blockscout start" - env_file: - - ../config/blockscout/l2-blockscout.env - environment: - ETHEREUM_JSONRPC_HTTP_URL: http://l2-node:8545/ - ETHEREUM_JSONRPC_TRACE_URL: http://l2-node:8545/ - ETHEREUM_JSONRPC_WS_URL: ws://l2-node:8546/ - DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/l2_blockscout_db?ssl=false - ECTO_USE_SSL: 'false' ports: - - "4000:4000" + - "8082:8080" + command: [ 'java', '-Dvertx.configurationFile=config/vertx-options.json', '-Dlog4j2.configurationFile=config/log4j2-dev.xml', '-jar', 'libs/transaction-exclusion-api.jar', 'config/transaction-exclusion-app-docker.config.toml', ] volumes: - - ./config/linea-local-dev-genesis-PoA.json:/app/genesis.json:ro + - ../config/transaction-exclusion-api/transaction-exclusion-app-docker.config.toml:/opt/consensys/linea/transaction-exclusion-api/config/transaction-exclusion-app-docker.config.toml:ro + - ../config/transaction-exclusion-api/vertx-options.json:/opt/consensys/linea/transaction-exclusion-api/config/vertx-options.json:ro + - ../config/transaction-exclusion-api/log4j2-dev.xml:/opt/consensys/linea/transaction-exclusion-api/config/log4j2-dev.xml:ro networks: - - linea + linea: + ipv4_address: 11.11.11.110 + ######################## # Blob Scan stack, used for state recover app ######################## @@ -636,13 +520,13 @@ services: - "4001:4001" env_file: "./config/blobscan/env" restart: no -# healthcheck: -# test: [ "CMD", "curl", "-f", "http://localhost:4001/healthcheck" ] -# disable: true -# interval: 30s -# timeout: 10s -# retries: 20 -# start_period: 5s + # healthcheck: + # test: [ "CMD", "curl", "-f", "http://localhost:4001/healthcheck" ] + # disable: true + # interval: 30s + # timeout: 10s + # retries: 20 + # start_period: 5s networks: linea: l1network: @@ -786,62 +670,3 @@ services: - --trace-start-block-number=0 volumes: - ./config/shomei/log4j.xml:/log4j.xml:ro - # - ../tmp/local/shomei:/data/shomei/:z - - ######################## - # Observability stack - ######################## - loki: - container_name: loki - hostname: loki - image: grafana/loki:2.9.7 - profiles: [ "observability" ] - ports: - - "3100:3100" - command: -config.file=/etc/loki/loki-config.yaml - volumes: - - ./config/observability/loki-config.yaml:/etc/loki/loki-config.yaml - networks: - - linea - - promtail: - container_name: promtail - hostname: promtail - image: grafana/promtail:2.9.7 # use same version as loki - profiles: [ "observability" ] - volumes: - - ./config/observability/promtail-config.yaml:/etc/promtail/promtail-config.yaml - - ./../tmp/logs/:/var/log/ - command: -config.file=/etc/promtail/promtail-config.yaml - networks: - - linea - - prometheus: - container_name: prometheus - hostname: prometheus - image: prom/prometheus:v2.26.0 - profiles: [ "observability" ] - ports: - - "9090:9090" - volumes: - - ./config/observability/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml - command: - - '--config.file=/etc/prometheus/prometheus-config.yaml' - networks: - - linea - - grafana: - container_name: grafana - hostname: grafana - image: grafana/grafana:10.2.2 - profiles: [ "observability" ] - ports: - - "3001:3000" - volumes: - - ./config/observability/grafana.ini:/etc/grafana/grafana.ini - - ./config/observability/grafana-datasources:/etc/grafana/provisioning/datasources - depends_on: - - loki - networks: - - linea - diff --git a/docker/compose-testnet-sync.overrides.yml b/docker/compose-testnet-sync.overrides.yml index bb66e3008..aff47b0af 100644 --- a/docker/compose-testnet-sync.overrides.yml +++ b/docker/compose-testnet-sync.overrides.yml @@ -1,5 +1,5 @@ # to use this file run -# docker compose -f compose.yml -f compose-local-dev.overrides.yml --profile l2 --profile l1 up +# docker compose -f compose-tracing-v2.yml -f compose-local-dev.overrides.yml --profile l2 --profile l1 up volumes: testnet-data: name: "testnet-data" diff --git a/docker/compose-tracing-v1-ci-extension.yml b/docker/compose-tracing-v1-ci-extension.yml new file mode 100644 index 000000000..7d6ad2a69 --- /dev/null +++ b/docker/compose-tracing-v1-ci-extension.yml @@ -0,0 +1,31 @@ +include: + - compose-tracing-v1.yml + +services: + l2-node: + extends: + file: compose-spec-l2-services.yml + service: l2-node + + l2-node-besu: + extends: + file: compose-spec-l2-services.yml + service: l2-node-besu + image: consensys/linea-besu-package:${BESU_PACKAGE_TAG:-mainnet-fc27c01} + volumes: + - ../config/common/traces-limits-besu-v1.toml:/var/lib/besu/traces-limits.toml:ro + + shomei-frontend: + extends: + file: compose-spec-l2-services.yml + service: shomei-frontend + + postman: + extends: + file: compose-spec-l2-services.yml + service: postman + + transaction-exclusion-api: + extends: + file: compose-spec-l2-services.yml + service: transaction-exclusion-api diff --git a/docker/compose-tracing-v1.yml b/docker/compose-tracing-v1.yml new file mode 100644 index 000000000..a9d2c50eb --- /dev/null +++ b/docker/compose-tracing-v1.yml @@ -0,0 +1,90 @@ +volumes: + local-dev: + name: "linea-local-dev" + logs: + name: "linea-logs" + +networks: + linea: + driver: bridge + ipam: + config: + - subnet: 11.11.11.0/24 + l1network: + driver: bridge + ipam: + config: + - subnet: 10.10.10.0/24 + +# To debug inside the network and volumes +# docker run --rm -it --network=docker_linea -v=linea-local-dev:/data -v=linea-logs:/logs weibeld/ubuntu-networking bash + +services: + l1-el-node: + extends: + file: compose-spec-l1-services.yml + service: l1-el-node + + l1-cl-node: + extends: + file: compose-spec-l1-services.yml + service: l1-cl-node + + l1-node-genesis-generator: + extends: + file: compose-spec-l1-services.yml + service: l1-node-genesis-generator + + sequencer: + extends: + file: compose-spec-l2-services.yml + service: sequencer + image: consensys/linea-besu-package:${BESU_PACKAGE_TAG:-mainnet-fc27c01} + volumes: + - ../config/common/traces-limits-besu-v1.toml:/var/lib/besu/traces-limits.toml:ro + + traces-node: + extends: + file: compose-spec-l2-services.yml + service: traces-node + + traces-api: + extends: + file: compose-spec-l2-services.yml + service: traces-api + + prover: + extends: + file: compose-spec-l2-services.yml + service: prover + + coordinator: + extends: + file: compose-spec-l2-services.yml + service: coordinator + environment: + config__override__l2-network-gas-pricing__json-rpc-pricing-propagation__disabled: true + config__override__type2-state-proof-provider__endpoints: # leave empty to disable + command: [ 'java', '-Dvertx.configurationFile=/var/lib/coordinator/vertx-options.json', '-Dlog4j2.configurationFile=/var/lib/coordinator/log4j2-dev.xml', '-jar', 'libs/coordinator.jar', '--traces-limits', 'config/traces-limits-v1.toml', '--smart-contract-errors', 'config/smart-contract-errors.toml', '--gas-price-cap-time-of-day-multipliers', 'config/gas-price-cap-time-of-day-multipliers.toml', 'config/coordinator-docker.config.toml', 'config/coordinator-docker-web3signer-override.config.toml' ] + volumes: + - ../config/common/traces-limits-v1.toml:/opt/consensys/linea/coordinator/config/traces-limits-v1.toml:ro + + web3signer: + extends: + file: compose-spec-l2-services.yml + service: web3signer + + postgres: + extends: + file: compose-spec-l2-services.yml + service: postgres + + zkbesu-shomei: + extends: + file: compose-spec-l2-services.yml + service: zkbesu-shomei + + shomei: + extends: + file: compose-spec-l2-services.yml + service: shomei diff --git a/docker/compose-tracing-v2-ci-extension.yml b/docker/compose-tracing-v2-ci-extension.yml new file mode 100644 index 000000000..186cf1178 --- /dev/null +++ b/docker/compose-tracing-v2-ci-extension.yml @@ -0,0 +1,32 @@ +include: + - compose-tracing-v2.yml + +services: + l2-node: + extends: + file: compose-spec-l2-services.yml + service: l2-node + + l2-node-besu: + extends: + file: compose-spec-l2-services.yml + service: l2-node-besu + image: consensys/linea-besu-package:devnet-811f30b + volumes: + - ../config/common/traces-limits-besu-v2.toml:/var/lib/besu/traces-limits.toml:ro + + shomei-frontend: + extends: + file: compose-spec-l2-services.yml + service: shomei-frontend + + postman: + extends: + file: compose-spec-l2-services.yml + service: postman + + transaction-exclusion-api: + extends: + file: compose-spec-l2-services.yml + service: transaction-exclusion-api + diff --git a/docker/compose-tracing-v2-staterecovery-extension.yml b/docker/compose-tracing-v2-staterecovery-extension.yml new file mode 100644 index 000000000..a56c48551 --- /dev/null +++ b/docker/compose-tracing-v2-staterecovery-extension.yml @@ -0,0 +1,28 @@ +include: + - compose-tracing-v2.yml + +services: + blobscan-api: + extends: + file: compose-spec-l2-services.yml + service: blobscan-api + + blobscan-indexer: + extends: + file: compose-spec-l2-services.yml + service: blobscan-indexer + + redis: + extends: + file: compose-spec-l2-services.yml + service: redis + + zkbesu-shomei-sr: + extends: + file: compose-spec-l2-services.yml + service: zkbesu-shomei-sr + + shomei-sr: + extends: + file: compose-spec-l2-services.yml + service: shomei-sr diff --git a/docker/compose-tracing-v2.yml b/docker/compose-tracing-v2.yml new file mode 100644 index 000000000..ef1284a04 --- /dev/null +++ b/docker/compose-tracing-v2.yml @@ -0,0 +1,93 @@ + +volumes: + local-dev: + name: "linea-local-dev" + logs: + name: "linea-logs" + +networks: + linea: + driver: bridge + ipam: + config: + - subnet: 11.11.11.0/24 + l1network: + driver: bridge + ipam: + config: + - subnet: 10.10.10.0/24 + +# To debug inside the network and volumes +# docker run --rm -it --network=docker_linea -v=linea-local-dev:/data -v=linea-logs:/logs weibeld/ubuntu-networking bash + +services: + l1-el-node: + extends: + file: compose-spec-l1-services.yml + service: l1-el-node + + l1-cl-node: + extends: + file: compose-spec-l1-services.yml + service: l1-cl-node + + l1-node-genesis-generator: + extends: + file: compose-spec-l1-services.yml + service: l1-node-genesis-generator + + sequencer: + extends: + file: compose-spec-l2-services.yml + service: sequencer + image: consensys/linea-besu-package:devnet-811f30b + volumes: + - ../config/common/traces-limits-besu-v2.toml:/var/lib/besu/traces-limits.toml:ro + + traces-node-v2: + extends: + file: compose-spec-l2-services.yml + service: traces-node-v2 + + prover-v3: + extends: + file: compose-spec-l2-services.yml + service: prover-v3 + volumes: + - ../tmp/local/:/data/ + - logs:/logs + - ./config/prover/v3/prover-config.toml:/opt/linea/prover/config.toml:ro + - ../prover/prover-assets:/opt/linea/prover/prover-assets:ro + + coordinator: + extends: + file: compose-spec-l2-services.yml + service: coordinator + environment: + config__override__l2-network-gas-pricing__json-rpc-pricing-propagation__disabled: true + config__override__type2-state-proof-provider__endpoints: # leave empty to disable + command: [ 'java', '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005','-Dvertx.configurationFile=/var/lib/coordinator/vertx-options.json', '-Dlog4j2.configurationFile=/var/lib/coordinator/log4j2-dev.xml', '-jar', 'libs/coordinator.jar', '--traces-limits-v2', 'config/traces-limits-v2.toml', '--smart-contract-errors', 'config/smart-contract-errors.toml', '--gas-price-cap-time-of-day-multipliers', 'config/gas-price-cap-time-of-day-multipliers.toml', 'config/coordinator-docker.config.toml', 'config/coordinator-docker-traces-v2-override.config.toml' ] + volumes: + - ../config/common/traces-limits-v2.toml:/opt/consensys/linea/coordinator/config/traces-limits-v2.toml:ro + - ../config/coordinator/coordinator-docker-traces-v2-override.config.toml:/opt/consensys/linea/coordinator/config/coordinator-docker-traces-v2-override.config.toml:ro + - ../tmp/local/:/data/ + + web3signer: + extends: + file: compose-spec-l2-services.yml + service: web3signer + + postgres: + extends: + file: compose-spec-l2-services.yml + service: postgres + + zkbesu-shomei: + extends: + file: compose-spec-l2-services.yml + service: zkbesu-shomei + + shomei: + extends: + file: compose-spec-l2-services.yml + service: shomei diff --git a/makefile-contracts.mk b/makefile-contracts.mk new file mode 100644 index 000000000..c92192da7 --- /dev/null +++ b/makefile-contracts.mk @@ -0,0 +1,124 @@ +pnpm-install: + pnpm install + +clean-smc-folders: + rm -f contracts/.openzeppelin/unknown-31648428.json + rm -f contracts/.openzeppelin/unknown-1337.json + +compile-contracts: + cd contracts; \ + make compile + +compile-contracts-no-cache: + cd contracts/; \ + make force-compile + +deploy-linea-rollup: L1_CONTRACT_VERSION:=6 +deploy-linea-rollup: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + PRIVATE_KEY=$${DEPLOYMENT_PRIVATE_KEY:-0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80} \ + RPC_URL=http:\\localhost:8445/ \ + VERIFIER_CONTRACT_NAME=IntegrationTestTrueVerifier \ + LINEA_ROLLUP_INITIAL_STATE_ROOT_HASH=0x072ead6777750dc20232d1cee8dc9a395c2d350df4bbaa5096c6f59b214dcecd \ + LINEA_ROLLUP_INITIAL_L2_BLOCK_NUMBER=0 \ + LINEA_ROLLUP_SECURITY_COUNCIL=0x90F79bf6EB2c4f870365E785982E1f101E93b906 \ + LINEA_ROLLUP_OPERATORS=$${LINEA_ROLLUP_OPERATORS:-0x70997970C51812dc3A010C7d01b50e0d17dc79C8,0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC} \ + LINEA_ROLLUP_RATE_LIMIT_PERIOD=86400 \ + LINEA_ROLLUP_RATE_LIMIT_AMOUNT=1000000000000000000000 \ + LINEA_ROLLUP_GENESIS_TIMESTAMP=1683325137 \ + npx ts-node local-deployments-artifacts/deployPlonkVerifierAndLineaRollupV$(L1_CONTRACT_VERSION).ts + +deploy-linea-rollup-v6: + $(MAKE) deploy-linea-rollup L1_CONTRACT_VERSION=6 + +deploy-l2messageservice: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + MESSAGE_SERVICE_CONTRACT_NAME=L2MessageService \ + PRIVATE_KEY=$${DEPLOYMENT_PRIVATE_KEY:-0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae} \ + RPC_URL=http:\\localhost:8545/ \ + L2MSGSERVICE_SECURITY_COUNCIL=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 \ + L2MSGSERVICE_L1L2_MESSAGE_SETTER=$${L2MSGSERVICE_L1L2_MESSAGE_SETTER:-0xd42e308fc964b71e18126df469c21b0d7bcb86cc} \ + L2MSGSERVICE_RATE_LIMIT_PERIOD=86400 \ + L2MSGSERVICE_RATE_LIMIT_AMOUNT=1000000000000000000000 \ + npx ts-node local-deployments-artifacts/deployL2MessageService.ts + +deploy-token-bridge-l1: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ + RPC_URL=http:\\localhost:8445/ \ + REMOTE_CHAIN_ID=1337 \ + TOKEN_BRIDGE_L1=true \ + L1_TOKEN_BRIDGE_SECURITY_COUNCIL=0x90F79bf6EB2c4f870365E785982E1f101E93b906 \ + L2MESSAGESERVICE_ADDRESS=0xe537D669CA013d86EBeF1D64e40fC74CADC91987 \ + LINEA_ROLLUP_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 \ + npx ts-node local-deployments-artifacts/deployBridgedTokenAndTokenBridge.ts + +deploy-token-bridge-l2: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + SAVE_ADDRESS=true \ + PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ + RPC_URL=http:\\localhost:8545/ \ + REMOTE_CHAIN_ID=31648428 \ + TOKEN_BRIDGE_L1=false \ + L2_TOKEN_BRIDGE_SECURITY_COUNCIL=0xf17f52151EbEF6C7334FAD080c5704D77216b732 \ + L2MESSAGESERVICE_ADDRESS=0xe537D669CA013d86EBeF1D64e40fC74CADC91987 \ + LINEA_ROLLUP_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 \ + npx ts-node local-deployments-artifacts/deployBridgedTokenAndTokenBridge.ts + +deploy-l1-test-erc20: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ + RPC_URL=http:\\localhost:8445/ \ + TEST_ERC20_L1=true \ + TEST_ERC20_NAME=TestERC20 \ + TEST_ERC20_SYMBOL=TERC20 \ + TEST_ERC20_INITIAL_SUPPLY=100000 \ + npx ts-node local-deployments-artifacts/deployTestERC20.ts + +deploy-l2-test-erc20: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ + RPC_URL=http:\\localhost:8545/ \ + TEST_ERC20_L1=false \ + TEST_ERC20_NAME=TestERC20 \ + TEST_ERC20_SYMBOL=TERC20 \ + TEST_ERC20_INITIAL_SUPPLY=100000 \ + npx ts-node local-deployments-artifacts/deployTestERC20.ts + +deploy-contracts: L1_CONTRACT_VERSION:=6 +deploy-contracts: LINEA_PROTOCOL_CONTRACTS_ONLY:=false +deploy-contracts: + cd contracts/; \ + export L1_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://localhost:8445) && \ + export L2_NONCE=$$(npx ts-node local-deployments-artifacts/get-wallet-nonce.ts --wallet-priv-key 0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae --rpc-url http://localhost:8545) && \ + cd .. && \ + if [ "$(LINEA_PROTOCOL_CONTRACTS_ONLY)" = "false" ]; then \ + $(MAKE) -j6 deploy-linea-rollup-v$(L1_CONTRACT_VERSION) deploy-token-bridge-l1 deploy-l1-test-erc20 deploy-l2messageservice deploy-token-bridge-l2 deploy-l2-test-erc20; \ + else \ + $(MAKE) -j6 deploy-linea-rollup-v$(L1_CONTRACT_VERSION) deploy-l2messageservice; \ + fi + + +deploy-l2-evm-opcode-tester: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ + RPC_URL=http:\\localhost:8545/ \ + npx ts-node local-deployments-artifacts/deployLondonEvmTestingFramework.ts + +evm-opcode-tester-execute-all-opcodes: OPCODE_TEST_CONTRACT_ADDRESS:=0x997FC3aF1F193Cbdc013060076c67A13e218980e +evm-opcode-tester-execute-all-opcodes: + # WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE + cd contracts/; \ + OPCODE_TEST_CONTRACT_ADDRESS=$(OPCODE_TEST_CONTRACT_ADDRESS) \ + NUMBER_OF_RUNS=3 \ + PRIVATE_KEY=0x1dd171cec7e2995408b5513004e8207fe88d6820aeff0d82463b3e41df251aae \ + RPC_URL=http:\\localhost:8545/ \ + npx ts-node local-deployments-artifacts/executeAllOpcodes.ts +