Anyone running a World Chain node is encouraged to join this Telegram channel for notifications of required software updates or other relevant information: World Chain Node Updates Telegram Channel
A simple Docker Compose script for launching a World Chain node.
Forked from simple-optimism-node.
- 8+ CPU Cores (Prioritize clock speed over more cores)
- 32GB+ RAM (More is better)
- >4TB NVMe SSD
- 100mbps+ Download Speed
Note: Tested on Ubuntu 24.04. This README assumes you already have Docker installed in your environment. If not, please consult resources for your specific environment.
git clone https://github.com/worldcoin-foundation/simple-worldchain-node.git
cd simple-worldchain-nodeMake a copy of .env.example named .env.
cp .env.example .envOpen .env with your editor of choice.
Note: Mentions of
rethorop-rethrefer to the customizedworld-chainclient, which is an extension ofop-reth. Usage ofop-reththroughout this repository is for continuity. You can find theworld-chaincodebase here.
- NETWORK_NAME - Choose which World Chain network you want to operate on:
worldchain-mainnet- World Chain Mainnetworldchain-sepolia- World Chain Sepolia
- NODE_TYPE - Choose the type of node you want to run:
archive- An Archive node stores the complete history of the blockchain, including historical states.full- A Full node contains ~10,000 recent blocks without historical states.minimal- A Minimal node prunes as aggressively as possible, using the least storage.
- L1_RPC_ENDPOINT - Specify the endpoint for the RPC of Layer 1 (e.g., Ethereum mainnet).
- L1_BEACON_RPC_ENDPOINT - Specify the beacon endpoint of Layer 1.
- L1_RPC_TYPE - Specify the service provider for the RPC endpoint you've chosen in the previous step. The available options are:
alchemy- Alchemyquicknode- Quicknodeerigon- Erigonbasic- Other providers
- FLASHBLOCKS_ENABLED - Enable Flashblocks when using the
world-chainclienttrue- Flashblocks enabled (Default)false- Flashblocks disabled
- DOWNLOAD_SNAPSHOT - Whether to use snapshots for initial sync of the
world-chainclienttrue- Download snapshot if datadir is empty (Default)false- Skip downloading snapshot (not recommended)
- PORT__[...] - Use custom port for specified components.
docker compose up -dWill start the node in a detatched shell (-d), meaning the node will continue to run in the background.
docker compose logs -f --tail 10To view logs of all containers.
docker compose logs -f <CONTAINER_NAME> --tail 10To view logs for a specific container. Most commonly used values for <CONTAINER_NAME> are world-chain and op-node.
docker compose downWill shut down the node without wiping any volumes. You can safely run this command and then restart the node again.
docker compose restartWill restart the node safely with minimal downtime but without upgrading the node.
Pull the latest updates from GitHub, and Docker Hub and rebuild the container.
git pull
docker compose pull
docker compose up -dWill upgrade your node with minimal downtime.
docker compose down -vWill shut down the node and WIPE ALL DATA. Proceed with caution!
Grafana is exposed at http://localhost:3000 and comes with a pre-loaded dashboard for world-chain.
The dashboard is tailored to the World Chain and OP Node versions in this Compose stack. It includes:
- execution-layer and OP Node synchronization and peering
- MDBX, RocksDB, and static-file storage and database statistics
- Engine API latency, gas, execution, state-root, cache, and pruning performance
- Flashblocks validation/P2P metrics and BAL-aware validation comparisons
- World Chain and OP Node process CPU, memory, and operational health signals
The bundled services expose process-level resource metrics. Host-wide CPU saturation, memory pressure, disk space, disk latency, and NVMe health require a host metrics exporter and are intentionally not inferred by this dashboard.