This configuration is approximate and should be considered as minimal requirements:
Full Node - is configured to build and store the last 7 days of data for Cronos zkEVM Sepolia Testnet by default. Check here for details on the pruning setting.
4-core of CPU
16GB of RAM
100G of SSD storage
Archive Node - is configured to build an archive of all historical data of Cronos zkEVM Sepolia Testnet;
4-core of CPU
32GB of RAM
500G of SSD storage
Step 1: Download the DB Dump
1.1 - Download the pgdump
Create a new folder and download the dump file into it by:
After extracting the file, locate the dump folder and the pg_restore.list file. Put both to the main directory, instead of default under βexternal_nodeβ.
Inside that directory, create and edit docker-compose.yml :
nano docker-compose.yml
Add the following configuration to docker-compose.yml:
services:
cronoszk:
image: "ghcr.io/cronos-labs/external-node:testnet-v24.23.0"
network_mode: host
restart: unless-stopped
stop_grace_period: "120s"
user: 0:0
volumes:
- "${PWD}:/db" # Path to the rocksdb you unzipped
environment:
DATABASE_POOL_SIZE: 10
DATABASE_URL: "postgresql://zksync:password@localhost:5432/mydb"
EN_ETH_CLIENT_URL: "https://ethereum-sepolia-rpc.publicnode.com"
EN_HEALTHCHECK_PORT: 3081
EN_HTTP_PORT: 3060
EN_L1_BATCH_COMMIT_DATA_GENERATOR_MODE: "Validium"
EN_L1_CHAIN_ID: 11155111
EN_L2_CHAIN_ID: 240
EN_MAIN_NODE_URL: "https://seed.testnet.zkevm.cronos.org/"
EN_MERKLE_TREE_PATH: "./db/ext-node/lightweight"
EN_PROMETHEUS_PORT: 3312
EN_PRUNING_ENABLED: "true" #Note: Default value is false, i.e. no purning
EN_REQ_ENTITIES_LIMIT: 1000
EN_SNAPSHOTS_RECOVERY_ENABLED: "true"
EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL: "cronos-zkevm-testnet-en-snapshot"
EN_SNAPSHOTS_OBJECT_STORE_MODE: "GCSAnonymousReadOnly"
EN_STATE_CACHE_PATH: "./db/ext-node/state_keeper"
EN_WS_PORT: 3061
RUST_LOG: "warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=debug,zksync_utils=debug,zksync_web3_decl::client=error"
postgres:
image: postgres:16
restart: unless-stopped
stop_grace_period: "120s"
network_mode: host
environment:
POSTGRES_DB: mydb
POSTGRES_USER: zksync
POSTGRES_PASSWORD: password
ulimits:
nofile: 60000
nproc: 60000
memlock: -1
volumes:
- "${PWD}/pgsql_data:/var/lib/postgresql/data/"
- "${PWD}:/dump" # This is the location of where the dump is.
services:
cronoszk:
image: "ghcr.io/cronos-labs/external-node:testnet-v24.23.0"
network_mode: host
restart: unless-stopped
stop_grace_period: "120s"
user: 0:0
volumes:
- "${PWD}:/db" # Path to the rocksdb you unzipped
environment:
DATABASE_POOL_SIZE: 10
DATABASE_URL: "postgresql://zksync:password@localhost:5432/mydb"
EN_ETH_CLIENT_URL: "https://ethereum-sepolia-rpc.publicnode.com"
EN_HEALTHCHECK_PORT: 3081
EN_HTTP_PORT: 3060
EN_L1_BATCH_COMMIT_DATA_GENERATOR_MODE: "Validium"
EN_L1_CHAIN_ID: 11155111
EN_L2_CHAIN_ID: 282
EN_MAIN_NODE_URL: "https://seed.testnet.zkevm.cronos.org/"
EN_MERKLE_TREE_PATH: "./db/ext-node/lightweight"
EN_PROMETHEUS_PORT: 3312
EN_PRUNING_ENABLED: "false" #Note: Default value is false, i.e. no purning
EN_REQ_ENTITIES_LIMIT: 1000
EN_SNAPSHOTS_RECOVERY_ENABLED: "false"
EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL: "cronos-zkevm-testnet-en-snapshot"
EN_SNAPSHOTS_OBJECT_STORE_MODE: "GCSAnonymousReadOnly"
EN_STATE_CACHE_PATH: "./db/ext-node/state_keeper"
EN_WS_PORT: 3061
RUST_LOG: "warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=debug,zksync_utils=debug,zksync_web3_decl::client=error"
postgres:
image: postgres:16
restart: unless-stopped
stop_grace_period: "120s"
network_mode: host
environment:
POSTGRES_DB: mydb
POSTGRES_USER: zksync
POSTGRES_PASSWORD: password
ulimits:
nofile: 60000
nproc: 60000
memlock: -1
volumes:
- "${PWD}/pgsql_data:/var/lib/postgresql/data/"
- "${PWD}:/dump" # This is the location of where the dump is.
Important
Make sure you have the correct vars, volume attachment under the correct path.
Note
EN_PRUNING_ENABLED: Determines whether the node is set to pruning mode. When enabled, the node retains only recent chain data and discards older data to conserve storage space.
EN_SNAPSHOTS_RECOVERY_ENABLED, EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL, and EN_SNAPSHOTS_OBJECT_STORE_MODE: Enable snapshots recovery (similar to state-sync) and allows the node to recover from the latest batch without containing the full historical data.
Adddebug to namespaces: Enables debug tracing and saves debug data.EN_API_NAMESPACES:Defines the enabled API namespaces, including eth, net, web3, zks, pubsub, and debug.