Skip to main content

Gate Layer RPC Node Deployment

This guide explains how to deploy a Gate Layer L2 RPC node, including environment setup, configuration files, node startup, and Blob-related parameters.

Before you start

  • RPC nodes used only for syncing/reads (no transaction submission): no whitelist required; follow this guide as-is.
  • Nodes that will submit transactions to the network (including public RPCs that allow tx submissions): please submit the application form. After approval, you may proceed with transaction submission and public RPC configuration.

Download binaries and sample configs

You can directly download Gate Layer binaries and sample configs (including rollup.json / genesis.json) from GitHub:


1. Environment Setup

Dependencies: golang 1.22+ · make · git · gcc · libc-dev

Components:

  • gatelayer-geth: L2 execution client (op-geth)
  • gatelayer-node: L2 RPC/service node (op-node)

Prepare a workspace:

export GATELAYER_WORKSPACE=/tmp/gatelayer
mkdir -p "$GATELAYER_WORKSPACE"
cd "$GATELAYER_WORKSPACE"

2. Prepare Configuration Files

2.1 Download/prepare main configuration files

  • rollup.json
  • genesis.json

Save both files to the $GATELAYER_WORKSPACE root directory.

2.2 Generate JWT secret

openssl rand -hex 32 > jwt.txt

2.3 Copy to the corresponding locations

  • Put genesis.json and jwt.txt in the $GATELAYER_WORKSPACE root directory
  • Put rollup.json and jwt.txt in the $GATELAYER_WORKSPACE root directory

Note: jwt.txt is used by both op-geth and op-node (Engine API auth); the contents must match on both sides.


3. Start the L2 Node

3.1 Initialize op-geth (gatelayer-geth)

Re-run if genesis.json changes:

mkdir -p datadir

gatelayer-geth init \
--state.scheme=hash \
--datadir=datadir \
genesis.json

3.2 Start gatelayer-geth (execution layer)

gatelayer-geth \
--datadir ./datadir \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.api=web3,eth,txpool,net,engine,miner \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=8546 \
--ws.origins="*" \
--ws.api=eth,txpool,net,engine,miner \
--syncmode=full \
--gcmode=archive \
--nodiscover \
--maxpeers=0 \
--networkid=10088 \
--authrpc.vhosts="*" \
--authrpc.addr=0.0.0.0 \
--authrpc.port=8551 \
--authrpc.jwtsecret=/mnt/l2/data/jwt.txt \
--rollup.sequencerhttp=https://gatelayer-seq-mainnet.gatenode.cc'

3.3 Start gatelayer-node (coordination + RPC)

gatelayer-node \
--l2=http://localhost:8551 \
--l2.jwt-secret=./jwt.txt \
--sequencer.l1-confs=0 \
--verifier.l1-confs=0 \
--rollup.config=./rollup.json \
--rpc.addr=0.0.0.0 \
--l1=https://evm.nodeinfo.cc \
--l1.trustrpc=true \
--l1.rpckind=basic \
--l1.epoch-poll-interval=10s \
--log.level=debug \
--l1.beacon.ignore=false \
--l1.beacon=https://api.nodeinfo.cc \
--l1.beacon.fetch-all-sidecars=true \
--p2p.sync.onlyreqtostatic=true'

Notes:

  • p2p.static can be replaced with your own seed/discovery approach per ops policy.
  • Ensure --l2.jwt-secret matches op-geth's --authrpc.jwtsecret (same file & contents).

Last updated on 2025/10/31