DOCS / OPERATIONS / RUN A VALIDATOR

Run a validator

Validators produce blocks, vote on finality, and receive 100 % of transaction fees plus a share of inflation rewards. The slot-leader rotation is deterministic — every validator gets a turn.

Hardware sizing

ResourceMinimumRecommended
CPU4 cores x86-64 with SHA-NI8 cores
RAM4 GB8 GB
Disk100 GB SSD500 GB NVMe
Network100 Mbit/s symmetric1 Gbit/s
Latency to peers< 200 ms< 80 ms
OSLinux x86-64 (glibc ≥ 2.31)Ubuntu 22.04 LTS

Observed RSS plateau at ~290 MB per node across 4-h soaks at 10 TPS sustained + 5 K-50 K bursts. Scales sub-linearly with chain size on disk.

Becoming a validator

1 · Generate the validator key

./shardo-wallet --key-file validator.key keygen
./shardo-wallet --key-file validator.key pubkey
# → 0x59243b8c77659b8d...

2 · Stake the minimum

./shardo-wallet --key-file validator.key \
    --rpc-url http://your-node:8547 --chain-id 590 \
    stake 100000 --wait

3 · Apply to join the active set

./shardo-wallet --key-file validator.key \
    validator-apply \
        --pubkey 0xYOUR_VALIDATOR_PUBKEY \
        --stake 100000 \
        --wait
# → application TX hash

4 · Wait for governance vote

Existing validators must approve. Once 2f+1 approvals land, you're activated at the next epoch transition (~30 min on mainnet).

5 · Boot the node

./shardo-node \
    --network testnet \
    --validator \
    --validator-key /path/to/validator.key \
    --genesis /path/to/genesis-testnet.json \
    --data-dir /var/lib/shardochain \
    --external-ip YOUR_PUBLIC_IP \
    --p2p-port 30303 \
    --bootstrap "/ip4/51.178.27.105/udp/30303/quic-v1/p2p/12D3KooW..." \
    --log-level info

systemd unit

[Unit]
Description=ShardoChain Validator Node
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=shardochain
WorkingDirectory=/opt/shardochain
ExecStart=/opt/shardochain/shardo-node \
    --network testnet \
    --validator \
    --validator-key /opt/shardochain/keys/validator.key \
    --genesis /opt/shardochain/config/genesis.json \
    --data-dir /var/lib/shardochain \
    --external-ip YOUR_IP \
    --p2p-port 30303 \
    --log-level info
Restart=always
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Monitoring

The Prometheus metrics endpoint is on :9100. Key gauges to alert on:

Slashing

Rewards

Cross-DC operations (observed)

The current testnet runs N=7 across 4 OVH datacenters with cross-DC RTT 30-80 ms. Documented behaviour: