Run an RPC

Overview

Operators can deploy permissionless RPC nodes for the Lumia zkEVM testnet, named Lumia Testnet.

DApp projects should run their own RPC node to retrieve the necessary blockchain data and shouldn't rely on public infrastructure. Public endpoints may respond slowly or not at all during times of high network traffic, and are rate limited.

Requirements System

Note: Storage space requirements will increase as the network grows.

  • 16GB RAM

  • 4-core CPU

  • 100GB Storage (This will increase over time)

Prerequisites

This tutorial requires Docker and Docker Compose to be installed on your machine. If you don't have these installed, check out the links provided below:

  • Docker: https://www.docker.com/get-started

  • Docker Compose: https://docs.docker.com/compose/install/

Ethereum RPC Node

A Sepolia (Ethereum testnet) RPC node is required for running a Lumia zkEVM testnet node. There are two options available:

  1. Set up your own - the Geth client is one example.

  2. Use an RPC provider endpoint - developers building on Lumia may be entitled to special offers or promos.

This document does not cover the installation of the Ethereum node. We will use a public RPC endpoint for this document, but keep in mind that this is not a viable production solution: public endpoints are rate limited and as a result, your Lumia zkEVM node may not synchronize correctly.

Setting Up zkNode

For a streamlined development experience, it’s highly recommended to utilize the make utility for tasks such as building and testing the code. To view a comprehensive list of available commands, simply execute make help in your terminal.

This step-by-step guide will result in a local environment that has everything needed to test and develop on a CDK Validium, but note that:

  • everything will be run on an ephemeral and local L1 network, once the environment is shutdown, all progress will be lost

  • ZK Proofs are mocked

  • Bridge service and UI is not included as part of this setup, instead there is a pre-funded account

Steps

  1. Clone this GitHub repository to your local machine:

git clone https://github.com/orionprotocol/cdk-validium-node.git
  1. Navigate to the cloned directory:

cd cdk-validium-node
  1. Build the Docker image using the provided Dockerfile:

make build-docker
  1. Navigate to the test directory:

cd test
  1. Run all needed components:

make run

Usage

  • L2 RPC endpoint: http://localhost:8123

  • L2 Chain ID: 1001

  • L1 RPC endpoint: http:localhost:8545

  • L1 Chain ID: 11155111

  • Prefunded account private key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

Troubleshooting

Everything is run using docker, so if anything is not working, first thing is to identify what containers are running or not:

docker compose ps

Then check the logs:

docker logs <problematic container, example: cdk-validium-sync>

Aditionaly, it can be worth checking the DBs:

  • StateDB: psql -h localhost -p 5432 -U state_user state_db, password: state_password

  • PoolDB: psql -h localhost -p 5433 -U pool_user pool_db, password: pool_password

Advanced config

In order to go beyond the default configuration, you can edit the config files:

  • ./test/config/test.node.config.toml: configuration of the node, documented here

  • ./test/config/test.genesis.config.toml: configuration of the network, documented here

  • ./test/config/test.prover.config.json: configuration of the prover/executor

Access from outside

To make an RPC endpoint URL available from outside, it is recommended to add an HTTP server.

Last updated