Gate Layer RPC Node Deployment
This document describes how to deploy a Gate Layer L2 RPC node, including dependency installation, configuration file preparation, node startup, and Blob parameter descriptions.
This document provides two deployment methods:
- Binary Method: Directly use compiled binary files to start (see Chapter 3)
- Docker Method: Use Docker containers to start (see Chapter 4)
Before You Start
- RPC nodes used only for synchronization/querying (not sending transactions): No whitelist application required, deploy directly according to this document.
- Nodes that need to submit transactions to the network (including public RPC services that can send transactions): Please submit an application form first. After approval, you can proceed with transaction submission and public RPC configuration.
Obtaining Binaries and Example Configuration
You can directly obtain Gate Layer binaries and example configurations (including rollup.json / genesis.json, etc.) from GitHub:
1. Environment Preparation
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)
Set up workspace directory:
export GATELAYER_WORKSPACE=/tmp/gatelayer
mkdir -p "$GATELAYER_WORKSPACE"
cd "$GATELAYER_WORKSPACE"
2. Configuration File Preparation
2.1 Download/Prepare Main Node Configuration Files
rollup.jsongenesis.json
Save the above files to the $GATELAYER_WORKSPACE root directory.
2.2 Generate JWT Secret
openssl rand -hex 32 > jwt.txt
2.3 Copy to Corresponding Directories
- Place
genesis.jsonandjwt.txtin the$GATELAYER_WORKSPACEroot directory - Place
rollup.jsonandjwt.txtin the$GATELAYER_WORKSPACEroot directory
Note:
jwt.txtwill be used by both op-geth and op-node (Engine API authentication), and both ends must be exactly the same.
3. Starting L2 Node
3.1 Initialize op-geth (gatelayer-geth)
Re-execute 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=./jwt.txt \
--rollup.sequencerhttp=https://gatelayer-seq-mainnet.gatenode.cc
3.3 Start gatelayer-node (Consensus/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 seed/discovery methods (choose according to actual operational strategy).- Ensure that
--l2.jwt-secretand op-geth's--authrpc.jwtsecretpoint to the same file (with identical content).
4. Starting L2 Node with Docker
The Docker method provides a simpler deployment experience, with scripts automatically handling configuration file downloads, JWT secret generation, data directory initialization, and other steps.
4.1 Environment Preparation
Dependencies:
- Docker (version 20.10+)
- Docker Compose (version 2.0+ or docker-compose 1.29+)
Check Docker Environment:
# Check if Docker is installed
docker --version
# Check if Docker Compose is available
docker compose version
Obtain Docker Startup Files:
Get the files needed for Docker startup from the GitHub repository:
cd /node-binary/gatelayer/mainnet/docker
tree
.
├── archive
│ ├── README.md
│ └── docker-compose.yml
└── full
├── README.md
└── docker-compose.yml
Repository address: https://github.com/gatechain/node-binary
4.2 Start Full Node
Basic Startup:
cd /node-binary/gatelayer/mainnet/docker/full
cp .env.example .env
# Start
docker compose up -d
4.3 Start Archive Node
cd /node-binary/gatelayer/mainnet/docker/archive
cp .env.example .env
# Start
docker compose up -d
4.4 Verify Node Status
Check Container Status:
cd /node-binary/gatelayer/mainnet/docker/full # or cd /node-binary/gatelayer/mainnet/docker/archive
docker compose -f docker-compose.yml ps
View Logs:
docker compose logs -f
Check RPC Endpoint:
# Check HTTP RPC
curl -X POST http://localhost:8545 \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
4.5 Stop Node
docker compose down
4.6 Data Directory
Default data directory: /tmp/gatelayer
Directory structure:
/tmp/gatelayer/
├── datadir/ # geth data directory
│ └── geth/
│ └── chaindata/
├── rollup.json # Rollup configuration
├── genesis.json # Genesis configuration
└── jwt.txt # JWT secret
4.7 Troubleshooting
Docker Permission Issues:
If you encounter permission errors, add the user to the docker group:
sudo usermod -aG docker $USER
newgrp docker
# or log out and log back in