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.jsongenesis.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.jsonandjwt.txtin the$GATELAYER_WORKSPACEroot directory - Put
rollup.jsonandjwt.txtin the$GATELAYER_WORKSPACEroot directory
Note:
jwt.txtis 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.staticcan be replaced with your own seed/discovery approach per ops policy.- Ensure
--l2.jwt-secretmatches op-geth's--authrpc.jwtsecret(same file & contents).