Stake Program — Program ID & Instructions
Stake11111111111111111111111111111111111111 The Stake Program manages SOL staking on Solana. It handles stake account creation, delegation to validators, deactivation, and withdrawal.
Program ID
Stake11111111111111111111111111111111111111
Key instructions
| Instruction | Description |
|---|---|
Initialize | Creates a new stake account with staker and withdrawer authorities |
DelegateStake | Delegates stake to a vote account (validator) |
Deactivate | Begins the unstaking process (takes 1 epoch to complete) |
Withdraw | Withdraws SOL from a deactivated stake account |
Split | Splits a stake account into two accounts |
Merge | Merges two stake accounts into one |
AuthorizeWithSeed | Authorizes a staker/withdrawer via a derived key |
Stake account lifecycle
Create → Initialize → Delegate → Active (earning rewards)
↓
Deactivate → Cooldown (1 epoch) → Withdraw
A stake account transitions through these states:
- Uninitialized: account exists but has no stake configuration.
- Initialized: has staker/withdrawer authorities but not delegated.
- Delegated/Activating: delegated, waiting for the next epoch to start earning.
- Active: earning staking rewards.
- Deactivating: deactivation requested, waiting for epoch boundary.
- Deactivated: can be withdrawn.
Authorities
| Authority | Can do |
|---|---|
| Staker | Delegate, deactivate, split, merge |
| Withdrawer | Withdraw, change authorities, close account |
Both authorities are set at initialization and can be changed by the withdrawer.
FAQ
How long does it take to unstake SOL? Deactivation takes effect at the next epoch boundary. Epochs are approximately 2–3 days long. After deactivation completes, SOL can be withdrawn immediately.
What is the minimum stake amount? The minimum is the rent-exempt minimum for a stake account (~0.00228 SOL). However, validators may have their own minimum delegation preferences.
Can I split a staked account?
Yes. The Split instruction divides a stake account into two, with the specified amount going to the new account. Both accounts remain delegated to the same validator.
Updated: