daitchain

Run a validator

A DAIT validator runs daitd, signs blocks, and earns 30 percent of block rewards weighted by the PoUW credits delegated to it. Self-bond floor is 369,000 DAIT. The active set is 189 out of a 999-slot standby pool with epoch rotation every 9 epochs.

Hardware

ComponentMinimumNotes
CPU16 vCPU, modern x86_64Block-STM benefits from cores; 32 vCPU recommended once parallel EVM workloads pick up
RAM64 GB minimum, 128 GB recommendedState growth + mempool + Block-STM scratch space
Disk4 TB NVMe Gen4Pruned-everything ~600 GB at year 1; archive nodes need 5x
Network1 Gbps symmetric, sub-150ms p99 to peers189-validator BFT signature aggregation is latency-bound
OSUbuntu 22.04+ or RHEL 9systemd unit shipped in scripts/systemd/

Stake and rewards

Self-bond floor is 369,000 DAIT. Standard Cosmos delegation is enabled, so validators may accept additional delegated stake; commission rate is set at create-validator time and adjustable on a 24h cooldown.

Reward weighting: each validator's share of the 30% validator pool is proportional to effective_stake_v, defined as:

effective_stake_v = stake_v * (1 + alpha * min(credits_v / stake_v, K))
defaults: alpha = 1.0, K = 4.0

credits_v is the sum of decayed PoUW credits delegated to validator v by hosts. Hosts choose which validator to delegate their credits to; this is a separate axis from token delegation.

Setup

# 1. Init
daitd init my-validator --chain-id dait_4090-1

# 2. Pull the canonical genesis (devnet path shown)
curl -L https://daitchain.io/devnet/genesis.json > ~/.daitd/config/genesis.json

# 3. Configure peers (substitute real seeds when devnet is live)
sed -i 's/^seeds = .*/seeds = "node1@host1:26656,node2@host2:26656"/' \
  ~/.daitd/config/config.toml

# 4. Start under systemd
sudo systemctl enable --now daitd

# 5. Once syncing has caught up, create the validator
daitd tx staking create-validator \
  --moniker my-validator \
  --pubkey "$(daitd tendermint show-validator)" \
  --amount 369000000000udait \
  --commission-rate 0.05 \
  --commission-max-rate 0.20 \
  --commission-max-change-rate 0.01 \
  --min-self-delegation 369000000000 \
  --chain-id dait_4090-1 \
  --from operator-key

State sync

State sync is enabled by default with a snapshot interval of 6,000 blocks. New validators can join the chain in roughly the time it takes to download one snapshot rather than the full block history.

[statesync]
enable = true
rpc_servers = "https://rpc.daitchain.io:443,https://rpc-2.daitchain.io:443"
trust_height = 100000
trust_hash = "ABCD..."
trust_period = "168h"

Slashing

OffensePenaltyWindow
Missed blocks > 5% of signed-blocks-window1% slash + jail10,000 blocks
Double sign (equivocation)5% slash + permanent jailn/a
Bad TEE attestation forwarded via vote extension100% slashper offense

Operational checklist

See also