Run an RPC Node
The Shardeum mainnet has successfully upgraded to v1.1.0 (Cosmos EVM v0.6.3). Network operations have resumed, and v1.1.0 is the current mainnet release. New nodes syncing from genesis must follow the historical binary instructions in the Start and Sync the Node section below.
View upgrade details | Download v1.1.0
An RPC node provides JSON-RPC and WebSocket endpoints for developers, dApps, indexers, infrastructure providers, and partners. RPC nodes verify chain data but do not participate in consensus or require staking.
Do not expose the node's CometBFT RPC endpoint publicly. Only expose application RPC endpoints that are required for your deployment, and protect them with appropriate access controls and rate limiting.
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
Under the existing [json-rpc] section, set:
8. Start and Sync the Node
Before You Start: Syncing a New Node From Genesis After a State-Breaking Upgrade
Skip this section if your node is already synced past the latest upgrade height or if you are restoring from a compatible post-upgrade snapshot.
If a compatible post-upgrade snapshot is available, use the snapshot to bootstrap the node with the current binary. The Cosmovisor instructions below are only for nodes syncing from genesis.
When syncing a new node from genesis after a state-breaking upgrade, the node must use the binary version that corresponds to each part of the chain history.
For the current Shardeum mainnet chain history:
- Use
v1.0.2to sync from genesis until the upgrade at height7,927,860. - At the upgrade, Cosmovisor switches the node to
v1.1.0. - Continue syncing with
v1.1.0.
Use Cosmovisor to manage the binary switch at the upgrade height.
Set Up Cosmovisor and the Required Binaries
Install Cosmovisor:
Cosmovisor uses the node's home directory to store and manage the binaries required for each part of the chain history. Set the required environment variables:
Run the remaining Cosmovisor commands in the same shell session so these environment variables remain available.
Download the required Shardeum binaries from the official releases:
Important: Use the current
v1.0.2binary from the official release. An earlierv1.0.2binary published before October 16, 2026 cannot replay Shardeum mainnet from genesis.
Verify the SHA-256 checksums:
Both commands should return OK.
Make the binaries executable:
Initialize Cosmovisor with v1.0.2 as the genesis binary:
Add v1.1.0 using the exact upgrade name:
Verify that both binaries are in place:
Cosmovisor starts with v1.0.2. When the node reaches the upgrade at height 7,927,860, it detects the onchain upgrade and switches to v1.1.0 automatically.
Start a Genesis Sync With Cosmovisor
If you followed the genesis-sync instructions above, start the node through Cosmovisor:
Start the Node Normally
If you skipped the genesis-sync section because your node is already past the latest upgrade height or you restored from a compatible post-upgrade snapshot, start the node normally:
Monitor:
Or
Wait until the node is fully synced.
9. Optional: Enable gRPC & REST Endpoints
Edit:
$HOME/.mainnet/$NODE_ID/config/app.toml
Under the existing [grpc] section, set:
Under the existing [api] section, set:
Enable these only if required by your infrastructure. Restart the node after making changes.
10. Firewall Configuration
Before enabling UFW, allow SSH access so you do not lock yourself out of the server:
Allow P2P traffic:
Allow the RPC endpoints required for your deployment:
If you enabled the optional gRPC or REST endpoints, also allow:
Then enable and check the firewall:
Do not expose port 26657 (CometBFT RPC) publicly. Restrict sensitive endpoints to localhost or trusted systems, and protect public RPC endpoints with suitable rate limiting and reverse-proxy controls.
11. systemd Service (Recommended)
A systemd service can automatically restart the RPC node and simplify node management.
Check the installed binary paths:
Create the service file:
Choose one of the following service configurations depending on how the node was started.
The examples below assume the node was installed and initialized as the root user. If you used another system user, replace User=root, /root/.mainnet/rpcnode, and /root/go/bin with the corresponding user and paths.
Standard systemd Service
Use this configuration if the node is running directly with shardeumd.
Replace <shardeumd-binary-path> with the path returned by:
systemd Service With Cosmovisor
If you followed the genesis-sync instructions and configured Cosmovisor, use this configuration instead.
Replace <cosmovisor-binary-path> with:
If the node is already running from the previous section, stop the manually started process before starting it through systemd.
Then:
View logs:
12. Scaling RPC Nodes (Optional)
For high-traffic dApps:
- Use load balancers such as Nginx, HAProxy, or AWS ELB
- Run multiple RPC nodes behind a reverse proxy
- Rate-limit requests to avoid overload
- Separate public RPC from private infrastructure 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