Vote Accounts & Staking
Validators participate in consensus through on-chain vote accounts. Stakers delegate SOL to those vote accounts to earn inflation rewards and gain stake-weighted transaction scheduling (SWQoS).
Recipe
Quick-reference recipe card - copy-paste ready.
solana-keygen new -o vote-account-keypair.json
solana create-vote-account vote-account-keypair.json ~/.config/solana/identity.json
solana vote-account <VOTE_ACCOUNT_PUBKEY># Delegate stake (staker wallet)
solana delegate-stake <STAKE_ACCOUNT> <VOTE_ACCOUNT_PUBKEY>When to reach for this:
- Launching a new validator on devnet/mainnet.
- Configuring commission and vote account metadata.
- Marketing to delegators (commission, MEV policy, uptime).
- Understanding SWQoS stake requirements.
Working Example
IDENTITY=~/.config/solana/identity.json
VOTE_KEYPAIR=vote-account-keypair.json
VOTE_PUBKEY=$(solana-keygen pubkey "$VOTE_KEYPAIR")
# Create vote account (payer = identity)
solana create-vote-account "$VOTE_KEYPAIR" "$IDENTITY" \
--commission 5 \
--url devnet
# Fund vote account for ongoing vote tx fees
solana transfer "$VOTE_PUBKEY" 1 --url devnet
# Inspect
solana vote-account "$VOTE_PUBKEY" --url devnet
# Start validator with this vote account
agave-validator \
--identity "$IDENTITY" \
--vote-account "$VOTE_PUBKEY" \
--ledger /mnt/ledger \
--entrypoint entrypoint.devnet.solana.com:8001What this demonstrates:
- Vote account is separate keypair from identity (recommended).
- Commission percentage set at creation (0-100).
- Validator process must reference vote account to cast votes.
Deep Dive
How It Works
- Vote account records tower votes and credits for each epoch.
- Stake accounts delegate stake weight to vote account pubkey.
- Inflation rewards split between validator commission and delegators.
- Delinquency reduces credits when votes miss timeout thresholds.
Key Roles
| Key | Role |
|---|---|
| Identity | Pays fees, runs agave-validator |
| Vote account | On-chain vote state |
| Withdraw authority | Controls earned rewards |
| Stake accounts | Delegated SOL weight |
bash Notes
solana stakes <VOTE_PUBKEY> --url mainnet-beta
solana validators --url mainnet-beta | grep <VOTE_PUBKEY>Gotchas
- Identity as vote account - Simpler but poor key hygiene. Fix: Separate vote keypair.
- Insufficient SOL in vote account - Votes fail, delinquency. Fix: Monitor vote account balance alerts.
- Commission change confusion - Delegators watch commission; sudden hikes damage trust. Fix: Transparent policy page.
- No withdraw authority plan - Rewards stuck. Fix: Document withdraw authority key custody.
- Starting without stake - Low SWQoS and few leader slots. Fix: Self-stake bootstrap + delegator program.
- Wrong cluster vote account - Mainnet vote on devnet validator. Fix: Cluster-specific vote account per environment.
Alternatives
| Alternative | Use When | Don't Use When |
|---|---|---|
| Stake pool operator | Aggregate delegators | Solo boutique validator brand |
| Non-voting RPC | No consensus ops | Earn inflation from validation |
| Liquid staking delegation | Boost stake quickly | Full control of delegator set |
FAQs
What commission should I set?
Competitive mainnet ranges vary (0-10%) - balance revenue vs attracting stake.
How do delegators find me?
Validator dashboards (Voters, Solana Beach), commission, uptime, MEV transparency.
Minimum self-stake?
No protocol minimum for vote account creation; practical SWQoS needs meaningful stake.
Vote account rent?
Rent-exempt lamports required - fund on creation.
Can commission change later?
Yes via vote account update instruction - delegators should monitor.
jitoSOL relation?
Jito stake pool delegates to operators in their program - separate from your vote setup (LSTs).
Devnet practice?
Create vote account on devnet, run validator, simulate delegation with test stake.
Delinquency recovery?
Fix validator uptime; credits recover over subsequent epochs - not instant.
Withdraw rewards cadence?
Operators periodically withdraw to treasury per withdraw authority policy.
Agave 4.1.1 vote format?
Stay on supported client release - vote tx format handled by agave-validator compatibility.
Related
- Validator Basics - overview
- Stake-Weighted QoS - stake benefits
- Staking & Delegation - economics
- Monitoring & Epoch Ops - uptime
Stack versions: This page was written for Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, and LiteSVM 0.6.x.