Run a Full Node
A full node verifies blocks, relays network data, and can optionally serve RPC endpoints for developers, dApps, and testing environments. Full nodes do not participate in consensus and do not require staking or validator setup.
Ensure you are using the correct testnet configuration, including chain ID, genesis file, and peers. Incorrect values may prevent your node from syncing.
1. System Requirements
Recommended:
- OS: Ubuntu 22.04 LTS
- CPU: 4 cores
- RAM: 8–16 GB
- Storage: 500 GB+ NVMe SSD
- Network: 100 Mbps
- Dependencies: git, jq, curl, make, build-essential, pkg-config
- Go: v1.25+
Install dependencies:
Install Go
Fetch the latest release tags and check out the currently supported testnet release:
Add the Go bin directory to PATH:
Verify the installation:
3. Environment Variables
4. Initialize the Node
Choose a node ID and moniker (ASCII only):
5. Copy Genesis File
6. Configure Pruning
Full nodes can use pruning to manage storage usage.
Default configuration is:
If you prefer custom pruning:
If you require complete historical state, run an Archive Node instead using:
7. Start and Sync the Node
Start:
Note: Initial sync may take time depending on your hardware and network conditions.
Monitor:
Or tail the log:
Wait until fully synced.
Ensure your node is connected to peers. Without peers, the node will not sync. Refer to the repository or official documentation for the latest seeds or peer configuration.
8. Optional: Run as systemd Service
Check the installed Shardeum binary path:
Create the service file:
Example:
Replace <shardeumd-binary-path> with the path returned by command -v shardeumd, <node-id> with the node ID configured earlier, and use the same testnet seed list specified in the startup instructions above.
Reload systemd, then enable and start the service:
9. Optional: Enable JSON-RPC
Edit: $HOME/.testnet/$NODE_ID/config/app.toml
If the node is already running as a systemd service, restart it for the changes to take effect:
10. Firewall Configuration
For public exposure, restrict JSON-RPC access to trusted IPs or use a reverse proxy.
11. Node Management Commands
Sync Status
Node ID
Check Peers
Logs
Or
Stop Node
If you started the node manually instead:
12. Troubleshooting
Node Won’t Sync
- Check peer connections
- Verify testnet chain ID and genesis file
- Ensure correct network configuration
- Verify time sync (NTP):
timedatectl status - Check port 27656 is open
Out of Disk Space
- Enable pruning in
app.toml - Increase disk size
- Avoid archive mode unless required
JSON-RPC Not Responding
- Check firewall rules
- Verify JSON-RPC settings
- Confirm node is fully synced
- Restart node/service
13. Important Notes
- Testnet Chain ID:
shardeum-testnet - EVM Chain ID:
8119 - Network: Shardeum EVM Testnet (configuration may change)
- Genesis File: Use the testnet genesis file included with the supported release.
- Archive Mode: Use
pruning = "nothing"only when complete historical state is required. - Backups: Back up
node_key.jsonsecurely. - Testnet configuration may change between testnet phases.
Full Node Setup Complete
Your Shardeum testnet full node is now configured and syncing with the network. Once fully synced, you can use it for network testing, infrastructure experiments, and optionally serving RPC interfaces.