Running Your Own RPC Node
This tutorial will guide you through the process of setting up and running your own Remote Procedure Call (RPC) node for Status Network. By running your own RPC node, you can gain greater control over your interactions with the Status Network, enhance privacy, and reduce reliance on third-party services.
Getting Startedβ
The Status Network RPC Tools repository provides all the necessary tooling, genesis files, and setup scripts to run your own RPC node.
Complete Setup Guideβ
For detailed setup instructions, prerequisites, system requirements, and step-by-step guidance, please refer to the official README in the repository.
Node Optionsβ
The setup script provides two node implementations to choose from:
- Besu Node: Runs on port
8545(http://localhost:8545) - Geth Node: Runs on port
8445(http://localhost:8445)
You can run either one or both simultaneously depending on your needs.
Verifying Your Nodeβ
In the examples below, replace <YOUR_CLIENT_PORT> with 8545 if using Besu, or 8445 if using Geth.
Basic Verificationβ
Once your node is running, verify it's working correctly:
# You should receive a response with the current block number.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
http://localhost:<YOUR_CLIENT_PORT>
Health & Sync Verificationβ
For comprehensive node health checks:
# Check your node's syncing status. Returns false if the node is in sync.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' \
http://localhost:<YOUR_CLIENT_PORT>
# Verify your node's number of connected peers (should be > 0)
curl -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' \
http://localhost:<YOUR_CLIENT_PORT>
An up-to-date and healthy node should show:
eth_blockNumbermatches a trusted reference (like the public RPC or block explorer)eth_syncingreturnsfalse(fully synced)net_peerCountis greater than 0 (connected to peers)
WebSocket Supportβ
Your node also supports WebSocket connections for real-time event subscriptions:
# WebSocket endpoint
ws://localhost:8546 # Besu
ws://localhost:8446 # Geth
WebSocket Connectionβ
Example Subscriptionsβ
// Subscribe to new block headers
{"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}
// Subscribe to logs matching a filter
{"jsonrpc":"2.0","method":"eth_subscribe","params":["logs",{"address":"0x..."}],"id":1}
// Unsubscribe
{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x..."],"id":1}
Advanced Featuresβ
Batch Requestsβ
Your node supports batch JSON-RPC requests for improved efficiency:
- Default batch cap: 1,024 requests per batch
- Configuration: Tunable via
--rpc-http-max-batch-size(set to1for unlimited) - Max request size: 5 MB (default
--rpc-http-max-request-content-length)
Resource-Intensive Methodsβ
Be aware of methods that may require longer response times:
| Method | Response Time | Notes |
|---|---|---|
eth_getLogs (large ranges) | 200ms to several seconds | Use bounded ranges and bloom filters |
eth_estimateGas | 200ms to several seconds | May be slower under load or with complex contracts |
For production use, start with low-thousands read RPS and scale horizontally based on your specific workload and hardware tests.
Troubleshootingβ
Common Issuesβ
-
Port Already in Use
# Check what's using port 8545 (Besu) or 8445 (Geth)
lsof -i :8545
lsof -i :8445
# Kill the process if needed
kill -9 <PID> -
Docker Container Issues
# Check running containers
docker ps
# View container logs
docker compose logs -f
# Restart containers
docker compose restart -
Node Not Syncing
- Check your internet connection
- Verify you have sufficient disk space
- Check the Docker container logs:
docker compose logs - Ensure your system meets the minimum requirements
-
RPC Endpoint Not Responding
- Verify containers are running:
docker ps - Check firewall settings
- Ensure the RPC ports (8545, 8445) are accessible
- Review container logs for errors
- Verify containers are running:
Monitoring Your Nodeβ
# Check Docker containers status
docker compose ps
# Monitor container logs
docker compose logs -f
# Monitor disk usage
df -h
# Check network connections
netstat -tulpn | grep :8545
netstat -tulpn | grep :8445
Storage Planningβ
Disk Space Requirementsβ
Plan your storage capacity based on growth:
- Initial size: ~200 GB (after 6 months, ~12M transactions with 2s blocks)
- Growth rate: Moderate, depends on network activity
- Recommended: 2 TB Gen4 NVMe for headroom
Always provision extra storage capacity beyond the current requirement to ensure continued operation.
Security Considerationsβ
When running your own RPC node:
- Firewall Configuration: Only expose necessary ports (8545, 8445)
- Access Control: Consider implementing authentication for production use
- Network Isolation: Avoid exposing RPC endpoints directly to the internet
- Regular Updates: Keep your node software and Docker images updated
- Backup: Regularly backup your node configuration (data can be re-synced if needed)
- Rate Limiting: Implement rate limiting if exposing to multiple users
For production use, avoid relying on public RPC endpoints due to rate limits. Running your own private RPC node provides better reliability and performance.
Performance Optimizationβ
To optimize your RPC node performance:
- SSD Storage: Use Gen4 NVMe storage for better I/O performance
- Sufficient RAM: Ensure adequate memory for caching (32β48 GB recommended)
- Network Bandwidth: Stable 1+ Gbps connection for syncing and peer communication
- CPU Resources: Adequate processing power for transaction validation (8β12 cores recommended)
- Horizontal Scaling: For high-traffic applications, run multiple nodes behind a load balancer
Supportβ
If you encounter any issues:
- Check the official README for the latest updates
- Review our Network Details and docs in general
- Join our Telegram Community for support
Additional Resourcesβ
- Status Network RPC Tools Repository - Official repository with setup guide and scripts
- Status Network Documentation - Official docs
- Status Network Block Explorer - Sepolia testnet explorer