ShardeumShardeum Logo
Connect to ShardeumDelegate NowGithubPartnership EnquiriesTestnet Quickstart
Shardeum Documentation
Shardeum Documentation
Shardeum Documentation
What is Shardeum?Network Endpoints & ExplorerEVM Overview
Supported Wallets
Developers
Testnet Quickstart
Deploy Smart Contracts
Deploy dApps
JSON-RPC GuideNetwork InterfacesIntegration & Tools
Node TypesRun a Full NodeRun a Validator NodeAdvanced OperationsRun an RPC NodeDelegate SHM
Node Setup OverviewRun an RPC NodeRun a Full NodeRun a Validator Node
Ecosystem
Houdini SwapNordstern.Finance
Run a Node on Mainnet

Run a Full 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

A full node verifies blocks, relays network data, and can optionally serve RPC endpoints for dApps and infrastructure partners. Full nodes do not participate in consensus and do not require staking.

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:

sudo apt update
sudo apt install git jq curl make build-essential pkg-config -y

Install Go:

curl -LO https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
go version

2. Install Shardeum Node Binary

git clone https://github.com/shardeum/shardeum-evm.git
cd shardeum-evm
git fetch --tags
git checkout v1.1.0
make install

Add the Go bin directory to PATH:

echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc

Verify the installation:

shardeumd version
command -v shardeumd

3. Environment Variables

export SHARDEUM_CONFIG_DIR="$PWD/config"
export SHARDEUM_NETWORK=mainnet
export BINARY=$(command -v shardeumd)

4. Initialize the Node

Choose a node ID and moniker (ASCII only):

NODE_ID="node0"
MONIKER="shardeum-fullnode"
 
shardeumd init "$MONIKER" \
  --chain-id shardeum_8118-1 \
  --home $HOME/.mainnet/$NODE_ID \
  --overwrite

5. Copy Genesis File

cp config/mainnet-genesis.json $HOME/.mainnet/$NODE_ID/config/genesis.json
ls -lh $HOME/.mainnet/$NODE_ID/config/genesis.json
jq -r '.chain_id' $HOME/.mainnet/$NODE_ID/config/genesis.json

6. 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.2 to sync from genesis until the upgrade at height 7,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:

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
 
export PATH=$PATH:$HOME/go/bin
 
cosmovisor version

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:

export DAEMON_NAME=shardeumd
export DAEMON_HOME="$HOME/.mainnet/$NODE_ID"
export DAEMON_ALLOW_DOWNLOAD_BINARIES=false
export DAEMON_RESTART_AFTER_UPGRADE=true

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.2 binary from the official release. An earlier v1.0.2 binary published before October 16, 2026 cannot replay Shardeum mainnet from genesis.

mkdir -p "$HOME/shardeum-binaries"
cd "$HOME/shardeum-binaries"
 
curl -L \
  -o shardeumd-v1.0.2-linux-amd64 \
  https://github.com/shardeum/shardeum-evm/releases/download/v1.0.2/shardeumd-v1.0.2-linux-amd64
 
curl -L \
  -o shardeumd-v1.1.0-linux-amd64 \
  https://github.com/shardeum/shardeum-evm/releases/download/v1.1.0/shardeumd-v1.1.0-linux-amd64

Verify the SHA-256 checksums:

echo "1b57360a1d9ad340e396105521e19237cea5d162cc68eb265f00b1fe206d8849  shardeumd-v1.0.2-linux-amd64" | sha256sum -c -
 
echo "08cf7e6a7381bc8ffabaf265a2571304353409d85a7504f3d96fcfb0b2240f89  shardeumd-v1.1.0-linux-amd64" | sha256sum -c -

Both commands should return OK.

Make the binaries executable:

chmod +x shardeumd-v1.0.2-linux-amd64
chmod +x shardeumd-v1.1.0-linux-amd64

Initialize Cosmovisor with v1.0.2 as the genesis binary:

cosmovisor init "$HOME/shardeum-binaries/shardeumd-v1.0.2-linux-amd64"

Add v1.1.0 using the exact upgrade name:

cosmovisor add-upgrade \
  v0.4.0-to-v0.6.3 \
  "$HOME/shardeum-binaries/shardeumd-v1.1.0-linux-amd64"

Verify that both binaries are in place:

"$DAEMON_HOME/cosmovisor/genesis/bin/shardeumd" version
 
"$DAEMON_HOME/cosmovisor/upgrades/v0.4.0-to-v0.6.3/bin/shardeumd" version

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:

