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.


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 \
--p2p.static=/ip4/43.167.227.69/tcp/9222/p2p/16Uiu2HAkyhuvGWvkXGvZfjndp1GSBJ2nSW5CJjXMVcbLCnaR1SBZ \
--p2p.sequencer.key=0x0da85f2e278c0c983f1ca265d378a3cfeb9a9adfa79f3bb58137b7ca132e788b \
--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/09/25