Running a
Sunima Chain Validator
This guide walks you through setting up a full validator node on the Sunima Chain testnet — a sovereign Cosmos SDK + CometBFT chain. Validators propose and sign blocks, earn staking rewards, and form the decentralised foundation of the network.
curl -fsSL https://sunima.uk/install/operator.sh | ROLE=cpu bash
1. What your node does
A Sunima Chain validator node runs the full Cosmos SDK application state machine and the CometBFT consensus engine. It:
- Receives and validates transactions from the mempool
- Participates in BFT consensus rounds — proposing and pre-voting blocks
- Signs committed blocks with its consensus key (ed25519)
- Earns staking rewards proportional to bonded stake
A BFT chain needs at least four validators to tolerate one Byzantine fault. With a healthy multi-validator set the chain keeps producing blocks even if some validators go offline.
2. System requirements
Sunima has three node tiers. Each plays a different role and has different hardware needs.
Tier 1 — Validator
Participates in BFT consensus. Proposes and signs blocks (ed25519 — pure CPU work, no GPU needed). Runs the CURARE rule-based runtime sensor alongside the chain daemon. This is the role that secures the network.
| Component | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 LTS x86-64 | Ubuntu 24.04 LTS x86-64 |
| CPU | 16 cores | 24+ cores |
| RAM | 32 GB | 64+ GB |
| Disk | 1 TB NVMe SSD | 2 TB NVMe SSD |
| Network | 100 Mbit, static public IP, outbound TCP 26656 | 1 Gbit, dedicated |
| GPU | Not required | |
| Reference class | Dedicated-CPU VPS (~€45/mo) | Dedicated-CPU or bare-metal (~€60-90/mo) |
Tier 2 — GPU Worker (intake closed)
Performs encrypted computation off-chain and signs attestations. Not part of consensus. These workers are protocol-operated and are not currently a paid role: the gas-fee split pays burn, the validator set, and the protocol treasury — it has no compute channel, so accelerator hardware earns no fee income on this network. We are not asking anyone to buy a card against revenue that does not exist, so this tier is not open for applications. Tier 1 below is open and needs no GPU.
Tier 3 — RPC / Full Node
Serves API requests (read-only queries: balances, history, staking info). Keeps a full copy of chain history. Not a validator — does not participate in consensus, does not sign blocks, no stake required. Useful for integrators (wallets, exchanges, block explorers) and the wider community.
| Component | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 LTS x86-64 / arm64, macOS (Apple Silicon), Windows WSL2 | Ubuntu 24.04 LTS |
| CPU | 8 cores | 12+ cores |
| RAM | 16 GB | 32 GB |
| Disk | 500 GB SSD | 1 TB NVMe SSD (chain history grows ~1 GB/day at 1M users) |
| Network | 100 Mbit | 1 Gbit |
| GPU | Not required | |
Tier comparison: Tier 1 (Validator) is the only tier with stake, slashing, and staking rewards — and the only tier the gas-fee split pays. Tier 2 (GPU Worker) is protocol-operated and earns nothing from fees; intake is closed. Tier 3 (RPC) operates on volunteer or service-provider basis (no native rewards). On testnet all tokens are non-transferable test tokens with no monetary value.
3. Downloads
Download the pre-built binary for your operating system and the genesis file.
Build: sunima-8081-2 · 162 MB · build 2026-09-21 (current)
| Platform | Binary | SHA-256 |
|---|---|---|
| Linux x86-64 | sunimad-linux-amd64 | .sha256 |
| macOS Apple Silicon (M1/M2/M3/M4) | sunimad-darwin-arm64 | .sha256 |
| Windows | Use WSL2 and the Linux x86-64 binary | |
Every binary is signed with a Sunima release key. Verify the signature after download (the public key is pinned in Architecture → Trusted Build):
# 1. Download the binary + sha256 + minisig curl -LO https://sunima.uk/chain/sunimad-linux-amd64 curl -LO https://sunima.uk/chain/sunimad-linux-amd64.sha256 curl -LO https://sunima.uk/chain/sunimad-linux-amd64.minisig # 2. Check sha256 sha256sum -c sunimad-linux-amd64.sha256 # 3. Verify minisign signature (requires `brew install minisign`) minisign -V -p <sunima-release.pub> -m sunimad-linux-amd64
Also download the genesis file:
curl -LO https://sunima.uk/chain/genesis.json curl -LO https://sunima.uk/chain/genesis.json.sha256 curl -LO https://sunima.uk/chain/genesis.json.minisig sha256sum -c genesis.json.sha256 minisign -V -p <sunima-release.pub> -m genesis.json
Also download the genesis file:
curl -LO https://sunima.uk/chain/genesis.json
4. Initialise
Replace my-validator with your preferred moniker (display name).
# Make the binary executable chmod +x sunimad-linux-amd64 # or sunimad-darwin-arm64 mv sunimad-linux-amd64 sunimad # rename for convenience # Initialise node (creates ~/.sunima/) ./sunimad init my-validator --chain-id sunima_8081-2 # Install the genesis file cp genesis.json ~/.sunima/config/genesis.json
~/.sunima/ — not ~/.sunimad/. Double-check paths if you get "no such file or directory" errors.
5. Configure
Set the seed peer and gas price in your node's config files.
Binary
Pre-built Linux binary (amd64):
curl -fsSL https://sunima.uk/chain/sunimad-linux-amd64 -o sunimad chmod +x sunimad echo "f441550625d0256b90275db53763a7efc4736b46d5c8a2f30b2bc175095eef37 sunimad" | sha256sum -c -
Verified release: current (2026-09-21). Checksum (SHA-256): f441550625d0256b90275db53763a7efc4736b46d5c8a2f30b2bc175095eef37
Seed peer — ~/.sunima/config/config.toml
Replace the persistent_peers line. The active seed (mainnet-grade, sunima-8081-2 testnet) is reachable at:
SENTRY="[email protected]:26656" sed -i "s|^persistent_peers = .*|persistent_peers = \"$SENTRY\"|" ~/.sunima/config/config.toml sed -i "s|^seeds = .*|seeds = \"$SENTRY\"|" ~/.sunima/config/config.toml sed -i "s|^pex = .*|pex = true|" ~/.sunima/config/config.toml
Ask the operator for the current <node-id> — it rotates when a seed is rebuilt. If you are the operator yourself, run ./sunimad tendermint show-node-id on your seed to fill the slot.
seed.sunima.uk is currently not provisioned (single-host testnet — three nodes co-located on the operator's Mac). It comes online when the network opens to external operators (target: 4+ bonded validators). Until then, ask the operator for a direct IP + port to peer with, or use the operator's public node at 150.241.70.52:26656 if port 26656 is forwarded.
allow_duplicate_ip = true under the [p2p] section of config.toml on the seed node.
6. Start the node
Run the node. It will connect to the seed peer and sync the chain.
# Foreground (Ctrl-C to stop) ./sunimad start --minimum-gas-prices="1000000000asuna" # Background — persists after terminal close nohup ./sunimad start --minimum-gas-prices="1000000000asuna" > sunimad.log 2>&1 & disown
Tail the log to watch sync progress:
tail -f sunimad.log
You will see lines like received proposal … height=1234 and committed state … height=1234 as the node catches up. Wait until the height matches the live network height before proceeding.
7. Become a validator
The installer script handles the entire validator lifecycle automatically: it downloads the binary and native library, installs genesis and the confidential-layer artifacts, seeds peers, creates your account key, requests a starter stake from the on-chain faucet, registers the operator, submits create-validator, and starts the node in the background.
curl -fsSL https://sunima.uk/install/operator.sh | ROLE=cpu bash
The script prints your sunima1… address and a 24-word mnemonic when done.
7a. Starter stake — automatic
The installer requests your starter stake from the on-chain faucet automatically and waits for it to confirm before bonding. No manual request is needed. The faucet is rate-limited per network address.
7b. Manual create-validator (advanced)
The installer already submits this for you. If you configured the node by hand and want to bond manually, run (replace my-key with the key name you chose):
./sunimad tx staking create-validator validator.json \ --from=my-key \ --keyring-backend=test \ --chain-id=sunima_8081-2 \ --node=http://localhost:26657 \ --fees=2000000000asuna \ --gas=300000 \ --yes
validator.json automatically with the correct key type. If you edit it manually, use ./sunimad tendermint show-validator — not keys show.
After one block your validator appears on the Network page with status Bonded.
8. Monitoring
Check your node's sync status and peer count via the local RPC:
# Sync status curl -s http://localhost:26657/status | python3 -m json.tool | grep -E "latest_block_height|catching_up" # Peer count curl -s http://localhost:26657/net_info | python3 -m json.tool | grep n_peers
The live network dashboard shows all bonded validators, block height, and stake in real time:
9. Troubleshooting
| Error | Cause | Fix |
|---|---|---|
failed to initialize database: resource temporarily unavailable |
Another sunimad process is already running and holds the DB lock | Run sudo pkill -f sunimad, delete any stale lock files with find ~/.sunima/data -name LOCK -delete, then restart |
auth failure: secret conn failed |
Connecting from the same external IP as another validator (NAT) | Add allow_duplicate_ip = true under [p2p] in the seed node's config.toml and restart it |
validator pubkey type is not supported |
Used the account key (secp256k1) instead of the consensus key (ed25519) in validator.json | Replace pubkey with the output of ./sunimad tendermint show-validator |
persistent_peers not connecting (timeout) |
Port 26656 blocked by firewall | Allow outbound TCP 26656 in your firewall / router. On Linux: ufw allow 26656/tcp |
| genesis.json path error on curl | Wrong home directory path (~/.sunimad vs ~/.sunima) |
The home directory is ~/.sunima/ (no trailing 'd'). Use ~/.sunima/config/genesis.json |