Run an RPC Node
An RPC node provides JSON-RPC and WebSocket endpoints for developers, dApps, indexers, infrastructure providers, and partners. RPC nodes do not validate blocks and do not require staking.
RPC nodes should not expose consensus ports publicly and must follow strict security practices.
1. System Requirements
Recommended:
- OS: Ubuntu 22.04 LTS
- CPU: 4 cores
- RAM: 8–16 GB
- Storage: 500 GB+ NVMe SSD
- Network: High-bandwidth connection
- Dependencies: git, jq, curl, make, build-essential, pkg-config
- Go: v1.25+
Install dependencies:
Install Go:
2. Install Shardeum Node Binary
Add the Go bin directory to PATH:
Verify the installation:
3. Environment Variables
4. Initialize the Node
5. Copy Genesis File
6. Configure Pruning
For a typical RPC node, custom pruning helps manage storage while retaining recent state.
Edit:
$HOME/.mainnet/$NODE_ID/config/app.toml
Set:
If you require complete historical state, run an Archive Node instead. Archive nodes disable pruning using --pruning nothing.
7. Enable JSON-RPC before the first start
Edit $HOME/.mainnet/$NODE_ID/config/app.toml.
Find the RPC section and set:
8. Start and Sync the Node
Start:
Monitor:
Wait until fully synced.
8. Optional: Enable gRPC & REST Endpoints
In app.toml:
Enable these only if required by your infrastructure.
9. Firewall Configuration
Expose only the ports required for your deployment:
Do not expose port 26657 (Tendermint RPC) to the public. Restrict sensitive endpoints to localhost or trusted IPs.
10. systemd Service (Recommended)
Check the installed Shardeum binary path:
Use the returned path for ExecStart.
Create the service file:
Example:
Replace <shardeumd-binary-path> with the path returned by command -v shardeumd, and use the same seed list specified in the startup instructions above.
Also, if the node is already running from the manual startup command above, stop that process before starting it as a systemd service.
Enable:
12. Scaling RPC Nodes (Optional)
For high-traffic dApps:
- Use load balancers (Nginx, HAProxy, AWS ELB)
- Run multiple RPC nodes behind a reverse proxy
- Rate-limit requests to avoid overload
- Separate "public RPC" from "private infra RPC"
- Run dedicated indexing services in parallel where required.
13. Useful Commands
Check sync:
Check network peers:
Check logs:
Query RPC:
14. Troubleshooting
RPC endpoint not responding
- Confirm RPC enabled in
app.toml - Confirm IP binding is correct
- Check firewall rules
- Check node is fully synced
High latency
- Check CPU, memory, disk I/O, and network utilization
- Review RPC request volume and rate limits
- Confirm the node remains fully synced
- Scale across additional RPC nodes if required
Node stuck catching up
- Check peers
- Restart node
- Verify time sync (NTP)
RPC Node Setup Complete
Your RPC node is operational and serving JSON-RPC / WebSocket traffic for the Shardeum EVM mainnet.
Use this setup for:
- dApp backend integrations
- Indexing services
- Developer environments
- High-availability RPC infrastructure