Staking

Add validators and delegate stake to the Avalanche primary network

Platform CLI provides commands to add validators and delegate stake on the Avalanche primary network.

Requirements

NetworkValidator MinDelegator MinMin Duration
Local1 AVAX1 AVAX24 hours
Fuji1 AVAX1 AVAX24 hours
Mainnet2,000 AVAX25 AVAX14 days

Adding a Validator

All validators require a BLS proof of possession. You can provide this manually (recommended) or auto-fetch from a node endpoint.

platform-cli validator add-permissionless \
  --node-id NodeID-BFa1paAAAA... \
  --stake 2000 \
  --duration 336h \
  --delegation-fee 0.02 \
  --bls-public-key 0x1234... \
  --bls-pop 0x5678... \
  --key-name mykey \
  --network mainnet

Auto-Fetch BLS from Node

platform-cli validator add-permissionless \
  --node-id NodeID-BFa1paAAAA... \
  --stake 2000 \
  --duration 336h \
  --delegation-fee 0.02 \
  --node-endpoint http://validator.example.com:9650 \
  --key-name mykey \
  --network mainnet

Get BLS Credentials

Use node info to retrieve BLS credentials from a running node:

platform-cli node info --ip validator.example.com:9650
Node ID:        NodeID-BFa1paAAAA...
BLS Public Key: 0x1234567890abcdef...
BLS PoP:        0xfedcba0987654321...

Delegating Stake

Delegate AVAX to an existing validator:

platform-cli validator add-permissionless-delegator \
  --node-id NodeID-BFa1paAAAA... \
  --stake 100 \
  --duration 336h \
  --key-name mykey \
  --network mainnet

Delegation Fees

Validators charge a fee as a percentage of delegator rewards:

--delegation-fee valuePercentageMeaning
0.022%Validator keeps 2% of delegation rewards
0.055%Validator keeps 5% of delegation rewards
0.1010%Validator keeps 10% of delegation rewards

Timing

Start Time

--start now          # Default: 30 seconds from submission (5 minutes with --ledger)
--start 2026-02-01T00:00:00Z   # RFC3339 format

Post-Durango, the P-Chain ignores the transaction start time — validation begins when the transaction is accepted. --start is retained for compatibility but has no on-chain effect on current networks.

Duration

Duration uses Go format (hours):

ValuePeriod
336h14 days (minimum on mainnet)
720h30 days
2160h90 days
8760h365 days

Reward Address

By default, rewards go to your P-Chain address. Specify a different address with:

--reward-address P-avax1xyz789...

Auto-Renewed Staking (ACP-236)

An auto-renewed validator automatically restakes at the end of each cycle instead of expiring, optionally compounding its rewards. The configuration for the next cycle can be updated at any time by the owner address set when the validator was added.

Add an Auto-Renewed Validator

platform-cli validator add-auto-renewed \
  --node-id NodeID-BFa1paAAAA... \
  --stake 2000 \
  --period 336h \
  --delegation-fee 0.02 \
  --auto-compound 1 \
  --bls-public-key 0x1234... \
  --bls-pop 0x5678... \
  --owner-address P-avax1xyz789... \
  --key-name mykey \
  --network mainnet
FlagDescriptionDefault
--node-idNode ID to validate (required)
--stakeStake amount in AVAX (network minimum applies)
--periodAuto-renewal cycle duration (e.g. 336h for 14 days)336h
--auto-compoundFraction of rewards to auto-compound (0.3 = 30%, 1 = 100%)1
--delegation-feeDelegation fee (0.02 = 2%)0.02
--owner-addressAddress authorized to update the auto-renew configown address
--reward-addressReward addressown address
--bls-public-key / --bls-popBLS credentials (recommended/manual mode)
--node-endpointNode endpoint to auto-fetch BLS (fallback mode)

Update the Next-Cycle Config

Change the next cycle's period and auto-compound rate, or stop auto-renewal. Must be signed by the --owner-address set at add time, and references the original add-auto-renewed transaction ID.

platform-cli validator set-auto-renewed-config \
  --tx-id 2QYfFcfZ9... \
  --node-id NodeID-BFa1paAAAA... \
  --period 720h \
  --auto-compound 0.5 \
  --key-name mykey
FlagDescription
--tx-idOriginal AddAutoRenewedValidatorTx ID (required)
--periodNext cycle duration, or 0 to exit after the current cycle (required)
--auto-compoundFraction of rewards to auto-compound (required)
--node-idValidator node ID to narrow the authority lookup (optional, recommended)

Next Steps

Is this guide helpful?