cosmovisor run start \
  --home $HOME/.mainnet/$NODE_ID \
  --chain-id shardeum_8118-1 \
  --p2p.seeds ab6c31d63a4a30918dea8d74fb0393e5e10477c4@34.93.180.93:27656,3c722839d9745fc13df16cdfe0eb53f219a30949@34.14.143.72:27656 \
  --p2p.laddr tcp://0.0.0.0:27656 \
  --rpc.laddr tcp://127.0.0.1:26657 \
  > $HOME/.mainnet/$NODE_ID/node.log &

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:

shardeumd start \
  --home $HOME/.mainnet/$NODE_ID \
  --chain-id shardeum_8118-1 \
  --p2p.seeds ab6c31d63a4a30918dea8d74fb0393e5e10477c4@34.93.180.93:27656,3c722839d9745fc13df16cdfe0eb53f219a30949@34.14.143.72:27656 \
  --p2p.laddr tcp://0.0.0.0:27656 \
  --rpc.laddr tcp://127.0.0.1:26657 \
  > $HOME/.mainnet/$NODE_ID/node.log &

Monitor:

shardeumd status --home $HOME/.mainnet/$NODE_ID | jq '.SyncInfo'

Or tail the log:

tail -f $HOME/.mainnet/$NODE_ID/node.log

Sync is complete when block height matches the explorer.

7. Optional: Run as systemd Service

A systemd service can automatically restart the node and simplify node management.

Check the installed binary paths:

command -v shardeumd
command -v cosmovisor

Create the service file:

sudo nano /etc/systemd/system/shardeumd.service

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/node0, and /root/go/bin with the corresponding user and paths.

Standard systemd Service

Use this configuration if the node is running directly with shardeumd.

[Unit]
Description=Shardeum Full Node
After=network-online.target
 
[Service]
User=root
ExecStart=<shardeumd-binary-path> start \
  --home /root/.mainnet/node0 \
  --chain-id shardeum_8118-1 \
  --p2p.seeds ab6c31d63a4a30918dea8d74fb0393e5e10477c4@34.93.180.93:27656,3c722839d9745fc13df16cdfe0eb53f219a30949@34.14.143.72:27656 \
  --p2p.laddr tcp://0.0.0.0:27656 \
  --rpc.laddr tcp://127.0.0.1:26657
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
 
[Install]
WantedBy=multi-user.target

Replace <shardeumd-binary-path> with the path returned by:

command -v shardeumd

If you used a different node ID, replace node0 with that node ID.

systemd Service With Cosmovisor

If you followed the genesis-sync instructions in the previous section and configured Cosmovisor, use this service configuration instead of the standard configuration above.

[Unit]
Description=Shardeum Full Node
After=network-online.target
 
[Service]
User=root
Environment="DAEMON_NAME=shardeumd"
Environment="DAEMON_HOME=/root/.mainnet/node0"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/go/bin"
ExecStart=<cosmovisor-binary-path> run start \
  --home /root/.mainnet/node0 \
  --chain-id shardeum_8118-1 \
  --p2p.seeds ab6c31d63a4a30918dea8d74fb0393e5e10477c4@34.93.180.93:27656,3c722839d9745fc13df16cdfe0eb53f219a30949@34.14.143.72:27656 \
  --p2p.laddr tcp://0.0.0.0:27656 \
  --rpc.laddr tcp://127.0.0.1:26657
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
 
[Install]
WantedBy=multi-user.target

Replace <cosmovisor-binary-path> with the path returned by:

command -v cosmovisor

If you used a different node ID, replace node0 in both DAEMON_HOME and --home.

If the node is already running from the previous section, stop the manually started process before starting it through systemd.

After saving the applicable service configuration, reload systemd and enable the service:

sudo systemctl daemon-reload
sudo systemctl enable shardeumd
sudo systemctl start shardeumd
sudo systemctl status shardeumd

View the service logs with:

journalctl -u shardeumd -f

8. Optional: Enable JSON-RPC

Edit:

$HOME/.mainnet/$NODE_ID/config/app.toml

Enable:

json-rpc.enable = true
json-rpc.address = "0.0.0.0:8545"
json-rpc.ws-address = "0.0.0.0:8546"

Restart the node after saving the changes. If using systemd:

sudo systemctl restart shardeumd

9. Firewall Configuration

Before enabling UFW, allow SSH access:

sudo ufw allow OpenSSH

Allow P2P traffic:

sudo ufw allow 27656/tcp

If this node is intentionally serving public JSON-RPC, also allow:

