How to Stake
This page covers the practical side of staking: how to put AET behind a Neuronet, how to move it, how to get it back, and the rules to keep in mind. For why stake matters at all, start with the Staking Overview.
Staking
Staking delegates AET to a specific Neuronet. The tokens are reserved on your own account, not burned, and they count toward that Neuronet's capacity for as long as they stay staked.
- The minimum for a single delegation is 1 AET, which keeps dust stakes out of the system. On chain that is 1,000,000,000 planck: the chain counts in planck, its smallest unit, and one AET is a billion of them.
- Each Neuronet holds its own stake. A stake placed on one Neuronet does not apply to another, so backing several Neuronets means staking into each one separately.
- There is no upper limit on how much a single account can delegate, and no cap on how many Neuronets it can back.
Steps
- Fund the account you intend to stake from. The stake is reserved on that same account, so the coldkey holding the tokens is the one that submits the call.
- Pick the Neuronet you want to back and note its numeric
neuronet_id. A Neuronet that does not exist is rejected outright. - Submit
delegate_stake(neuronet_id, amount), call index 60 in theAetronPoIpallet. The amount is in planck. - The runtime reserves the amount, adds it to your position on that Neuronet, and raises the Neuronet's total stake.
The stake registers immediately, but it does not count toward emission eligibility right away. Delegating sets an activation block one epoch (7,200 blocks, roughly a day at 12 second blocks) ahead of the current one. Until that block passes, the position is held but not yet mature.
One detail worth knowing before you top up: adding to an existing position re-ages the whole position, not just the new tokens. A stake that was already mature restarts its epoch wait when you add to it. If you plan to increase a position, doing it in one call rather than several spread over days avoids repeatedly resetting the clock.
Moving Stake Between Neuronets
You do not have to unstake and re-stake to change which Neuronet you back. move_stake(from_neuronet, to_neuronet, amount), call index 62, redelegates directly.
The move runs through the same cooldown pipeline as a normal unstake. The sequence is:
- The amount leaves the source Neuronet immediately, so that Neuronet's capacity drops in the same block.
- The request sits in the pending queue for the cooldown period.
- When it matures, the amount is credited to the target Neuronet rather than returned to your free balance. The tokens stay reserved the whole time and never pass back through your spendable balance.
- The new position on the target Neuronet starts its own epoch maturity wait from the block it lands.
Two consequences follow. The stake is idle during the cooldown: it has left the source Neuronet's capacity and has not yet joined the target's, so it earns nothing in that window. And if the target Neuronet no longer exists when the request matures, the runtime falls back to a normal unstake and returns the amount to your free balance instead of failing.
Requesting an Unstake
request_unstake(neuronet_id, amount), call index 61, starts the withdrawal. You can request any amount up to your full position, including the whole thing.
The stake is removed from the Neuronet at request time, not at the end of the cooldown. From the moment the request lands, those tokens stop contributing to the Neuronet's capacity and stop earning. The cooldown governs when you get access to the tokens, not when they stop working.
A partial unstake leaves the remainder in place, but that remainder is re-aged the same way a top-up is: it gets a fresh epoch maturity wait before it counts again. Taking part of a position out therefore costs eligibility on the part you keep.
Only one pending request per account per Neuronet is allowed at a time. A second request against the same Neuronet is rejected while the first is still in the queue. Positions on other Neuronets are unaffected, since the limit is per pair.
The Cooldown Period
Unstake requests mature after 50,400 blocks, about 7 days at 12 second blocks. During that window:
- The tokens remain reserved on your account. They are not spendable and not transferable.
- They are not staked on any Neuronet, so they earn no share of emission.
- The request cannot be cancelled or amended, and the amount cannot be changed.
The cooldown exists so that stake cannot jump in and out purely to capture a single reward cycle, which keeps a Neuronet's capacity stable enough to plan around.
Maturity is processed by the runtime rather than by a claim transaction: each block drains matured requests from the queue automatically, up to 100 per block. You do not submit anything to finish the withdrawal. If a very large number of requests mature in the same block, the surplus is handled in the blocks that follow, so a withdrawal can settle slightly later than its exact maturity block under heavy load.
Fees on Withdrawal
The runtime carries an unstake fee parameter, UnstakeFeePct, set to 1 percent. When it applies, the fee is transferred to the treasury and is not burned, so the tokens stay in circulation.
The fee is conditional rather than standing. It is charged only when unstake friction is active, which requires all three of the following to hold at once:
- The
UnstakeFrictionEnforceflag is switched on. It defaults to false. - The Neuronet being exited has actually received emission at some point.
- The operation is a plain unstake and not a
move_stakeredelegation. Moving stake between Neuronets never carries the fee, because the tokens stay working in the network.
With the flag off, a completed unstake returns the full requested amount. The same flag also governs ExtendedUnstakeCooldown, a longer 216,000 block window (roughly 30 days) that replaces the standard cooldown for a full exit from an emission-earning Neuronet. Both the fee and the extended window are configured in the runtime but inactive by default, so the 7 day cooldown and a fee-free return are what the parameters currently describe.
Separately from any of this, delegate_stake, request_unstake, and move_stake are ordinary on-chain transactions and each costs a normal transaction fee. See Transaction Fees.
Activation Threshold
A Neuronet needs 100 AET of total stake before its emission is actually paid out. This is a property of the Neuronet, not of your individual delegation: the 1 AET minimum governs a single delegation, while the 100 AET threshold is the sum across every staker on that Neuronet. An Owner can cover it alone at creation, or several stakers can reach it together.
The threshold gates the payout, not the capacity. Capacity is a straight function of stake at 100 slots per AET, so a Neuronet with 50 AET behind it has 5,000 slots and accrues emission normally. What it does not do is receive that emission at settlement: the runtime skips the distribution and emits a below-threshold event, and the balance keeps accruing until the stake crosses 100 AET.
Things to Keep in Mind
- Choose by demand, not just size. A busy, well-run Neuronet earns more for its stakers than a quiet one. See Staking Rewards.
- Capacity needs demand. Adding stake to a Neuronet with no traffic mostly locks up tokens without raising earnings.
- Plan around the cooldown. Your AET is not liquid the moment you decide to unstake, and it stops earning immediately, so the waiting period is dead time on both ends.
- Batch your top-ups. Each addition re-ages the entire position by one epoch.
- Prefer
move_staketo a round trip. Redelegating keeps the tokens reserved and skips the fee path entirely, even if friction is later switched on.
For the bigger picture of why stake equals capacity, see the Staking Overview.