Setup OP Geth Node

Setup OP Geth Node. This is a non-voting RPC node that users interact with for Eth L2 transactions.

Setting up an OP Geth Node needs three services: OP Geth, Rhea, and Light Client (also called Proxy). This OP Geth node serves as a non-voting RPC node that enables executing Eth L2 transactions.

OP Geth has been modified to calculate gas based on the required Solana compute. It retrieves the required gas value by querying Light Client.

Rhea picks up Eth transactions from OP Geth mempool, composes them into Solana transactions, and submits them to Solana for sequencing.

Solana's consensus voting nodes execute and vote on the ordering of these transactions.

Machine specs

We recommend using a machine with: Ubuntu 32GB RAM, 16 cores, 1 TB space

Run Docker containers

Run docker containers sequentially in the order below.

1. Light Client

Light Client provides an Ethereum interface to access Solana state, which includes providing gas estimates to Geth.

Airdrop SOLs to Light Client keypair as it will be used to pay for Solana transactions. Use https://faucet.solana.com. If you run into problems with airdrop, contact us on our Discord or Telegram.

The command below shows Light Client keypair address to input for faucet.

solana address -k keys/proxy-sender.json

Run the Light Client Docker container.

docker-compose up -d proxy
docker logs proxy -f

Wait until the logs print out "Starting the RPC server at 0.0.0.0:9090".

2. Geth

Run Geth. Geth is the rollup client that accepts and executes Eth L2 transactions, and provides transaction results to the user. It is a non-voting RPC node.

If you are setting up your L2 on your local machine, comment out Geth volumes in rome-setup/docker/docker-compose.yml.

  # volumes:
  #   - /etc/letsencrypt/live/${GETH_HOST}/fullchain.pem:/etc/nginx/ssl/selfsigned.crt
  #   - /etc/letsencrypt/live/${GETH_HOST}/privkey.pem:/etc/nginx/ssl/selfsigned.key

However if you are setting up your L2 on a remote server, keep the Geth volumes uncommented.

Run the Geth container.

docker-compose up -d geth
docker logs geth -f

Wait until the logs print out "Server listening at http://localhost:3000".

3. Rhea

Rhea takes rollup transactions from Geth, packages them as Rome (Solana) transactions, and submits them to Solana for sequencing.

Airdrop SOLs to Rhea keypair as it will be used to pay for Solana transactions. Use https://faucet.solana.com. If you run into problems with airdrop, contact us on our Discord or Telegram.

The command below shows Rhea keypair address to input for faucet.

solana address -k keys/rhea-sender.json

Run the Rhea Docker container.

docker-compose up -d rhea
docker logs rhea -f

Wait until the logs to print out "Polling: http://geth:8545".

Docker container overview

The docker containers started above are listed below:

Docker Container
Purpose

proxy

Rome Light Client App

geth

OP Geth App

rhea

Rhea App

Last updated