Quick Start Guide for ZKsync Node

Prerequisites

System Requirements

The following are minimal requirements to run the node using Docker:

  • CPU: A relatively modern CPU is recommended.
  • RAM: 32 GB
  • Storage:
    • Testnet Nodes: 30 GB
    • Mainnet Nodes: 300 GB, with the state growing about 1TB per month.
  • Network: 100 Mbps connection (1 Gbps+ recommended)

Setup Instructions

  1. Clone the ZKsync Era repository and navigate to the ZKsync node guide:
    git clone https://github.com/matter-labs/zksync-era.git
    cd zksync-era/docs/guides/external-node
    

Running a ZKsync Node Locally

Starting the Node

  • For a Mainnet instance:
    cd docker-compose-examples
    docker compose --file mainnet-external-node-docker-compose.yml up
    
  • For a Testnet instance:
    cd docker-compose-examples
    docker compose --file testnet-external-node-docker-compose.yml up
    

Resetting the Node State

  • For a Mainnet instance:
    cd docker-compose-examples
    docker compose --file mainnet-external-node-docker-compose.yml down --volumes
    
  • For a Testnet instance:
    cd docker-compose-examples
    docker compose --file testnet-external-node-docker-compose.yml down --volumes
    

Monitoring Node Status

Access the local Grafana dashboard to see the node status after recovery: Local Grafana Dashboard.

API Access

  • HTTP JSON-RPC API: Port 3060
  • WebSocket API: Port 3061

Important Notes

  • Initial Recovery: The node will recover from a snapshot on its first run, which may take up to 10 hours. During this period, the API server will not serve any requests.
  • Historical Data: For access to historical transaction data, consider recovery from DB dumps. Refer to the Advanced Setup section for more details.
  • DB Dump: For nodes that operate from a DB dump, which allows starting a ZKsync node with a full historical transactions history, refer to the documentation on running from DB dumps at 03_running.md.

Advanced Setup

For additional configurations like monitoring, backups, recovery from DB dump or snapshot, and custom PostgreSQL settings, please refer to the ansible-en-role repository.


Made with ❤️ by the ZKsync Community