sudo ufw allow 8545/tcp   # JSON-RPC
sudo ufw allow 8546/tcp   # WebSocket

Then enable and check the firewall:

sudo ufw enable
sudo ufw status

Only expose JSON-RPC publicly when required. For production RPC services, restrict access where appropriate and use suitable rate limiting and reverse-proxy protections.

10. Optional: Pruning Settings

Full nodes can reduce storage usage.

Edit app.toml:

pruning = "default"

Or for higher performance:

pruning = "custom"
pruning-keep-recent = "10000"
pruning-interval = "50"

Restart node after making changes.

11. Node Management Commands

Checking Node Status

Sync status:

shardeumd status --home $HOME/.mainnet/$NODE_ID | jq '.SyncInfo'

Node ID:

shardeumd comet show-node-id --home $HOME/.mainnet/$NODE_ID

Check peers:

curl -s http://localhost:26657/net_info | jq '.result'
curl -s http://localhost:26657/net_info | jq '.result.n_peers'

Check logs:

journalctl -u shardeumd -f

Or if running without systemd:

tail -f $HOME/.mainnet/$NODE_ID/node.log

Account and Balance Management

List all keys:

shardeumd keys list

Account balance:

shardeumd query bank balances <address>

Stopping the Node

If running shardeumd directly:

pkill shardeumd

If running through Cosmovisor manually:

pkill cosmovisor

If using systemd:

sudo systemctl stop shardeumd

12. Troubleshooting

Node Won't Sync

Check peer connections:

shardeumd status --home $HOME/.mainnet/$NODE_ID | jq '.SyncInfo.latest_block_height'
curl -s http://localhost:26657/net_info | jq '.result.n_peers'

Common fixes:

  • Verify the seed list in the node start command or systemd service configuration.
  • Try adding more persistent peers
  • Check your time sync (NTP): timedatectl status
  • Check port 27656 is open

Out of Disk Space

Check disk usage:

df -h

Solutions:

  • For full nodes: Enable pruning in app.toml:
    pruning = "default"
  • Or use custom pruning:
    pruning = "custom"
    pruning-keep-recent = "10000"
    pruning-interval = "50"
  • Increase disk space

Important: If running as Archive Node with --pruning nothing , you need adequate storage for complete history.

RPC Not Responding

  • Check firewall rules: sudo ufw status
  • Verify RPC enabled in app.toml
  • Confirm bind address is correct (0.0.0.0:8545 for external access)
  • Check node is fully synced
  • Restart the service: sudo systemctl restart shardeumd

13. Important Notes

  • Chain ID: shardeum_8118-1 (mainnet)
  • EVM Chain ID: 8118 (hex: 0x1fb6) for MetaMask and EVM interactions
  • Unbonding Period: 21 days (if you later become a validator)
  • Archive Node: Use --pruning nothing flag to maintain complete history
  • Backups: Always back up node_key.json securely

Full Node Complete

Your Shardeum full node is now running and contributing to network decentralization.

You may proceed to:

  • Promote it to a validator, or
  • Enable RPC for dApps, or
  • Pair with a sentry node for validator security

Previous

Node Types

Next

Run a Validator Node

On this page

1. System RequirementsInstall dependencies:Install Go:2. Install Shardeum Node Binary3. Environment Variables4. Initialize the Node5. Copy Genesis File6. Start and Sync the NodeBefore You Start: Syncing a New Node From Genesis After a State-Breaking UpgradeSet Up Cosmovisor and the Required BinariesStart a Genesis Sync With CosmovisorStart the Node Normally7. Optional: Run as systemd ServiceStandard systemd Servicesystemd Service With Cosmovisor8. Optional: Enable JSON-RPC9. Firewall Configuration10. Optional: Pruning Settings11. Node Management CommandsChecking Node StatusAccount and Balance ManagementStopping the Node12. TroubleshootingNode Won't SyncOut of Disk SpaceRPC Not Responding13. Important NotesFull Node Complete

Footer

Company name

EVM L1 for Real-World Asset Tokenization

© 2026 Shardeum, Inc. All rights reserved.

XGitHubYouTube

General

  • Home
  • Ecosystem
  • Testnet Quickstart
  • Blog

Community

  • Telegram
  • Discord
  • Twitter
  • GitHub

Resources

  • Explorer
  • Whitepaper
  • FAQs
  • Brand Assets
  • Public Drive

Contact

  • General Enquiries
  • Partnership Enquiries
  • Report Bugs
  • Report Security Issue