mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 04:08:01 -05:00
* feat: first commit for transaction exclusion api service * feat: removed debug logs and improved params error handling * fix: jacocoRootReport error * feat: improved json request param parsings * feat: added docker container and github workflow pipeline for transaction exclusion api * feat: added rejection stage in response and use txHash and rejectReason as primary key of tables * feat: separate database into read and write config and each with dedicated connection * fix: e2e testing error * feat: removed redundant commands in Makefile * feat: updated transaction exclusion api default image tag in compose file * feat: added metric and change param name from reasonMessage to reason * feat: added integration and unit tests and use reasonMessage for both request and response * fix: transaction-exclusion-api unit test * feat: added e2e tests and remove reasonMessage from get response and redundant codes * feat: updated README.md and removed abi file * feat: updated image version of transaction exclusion api service in compose file * feat: updated README and added more test cases * feat: updated transaction exclusion api default image tag in compose file * feat: decoupled transaction exclusion api from coordinator package * feat: removed unnecessary dependencies to prover client * feat: moved persistence:db package to jvm-libs * feat: removed migration file dir location config from transaction exclusion api * fix: db migration location for fee history integration test * changed db column name timestamp to reject_timestamp and add dto for ModuleOverflow to remove all jackson dependencies in core module * feat: rejected transaction dao and config refactoring * feat: removed repository service and using persistence retryer * feat: updated transaction exclusion api default image tag in compose file * feat: updated log and increase retry backoff delay to avoid repetitive error logs * feat: added support of list request on save method and added dto for RejectedTransaction * feat: revised gradle.build dependencies * feat: switch from shadow jar to zipped jar * feat: updated transaction exclusion api default image tag in compose file * feat: updated sql and tables and changes for PR comments * feat: improved log message for duplicate key error * feat: updated transaction exclusion api default image tag in compose file * feat: avoid redundant logs on periodic db cleanup * feat: revised request handlers plus better test assertions on insertion * fix: test case * feat: parse save method json request with jackson * feat: extracted db migrations from the coordinator and transaction-exclusion app * feat: decoupled coordinator modules from jvm-libs persistence db test module * feat: updated dockerfile of transaction-exclusion-api * feat: removed the find check before metric increment on save rejected transaction * feat: updated docker base image for tx-exclusion-api image buid and queryable window config * feat: skip migration scripts on read db instance * feat: updated more percise jvm-libs change filtering on transaction-exclusion-api * feat: updated coordinator config for geth node l2 gas pricing recipients * feat: update runners with specific version and removed the use of retry for transaction exclusion api testing * feat: add integration test for transaction exclusion app * feat: update local stack docker compose and workflow for transaction exclusion * feat: add e2e test for transaction exclusion * feat: skip the sequencer test in transaction exclusion e2e test * feat: revert sequencer config poa-block-txs-selection-max-time * feat: remove incorrect comment * feat: added explicitly assertion if tx exclusion is not defined and simplify the localStackPostgresDbOnly in build.gradle * feat: remove beforeAll in test suite with it.concurrent * feat: set coordinator config blob-compressor-version as V1_0_1 explicitly for traces-v2 * feat: update coordinator config test * feat: change default prefix not to be coordinator specific * feat: place persistence:db under jvm-libs:generic and fixed conflicts from latest main * fix: remove dependency to resolve circular dependency issue * test: switch from localStackPostgresDbOnlyComposeUp to localStackComposeUp * feat: replace GITHUB_SHA with github.event.pull_request.head.sha in computing commit tag * feat: update filter change file lists for transaction exclusion api
746 lines
26 KiB
YAML
746 lines
26 KiB
YAML
volumes:
|
|
local-dev:
|
|
name: "linea-local-dev"
|
|
logs:
|
|
name: "linea-logs"
|
|
|
|
networks:
|
|
linea:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 11.11.11.0/24
|
|
l1-network:
|
|
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:
|
|
sequencer:
|
|
hostname: sequencer
|
|
container_name: sequencer
|
|
image: consensys/linea-besu:${SEQUENCER_TAG:-24.10-delivery34}
|
|
profiles: [ "l2", "l2-bc", "debug" ]
|
|
depends_on:
|
|
linea-besu-sequencer-plugin-downloader:
|
|
condition: service_completed_successfully
|
|
linea-besu-sequencer-finalized-tag-updater-plugin-downloader:
|
|
condition: service_completed_successfully
|
|
ports:
|
|
- "8545:8545"
|
|
- "8546:8546"
|
|
- "8550:8550"
|
|
- "19545:9545" # metrics
|
|
- "30301:30301"
|
|
- "30305:30303"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 120
|
|
restart: "no"
|
|
environment:
|
|
LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml
|
|
entrypoint:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
/opt/besu/bin/besu \
|
|
--config-file=/var/lib/besu/sequencer.config.toml \
|
|
--node-private-key-file="/var/lib/besu/key" \
|
|
--plugin-linea-l1-polling-interval="PT12S" \
|
|
--plugin-linea-l1-smart-contract-address="0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" \
|
|
--plugin-linea-l1-rpc-endpoint="http://l1-el-node:8545" \
|
|
--plugin-linea-rejected-tx-endpoint="http://transaction-exclusion-api:8080" \
|
|
--plugin-linea-node-type="SEQUENCER"
|
|
volumes:
|
|
- ./config/linea-besu-sequencer/sequencer.config.toml:/var/lib/besu/sequencer.config.toml:ro
|
|
- ./config/linea-besu-sequencer/deny-list.txt:/var/lib/besu/deny-list.txt:ro
|
|
- ./config/linea-local-dev-genesis-PoA-besu.json/:/var/lib/besu/genesis.json:ro
|
|
- ./config/linea-besu-sequencer/key:/var/lib/besu/key:ro
|
|
- ./config/linea-besu-sequencer/log4j.xml:/var/lib/besu/log4j.xml:ro
|
|
- ../config/common/traces-limits-besu-v1.toml:/var/lib/besu/traces-limits.toml:ro
|
|
- ../tmp/linea-besu-sequencer/plugins:/opt/besu/plugins/
|
|
networks:
|
|
l1-network:
|
|
linea:
|
|
ipv4_address: 11.11.11.101
|
|
|
|
linea-besu-sequencer-plugin-downloader:
|
|
image: busybox:1.36.1
|
|
# profiles: ["l2", "l2-bc"] this works locally but breakes on CI, maybe Docker compose version issue
|
|
command: [ "sh", "/file-downloader.sh", "https://github.com/Consensys/linea-sequencer/releases/download/v0.1.4-test35/besu-sequencer-plugins-v0.1.4-test35.jar", "/linea-besu-sequencer" ]
|
|
volumes:
|
|
- ./scripts/file-downloader.sh:/file-downloader.sh:ro
|
|
- ../tmp/linea-besu-sequencer/plugins:/linea-besu-sequencer/
|
|
|
|
linea-besu-sequencer-finalized-tag-updater-plugin-downloader:
|
|
image: busybox:1.36.1
|
|
command: [ "sh", "/file-downloader.sh", "https://github.com/Consensys/linea-monorepo/releases/download/finalized-tag-updater-v0.0.2/finalized-tag-updater-v0.0.2.jar", "/linea-besu-sequencer" ]
|
|
volumes:
|
|
- ./scripts/file-downloader.sh:/file-downloader.sh:ro
|
|
- ../tmp/linea-besu-sequencer/plugins:/linea-besu-sequencer/
|
|
|
|
l2-node:
|
|
container_name: l2-node
|
|
hostname: l2-node
|
|
image: consensys/linea-geth:${ZKGETH_TAG:-0588665}
|
|
platform: linux/amd64
|
|
profiles: [ "l2", "l2-bc", "debug" ]
|
|
depends_on:
|
|
sequencer:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8845:8545"
|
|
- "8846:8546"
|
|
- "30306:30303"
|
|
environment:
|
|
DATA_DIR: "/data/l2-zkgeth-l2-node/"
|
|
BOOTNODES: "enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303"
|
|
NETRESTRICT: "11.11.11.0/24"
|
|
DISABLE_ZKEVM: "true"
|
|
MAX_BLOCK_GAS: 10000000 #10M
|
|
MAX_BLOCKDATA_BYTES: 35000 #35 KBytes
|
|
MAX_TXDATA_BYTES: 30000 #30 KBytes
|
|
ZKGETH_LOWER_GAS_MARGIN_PERCENTS: 120
|
|
ZKGETH_UPPER_GAS_MARGIN_PERCENTS: 300
|
|
entrypoint: ""
|
|
command: [ "sh", "/scripts/node.sh", "1337", "/genesis.json", "0x0", "0x1C9C380", "0xF4240" ]
|
|
volumes:
|
|
- ./geth/scripts:/scripts:ro
|
|
- ./config/linea-local-dev-genesis-PoA.json:/genesis.json:ro
|
|
- ./geth/geth-l2-node.key:/boot.key:ro
|
|
- local-dev:/data/
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.209
|
|
|
|
l2-node-besu:
|
|
hostname: l2-node-besu
|
|
container_name: l2-node-besu
|
|
image: consensys/linea-besu:24.10-delivery34
|
|
profiles: [ "l2", "l2-bc", "debug" ]
|
|
depends_on:
|
|
sequencer:
|
|
condition: service_healthy
|
|
ports:
|
|
- "9045:8545"
|
|
- "9046:8546"
|
|
- "9050:8550"
|
|
- "9051:8548"
|
|
- "30309:30303"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 120
|
|
restart: "no"
|
|
environment:
|
|
LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml
|
|
entrypoint:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
/opt/besu/bin/besu \
|
|
--config-file=/var/lib/besu/l2-node-besu.config.toml \
|
|
--genesis-file=/var/lib/besu/genesis.json \
|
|
--plugin-linea-l1-polling-interval="PT12S" \
|
|
--plugin-linea-l1-smart-contract-address="0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" \
|
|
--plugin-linea-l1-rpc-endpoint="http://l1-el-node:8545" \
|
|
--plugin-linea-rejected-tx-endpoint="http://transaction-exclusion-api:8080" \
|
|
--plugin-linea-node-type="RPC" \
|
|
--bootnodes=enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303
|
|
volumes:
|
|
- ./config/l2-node-besu/l2-node-besu-config.toml:/var/lib/besu/l2-node-besu.config.toml:ro
|
|
- ./config/linea-besu-sequencer/deny-list.txt:/var/lib/besu/deny-list.txt:ro
|
|
- ./config/l2-node-besu/log4j.xml:/var/lib/besu/log4j.xml:ro
|
|
- ./config/linea-local-dev-genesis-PoA-besu.json/:/var/lib/besu/genesis.json:ro
|
|
- ../config/common/traces-limits-besu-v1.toml:/var/lib/besu/traces-limits.toml:ro
|
|
- ../tmp/linea-besu-sequencer/plugins:/opt/besu/plugins/
|
|
- ../tmp/local/:/data/:rw
|
|
networks:
|
|
l1-network:
|
|
linea:
|
|
ipv4_address: 11.11.11.119
|
|
|
|
traces-node:
|
|
container_name: traces-node
|
|
hostname: traces-node
|
|
image: consensys/linea-geth:${ZKGETH_TAG:-0588665}
|
|
platform: linux/amd64
|
|
profiles: [ "l2", "l2-bc", "debug" ]
|
|
depends_on:
|
|
sequencer:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8645:8545" # http
|
|
- "8646:8546" # websockets
|
|
- "8651:8551" # engine_ API
|
|
environment:
|
|
DATA_DIR: "/l2-zkgeth-traces-node/"
|
|
NETRESTRICT: "11.11.11.0/24"
|
|
# ETHSTATS_URL: "zkgeth-traces-node:${WS_SECRET:-dummy-secret}@l2-ethstats:3000"
|
|
BOOTNODES: "enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303"
|
|
TRACES_DIR: "/data/traces/raw"
|
|
MAX_BLOCK_GAS: 10000000 #10M
|
|
MAX_BLOCKDATA_BYTES: 35000 #35 KBytes
|
|
MAX_TXDATA_BYTES: 30000 #30 KBytes
|
|
VERSION: "0.2.0"
|
|
TRACES_FILE_EXTENSION: ".json.gz"
|
|
entrypoint: ""
|
|
command: [ "sh", "/scripts/node.sh", "1337", "/genesis.json", "0xa", "0x1C9C380", "0xF4240" ]
|
|
volumes:
|
|
- ./geth/scripts:/scripts:ro
|
|
- ./config/linea-local-dev-genesis-PoA.json:/genesis.json:ro
|
|
- local-dev:/data/
|
|
# - ../tmp/:/data/
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.102
|
|
|
|
prover:
|
|
container_name: prover
|
|
hostname: prover
|
|
image: consensys/linea-prover:b4550ce-untested
|
|
platform: linux/amd64
|
|
# to avoid spinning up on CI for now
|
|
profiles: [ "l2" ]
|
|
environment:
|
|
GOMAXPROCS: 16
|
|
CONTROLLER_CONFIG: "/opt/linea/prover/config/controller/controller.config.toml"
|
|
GOMEMLIMIT: "10GiB"
|
|
WORKER_ID: prover-i1 # keep this prover- to mimic prod env prover-aggregation-91
|
|
volumes:
|
|
- local-dev:/data
|
|
- logs:/logs
|
|
- ./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
|
|
- ./config/prover/v2/prover-aggregation.config.toml:/opt/linea/prover/config/executor/aggregation.config.toml
|
|
- ../config/common/traces-limits-v1.toml:/opt/linea/prover/config/executor/traces-limits-M.toml
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.108
|
|
|
|
postman:
|
|
container_name: postman
|
|
hostname: postman
|
|
image: consensys/linea-postman:${POSTMAN_TAG:-5a6fdf3}
|
|
profiles: [ "l2", "debug" ]
|
|
platform: linux/amd64
|
|
restart: on-failure
|
|
depends_on:
|
|
sequencer:
|
|
condition: service_healthy
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
L1_RPC_URL: "http://l1-el-node:8545"
|
|
L1_CONTRACT_ADDRESS: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"
|
|
# WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE
|
|
L1_SIGNER_PRIVATE_KEY: "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba"
|
|
L1_LISTENER_INTERVAL: 2000
|
|
L1_LISTENER_INITIAL_FROM_BLOCK: 0
|
|
L1_LISTENER_BLOCK_CONFIRMATION: 1
|
|
L1_MAX_BLOCKS_TO_FETCH_LOGS: 1000
|
|
L1_MAX_GAS_FEE_ENFORCED: "true"
|
|
L2_RPC_URL: "http://l2-node:8545"
|
|
L2_CONTRACT_ADDRESS: "0xe537D669CA013d86EBeF1D64e40fC74CADC91987"
|
|
# WARNING: FOR LOCAL DEV ONLY - DO NOT REUSE THESE KEYS ELSEWHERE
|
|
L2_SIGNER_PRIVATE_KEY: "0xfcf854e0a0bc6fd7e97d7050e61a362c915cecd6767a32267b22e8b7af572e58"
|
|
L2_LISTENER_INTERVAL: 2000
|
|
L2_LISTENER_INITIAL_FROM_BLOCK: 0
|
|
L2_LISTENER_BLOCK_CONFIRMATION: 0 # set confirmation as zero since L2 block won't auto increase
|
|
L2_MAX_BLOCKS_TO_FETCH_LOGS: 1000
|
|
L2_MAX_GAS_FEE_ENFORCED: "false"
|
|
L2_MESSAGE_TREE_DEPTH: 5
|
|
MESSAGE_SUBMISSION_TIMEOUT: 300000
|
|
MAX_FETCH_MESSAGES_FROM_DB: 1000
|
|
MAX_NONCE_DIFF: 10000
|
|
MAX_FEE_PER_GAS: 100000000000
|
|
GAS_ESTIMATION_PERCENTILE: 50
|
|
PROFIT_MARGIN: 0.0
|
|
MAX_NUMBER_OF_RETRIES: 100
|
|
RETRY_DELAY_IN_SECONDS: 30
|
|
MAX_CLAIM_GAS_LIMIT: 2560000
|
|
L1_L2_EOA_ENABLED: "true"
|
|
L1_L2_CALLDATA_ENABLED: "true"
|
|
L1_L2_AUTO_CLAIM_ENABLED: "true"
|
|
L2_L1_EOA_ENABLED: "true"
|
|
L2_L1_CALLDATA_ENABLED: "true"
|
|
L2_L1_AUTO_CLAIM_ENABLED: "true"
|
|
POSTGRES_HOST: "postgres"
|
|
POSTGRES_PORT: 5432
|
|
POSTGRES_USER: "postgres"
|
|
POSTGRES_PASSWORD: "postgres"
|
|
POSTGRES_DB: "postman_db"
|
|
networks:
|
|
l1-network:
|
|
ipv4_address: 10.10.10.222
|
|
linea:
|
|
ipv4_address: 11.11.11.222
|
|
|
|
traces-api:
|
|
hostname: traces-api
|
|
container_name: traces-api
|
|
image: consensys/linea-traces-api-facade:${TRACES_API_TAG:-e9f2bcc}
|
|
profiles: [ "l2", "debug" ]
|
|
restart: on-failure
|
|
depends_on:
|
|
traces-node:
|
|
condition: service_started
|
|
ports:
|
|
- "8080:8080"
|
|
command: [ 'java', '-Dvertx.configurationFile=config/vertx-options.json', '-Dlog4j2.configurationFile=config/log4j2-dev.xml', '-jar', 'libs/app-all.jar', 'config/traces-app-docker.config.toml', ]
|
|
volumes:
|
|
- ../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/
|
|
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:-d227ddf}
|
|
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:-2ee4363}
|
|
platform: linux/amd64
|
|
profiles: [ "l2", "debug" ]
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
l1-el-node:
|
|
condition: service_started
|
|
sequencer:
|
|
condition: service_started
|
|
shomei:
|
|
condition: service_started
|
|
shomei-frontend:
|
|
condition: service_started
|
|
ports:
|
|
- "9545:9545"
|
|
restart: on-failure
|
|
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/coordinator/coordinator-docker.config.toml:/opt/consensys/linea/coordinator/config/coordinator-docker.config.toml:ro
|
|
- ../config/coordinator/coordinator-docker-web3signer-override.config.toml:/opt/consensys/linea/coordinator/config/coordinator-docker-web3signer-override.config.toml:ro
|
|
- ../config/common/traces-limits-v1.toml:/opt/consensys/linea/coordinator/config/traces-limits-v1.toml:ro
|
|
- ../config/common/smart-contract-errors.toml:/opt/consensys/linea/coordinator/config/smart-contract-errors.toml:ro
|
|
- ../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/
|
|
networks:
|
|
l1-network:
|
|
ipv4_address: 10.10.10.106
|
|
linea:
|
|
ipv4_address: 11.11.11.106
|
|
|
|
web3signer:
|
|
hostname: web3signer
|
|
container_name: web3signer
|
|
image: consensys/web3signer:23.3-jdk17
|
|
profiles: [ "l2", "debug" ]
|
|
ports:
|
|
- "9000:9000"
|
|
command:
|
|
- --key-store-path=/keyFiles/
|
|
- --http-host-allowlist=*
|
|
- eth1
|
|
volumes:
|
|
- ./web3signer/keyFiles/:/keyFiles/
|
|
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:14.5
|
|
hostname: postgres
|
|
container_name: postgres
|
|
profiles: [ "l2", "debug" ]
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
|
PGDATA: /data/postgres
|
|
command: postgres -c config_file=/etc/postgresql/postgresql.conf
|
|
# uncomment command below if you need to log and debug queries to PG
|
|
# command:
|
|
# - postgres
|
|
# - -c
|
|
# - config_file=/etc/postgresql/postgresql.conf
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 120
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./postgres/init:/docker-entrypoint-initdb.d/
|
|
- ./postgres/conf/:/etc/postgresql/
|
|
networks:
|
|
- linea
|
|
- l1-network
|
|
|
|
l1-el-node:
|
|
container_name: l1-el-node
|
|
hostname: l1-el-node
|
|
image: hyperledger/besu:24.6.0
|
|
profiles: [ "l1", "debug" ]
|
|
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
|
|
command: [ "--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:
|
|
l1-network:
|
|
ipv4_address: 10.10.10.201
|
|
|
|
l1-cl-node:
|
|
container_name: l1-cl-node
|
|
hostname: l1-cl-node
|
|
image: consensys/teku:24.2.0
|
|
profiles: [ "l1", "debug" ]
|
|
depends_on:
|
|
l1-el-node:
|
|
condition: service_healthy
|
|
l1-node-genesis-generator:
|
|
condition: service_completed_successfully
|
|
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
|
|
- local-dev:/data
|
|
ports:
|
|
- "9002:9000"
|
|
- "8008:8008/tcp"
|
|
- "4003:4000/tcp"
|
|
- "5051/tcp"
|
|
networks:
|
|
l1-network:
|
|
ipv4_address: 10.10.10.202
|
|
|
|
l1-node-genesis-generator:
|
|
build:
|
|
context: ./config/l1-node/
|
|
profiles: [ "l1", "debug" ]
|
|
entrypoint:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
/config/generate-genesis.sh \
|
|
--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
|
|
- ./config/l1-node/generate-genesis.sh:/config/generate-genesis.sh
|
|
- 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:
|
|
- l1-network
|
|
|
|
zkbesu-shomei:
|
|
image: consensys/linea-besu:linea-delivery-27
|
|
hostname: zkbesu-shomei
|
|
container_name: zkbesu-shomei
|
|
profiles: [ "l2", "l2-bc" ]
|
|
depends_on:
|
|
shomei-plugin-downloader:
|
|
condition: service_completed_successfully
|
|
sequencer:
|
|
condition: service_healthy
|
|
privileged: true
|
|
restart: always
|
|
user: root
|
|
ports:
|
|
- "8945:8545" # http
|
|
- "8946:8546" # websockets
|
|
- "8950:8550"
|
|
- "30307:30303"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "bash -c \"[ -f /tmp/pid ]\"" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 120
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.113
|
|
environment:
|
|
LOG4J_CONFIGURATION_FILE: /var/lib/besu/log4j.xml
|
|
entrypoint:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
/opt/besu/bin/besu \
|
|
--config-file=/var/lib/besu/zkbesu-config.toml \
|
|
--genesis-file=/var/lib/besu/genesis.json \
|
|
--plugin-shomei-http-host="11.11.11.114" \
|
|
--plugin-shomei-http-port=8888 \
|
|
--Xbonsai-limit-trie-logs-enabled=false \
|
|
--bootnodes=enode://14408801a444dafc44afbccce2eb755f902aed3b5743fed787b3c790e021fef28b8c827ed896aa4e8fb46e22bd67c39f994a73768b4b382f8597b0d44370e15d@11.11.11.101:30303
|
|
|
|
volumes:
|
|
- ./config/zkbesu-shomei/zkbesu-config.toml:/var/lib/besu/zkbesu-config.toml:ro
|
|
- ./config/zkbesu-shomei/log4j.xml:/var/lib/besu/log4j.xml:ro
|
|
- ./config/linea-local-dev-genesis-PoA-besu.json/:/var/lib/besu/genesis.json:ro
|
|
- ../tmp/zkbesu-shomei/plugins:/opt/besu/plugins/
|
|
|
|
shomei:
|
|
image: consensys/linea-shomei:2.2.0
|
|
hostname: shomei
|
|
container_name: shomei
|
|
profiles: [ "l2", "l2-bc" ]
|
|
depends_on:
|
|
zkbesu-shomei:
|
|
condition: service_started
|
|
privileged: true
|
|
user: root
|
|
ports:
|
|
- "8998:8888"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "bash -c \"[ -f /data/shomei/LOCK ]\"" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 60
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.114
|
|
environment:
|
|
LOG4J_CONFIGURATION_FILE: /log4j.xml
|
|
command:
|
|
- --besu-rpc-http-host=11.11.11.113
|
|
- --besu-rpc-http-port=8545
|
|
- --rpc-http-host=11.11.11.114
|
|
- --rpc-http-host-allow-list=*
|
|
- --rpc-http-port=8888
|
|
- --min-confirmations-before-importing=0
|
|
- --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
|
|
|
|
shomei-frontend:
|
|
image: consensys/linea-shomei:2.2.0
|
|
hostname: shomei-frontend
|
|
container_name: shomei-frontend
|
|
profiles: [ "l2", "l2-bc" ]
|
|
depends_on:
|
|
zkbesu-shomei:
|
|
condition: service_started
|
|
privileged: true
|
|
user: root
|
|
restart: always
|
|
ports:
|
|
- "8889:8888"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "bash -c \"[ -f /data/shomei/LOCK ]\"" ]
|
|
interval: 1s
|
|
timeout: 1s
|
|
retries: 60
|
|
networks:
|
|
linea:
|
|
ipv4_address: 11.11.11.107
|
|
environment:
|
|
LOG4J_CONFIGURATION_FILE: /log4j.xml
|
|
command:
|
|
- --besu-rpc-http-host=11.11.11.113
|
|
- --besu-rpc-http-port=8545
|
|
- --rpc-http-host=11.11.11.107
|
|
- --rpc-http-host-allow-list=*
|
|
- --rpc-http-port=8888
|
|
- --min-confirmations-before-importing=0
|
|
- --trace-start-block-number=0
|
|
- --data-path=/data/shomei-frontend
|
|
- --metrics-http-host=0.0.0.0
|
|
- --metrics-http-port=9545
|
|
- --enable-trace-generation=false
|
|
- --enable-finalized-block-limit=true
|
|
- --use-finalized-block-number=0
|
|
- --use-finalized-block-hash=0x0ca7c811d834d51a08e390bef9ae24db8623338bad13176d420b2f03bc282b90 #some unlikely hash
|
|
|
|
volumes:
|
|
- local-dev:/data/
|
|
- ./config/shomei/log4j.xml:/log4j.xml:ro
|
|
|
|
shomei-plugin-downloader:
|
|
container_name: shomei-plugin-downloader
|
|
profiles: ["l2", "l2-bc"]
|
|
image: busybox:1.36.1
|
|
command: [ "sh", "/file-downloader.sh", "https://github.com/Consensys/besu-shomei-plugin/releases/download/v0.3.1/besu-shomei-plugin-v0.3.1.jar", "/shomei-plugin" ]
|
|
volumes:
|
|
- ./scripts/file-downloader.sh:/file-downloader.sh:ro
|
|
- ../tmp/zkbesu-shomei/plugins:/shomei-plugin/
|
|
|
|
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
|
|
|
|
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
|
|
|