Skip to content

Staking & delegation ​

NRO can be put to work in two ways:

WhoWhat it does
Self-stakeA validator (.node), or any address that stakes for itselfGives consensus voting power (for .node) and governance voting weight; earns staking rewards
DelegationAny address, to a .node with active stakeEarns rewards at the base rate, minus the validator's commission

Every staking action is a signed operation: the node checks your signature on entry, and the change itself is applied in consensus on every validator.

Parameters ​

All of these are governance parameters; the defaults below are what a new chain starts with. The reward and lock timings are not final before launch and may change — read live values from GET /api/v1/governance/params before relying on them.

ParameterDefaultMeaning
min_stake10 000 NROMinimum stake, minimum delegation, and the price of a .node
unbonding_blocks1 512 000Bonding lock after staking or delegating (sized for about 7 days at 400 ms blocks). Env override: NEUROCHAIN_UNBONDING_BLOCKS
base_apy_bps1 200 (12%)Annual rate for stake and delegations
genesis_apy_bps2 400 (24%)Annual rate for validators staked at genesis
reward_interval_blocks216 000Blocks between payouts. Env override: NEUROCHAIN_REWARD_INTERVAL_BLOCKS
blocks_per_year78 840 000Blocks in a year at 400 ms, used to turn an annual rate into a per-block one
max_commission_bps2 000 (20%)Highest commission a validator may charge

Becoming a validator ​

  1. Register a .node name from your .human wallet. Registration debits min_stake and records it as the node's stake — see Addresses.
  2. Run a node with that identity and its ML-DSA-65 consensus key — see Run a node.
  3. Once its stake is at least min_stake and its consensus key is on chain, it joins the active set and starts proposing and voting. See Consensus → Validator set.

A validator can add stake later; each top-up raises the amount and restarts the bonding lock for the whole stake.

Bonding lock and withdrawing ​

Stake and delegations are locked for unbonding_blocks from the last time you added to them. After that:

  • Unstake returns the whole self-stake at once. For a .node, it goes back to the node's owner wallet.
  • Undelegate returns the whole delegation to that validator at once.

Partial withdrawals are not supported: withdraw and stake again with the amount you want to keep.

Rewards ​

Rewards are paid every reward_interval_blocks, straight to the staker's balance:

reward = amount × apy_bps / 10 000 × elapsed_blocks / blocks_per_year
  • apy_bps is genesis_apy_bps for genesis validators and base_apy_bps for everyone else.
  • elapsed_blocks is the number of blocks since the last payout, limited by a per-payout cap (MAX_REWARD_ELAPSED_BLOCKS) so a long gap cannot produce an outsized payout.
  • All arithmetic is in integers with 128-bit intermediates, so every validator computes exactly the same amount.

History and charts: GET /api/v1/staking/rewards/:address.

Delegation ​

RuleValue
Minimummin_stake (10 000 NRO by default)
TargetA .node that has active stake
Ratebase_apy_bps (genesis rate does not apply to delegations)
CommissionSet by the validator, 10% by default, at most 20%

For each delegation the annual rate is split:

commission_rate = base_apy × commission_bps / 10 000   → paid to the validator
delegator_rate  = base_apy − commission_rate           → paid to you

With the defaults (12% base, 10% commission) a delegator earns 10.8% a year and the validator 1.2% on the delegated amount.

What delegation does not do

Delegated NRO does not add to the validator's consensus voting power, and it does not give the delegator a governance vote. Both count self-stake only. Delegation earns rewards; it does not move control.

Risks ​

  • Slashing. A validator that signs two conflicting votes loses 5% of min_stake from its self-stake and is jailed for 10 000 blocks. See Consensus → Slashing. Delegations are not slashed.
  • Lock. Bonded NRO cannot be moved until the lock ends.

API ​

ActionEndpoint
StakePOST /api/v1/staking/stake
UnstakePOST /api/v1/staking/unstake
DelegatePOST /api/v1/staking/delegate
UndelegatePOST /api/v1/staking/undelegate
Your stake and rewardsGET /api/v1/staking/info/:address
Delegations to a validatorGET /api/v1/staking/delegations/:validator
Your delegationsGET /api/v1/staking/my-delegations/:address
Validators with stakeGET /api/v1/staking/validators
Register a nodePOST /api/v1/nodes/register

Request and response fields are in the REST reference.