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
2. Install Shardeum Node Binary
Clone the Shardeum EVM repository:
Fetch the latest release tags and check out the currently supported testnet release:
Replace <supported-testnet-release> with the release tag currently supported for Shardeum testnet.
Build and install the binary (may take several minutes):
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
Verify the genesis file:
The expected chain ID is:
6. Configure Pruning
Full nodes can use pruning to manage storage usage.
Edit:
$HOME/.testnet/$NODE_ID/config/app.toml
The 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:
The example below assumes the node was installed and initialized as the
rootuser. If you used another system user, replaceUser=rootand/root/.testnet/<node-id>with the corresponding user and node-home path.
Example:
Replace <shardeumd-binary-path> with the path returned by command -v shardeumd and <node-id> with the node ID configured earlier.
If the node is already running from the manual startup command above, stop that process before starting it through systemd.
Reload systemd, then enable and start the service:
9. Optional: Enable JSON-RPC
Edit:
$HOME/.testnet/$NODE_ID/config/app.toml
Under the existing [json-rpc] section, set:
Restart the node after saving the changes.
If using systemd:
10. Firewall Configuration
Before enabling UFW, allow SSH access so you do not lock yourself out:
Allow P2P traffic:
If this node is intentionally serving public JSON-RPC, also allow:
Then enable and check the firewall:
Only expose JSON-RPC publicly when required. Restrict access where appropriate and use suitable rate limiting and reverse-proxy protections for public RPC services.
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.