Important
To view and approve staking transactions on your mobile device, the Fireblocks mobile app must be updated to version 1.0.52 or greater for Android devices or version 1.99 or greater for iOS devices.
Overview
You can use the Fireblocks Console or the Fireblocks API to stake SOL in your Fireblocks Vault. You can also stake on Solana Testnet using the SOL_TEST asset.
When staking, you delegate your funds and associated voting rights to a third-party staking partner, such as Kiln, that oversees the validation and rewards associated with your staked funds. Even though staked funds remain under your ownership within the Fireblocks platform, third-party validators act on your behalf when you delegate assets to them.
Upon delegating funds, a stake account is automatically created to hold the staked funds and receive rewards. The delegated funds are locked in this account and cannot be used until you unstake and withdraw them. The stake account appears on the Staking page and when viewing the associated vault account on the Accounts page.
Your delegated SOL becomes eligible to receive rewards after the activation period (also known as the warmup period). The activation period lasts about two days (or one epoch). Rewards are distributed once per epoch. Therefore, the first rewards for newly staked funds appear approximately four days after the funds were initially delegated.
Before you can use your staked SOL and rewards, you must unstake the assets and wait for the lock-up period (also known as the cooldown period) to pass. The lock-up period typically lasts about two days. You can then withdraw your assets from the stake account back to the original vault account used for funding the stake account.
Note
Details in this article refer to staking via the Console or the native API endpoints.
Policy rules for staking
To allow users to stake, you must create Policy rules to govern staking transactions. You can set up rule parameters for staking similar to configuring rules for other types of transactions. Simply use the Stake operation type when creating staking rules.
Important
Policy rules configured with the Stake operation type only apply to staking operations initiated from the Fireblocks Console or the Fireblocks API. They do not apply to staking transactions initiated using the Raw Signing-based SDKs, contract calls, or other external interfaces.
Keep these things in mind when configuring Policy rules for staking:
- Rules configured with the Stake operation type apply to all three staking transactions: staking, unstaking, and withdrawing.
- You must create a Policy rule with your validator addresses as the destination.
- When creating the rule, go to Destination > Staking destinations and select the appropriate validator addresses. You can create a rule that governs all staking destinations or specific ones.
- If you don’t see the list of staking destinations when creating your Policy rules, contact Fireblocks Support. After they enable the list in your workspace, you can create a new staking rule using the staking destinations from the list.
Staking in the Fireblocks Console
Before you can stake SOL, you must add funds to an SOL wallet and create Policy rules for staking.
Transaction fees apply to all three transactions during the staking process: staking, unstaking, and withdrawing. Fees are paid in SOL and are relatively low.
- Select Stake on the Staking page or when viewing a vault account with an SOL wallet.
- Enter the amount to stake, and select a validator.
Note
You must stake more than 0.01 SOL. Also, make sure to leave enough SOL in the wallet to pay transaction fees and the SOL account rent. Fireblocks recommends maintaining a balance of at least 0.01 SOL at all times to prevent failures.
- If selecting a validator for the first time, accept the staking provider’s terms and conditions.
- Select Create stake.
- Approve and sign the staking transaction.
- Once approved, a transaction for creating the stake account and delegating the funds to the validator is initiated. The activation period begins after this transaction is confirmed on the blockchain.
Details for the staking transactions can be reviewed on the Recent activity panel and the Transaction History page.
Staking page
All of your stake accounts appear on the Staking page. On this page, you can view the status of each stake account, track rewards, and unstake or withdraw funds. To view the address for a stake account, select Stake Account Address on the right side of the row.
You can stake additional SOL by selecting Stake. When staking additional SOL from the same vault account, a new stake account is created for delegating the additional funds. You can delegate funds as many times as needed for each vault account.
Learn more about the Staking page.
Rewards
Rewards begin to accrue after the activation period (about two days) and are distributed once per epoch (about two days). Therefore, the first rewards for newly staked funds appear approximately four days after the funds were initially delegated.
Rewards are added to the total funds in the stake account and automatically compounded. You receive the net amount of rewards after any related fees are collected. You can view staking rewards on the Staking page or when viewing the vault account with the SOL wallet.
Note
Rewards on the Fireblocks Console may not update in real-time. If you see a different amount of rewards on a block explorer, check the Console again at a later time for the updated rewards.
Funds must be unstaked to withdraw the original staking amount and the rewards. All rewards distributed to the stake account can be reviewed on the Staking page and will be reflected in your Fireblocks Vault balance after they are withdrawn.
Fees
Third-party staking partners collect a percentage of your rewards as a service fee to cover the validator commission. These fees are based on staking rewards only and are collected during on-chain reward distribution. The reward balance reflects your net staking rewards. Staking service fees are charged in SOL.
Following are the fee rates for each provider:
- Figment: 7%
- Kiln: 7%
Unstaking and withdrawing
You must unstake your funds before you can use your delegated SOL and any accumulated rewards:
- Access the stake account on the Staking page or the associated vault account.
- Select Unstake.
- Sign and approve the unstake transaction.
After the lock-up period (about two days), you can withdraw your funds from the stake account:
- Select Withdraw on the Staking page.
- Sign and approve the withdrawal transaction.
- The funds move from the stake account to the original vault account.
You can view the details of the unstake transaction and the withdrawal transaction on the Recent activity panel and the Transaction History page.
Splitting stake accounts and partial unstaking
You can split a stake account into two smaller stake accounts to help manage your staked SOL and enable partial unstaking and withdrawals. Simply select More actions > Split stake for a specific stake account and enter the amount from the account you want to split into the new stake account. You must approve and sign the transaction, which includes gas fees.
Once the transaction is confirmed, a new staking position with a new stake account appears on the Staking page under the same vault account. The stake balance of the original stake account will be updated to reflect the change in amount.
Notes
- The amount you choose to split can include the accrued rewards.
- Gas fees are paid with SOL from the vault account used to fund the original stake account.
- The new stake account is active immediately after the transaction is signed and begins accruing its own rewards.
- The new stake account uses the same validator as the account from which it was split.
- Your Stake Policy rules apply to this transaction.
- You can view the split transaction in the Recent activity panel as normal.
Splitting a stake account is helpful when you want to withdraw part of the funds from the account. Since withdrawals must include all funds from a stake account, you can first split a stake account before withdrawing the funds from one of the subsequent stake accounts.
For example, suppose you want to withdraw 3,000 SOL from a stake account containing 7,100 SOL. You could split the stake account by creating a new account with 3,000 SOL and leaving 4,100 SOL in the original. Then you could unstake and withdraw the stake account with 3,000 SOL.
Staking with the Fireblocks API
You can also stake SOL using the Fireblocks API.