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
andjwt.txt
in the$GATELAYER_WORKSPACE
root directory - Put
rollup.json
andjwt.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).