Guide 8 of 9

Nodes, staking and rewards

Service-node economics, uptime proofs, slashing, and the client-reward module in real numbers.

8

The network: nodes, staking and rewards

Two separate reward systems run on the chain: one pays the operators who run the relay infrastructure, and one pays ordinary users for messaging activity. They are governed by different modules and different numbers.

Service nodes. A service node runs the vendored CometBFT fork, holds a share of the message pool, floods ciphertext to its peers, and answers client gRPC requests - it is the infrastructure described in the architecture guide, with a stake attached. Registering one requires a minimum stake of 10,000,000 DCHAT; the operator must personally supply at least a quarter of that, and up to 10 contributors can co-stake the remainder, with the operator taking a configurable fee out of rewards. Nodes send a heartbeat every 300 seconds and unstaking triggers a 7-day unbonding period before funds are liquid again. Reward epochs run every 100 blocks paid out from a daily pool fraction of 0.151, with a 5% slash and a 720-block jail for a node that fails its uptime checks; a node coming down for planned maintenance instead gets a decommission credit starting at 240 blocks (roughly two hours), extendable to 2,880 (roughly 48 hours). Uptime itself is proven, not merely claimed: a deterministic quorum of 10 verifier nodes seeded by the block's AppHash so no one can pick their own verifiers, probes every 720 blocks with a 4-second timeout, and at least 7 of the 10 must agree a node responded, signed with that node's own registered key.

Client rewards ("message mining"). Ordinary users can earn DCHAT for messaging activity, gated behind a bound proof-of-humanity nullifier (World ID, BrightID or Gitcoin) so the pool pays real distinct people rather than one wallet farming itself. The daily cap is 100 DCHAT reduced to 10 DCHAT for a new user's first 14 days after verification. Counting is per sender-recipient pair, capped at 20 messages per epoch and 100 per day for any one pair, and an unacknowledged message event is dropped from consideration after 14 days. A claim matures for 7 days before it can be collected, referrals mature over 14 days and only one claim per day is allowed. Referrals pay 5 DCHAT each, capped at 50 referrals total. A messaging streak of at least 5 messages/day builds a multiplier of 1 + min(streakDays × 0.02, 0.50) topping out at 1.50× at 25 days. The reward pool itself pays out roughly 0.0274% of its balance per day. Worth disclosing rather than implying otherwise: the epoch reward math hardcodes that 0.151 daily fraction and a 6-second block-time assumption rather than reading a governance parameter, so these are fixed constants today, not something a governance vote can currently retune.

The network's token is udchat at the base, 6 decimals (1 DCHAT = 1,000,000 udchat), always displayed to users as "DChat." Sending a transaction offers three gas-price tiers - 0, 0.025 and 0.04 udchat per unit of gas - with the app simulating gas first and adding headroom on top of the estimate.

Related: FAQ - running a service node · FAQ - message mining and rewards