To view and approve staking transactions on your mobile device, the Fireblocks mobile app must be updated to version 1.0.52 or later for Android devices or version 1.99 or later for iOS devices.
Overview
You can use the Fireblocks Console or the Fireblocks API to stake ETH from your workspace. You can also stake on the Holesky testnet using the ETH_TEST6 asset.
To stake, you transfer multiples of 32 ETH from your Fireblocks wallet to the ETH deposit contract. You can stake additional funds at any time by depositing another multiple of 32 ETH. When staking more than 32 ETH in a single transaction, your staked funds are sent to the ETH deposit contract through a third-party smart contract. This third-party contract separates your ETH into sets of 32 and deposits each set individually to the ETH deposit contract.
Each vault account you use to deposit funds becomes designated as a withdrawal address. Withdrawal addresses receive rewards while staking and the ETH you originally deposited is returned to them when you choose to withdraw.
Fireblocks has partnered with third-party staking partners, such as Kiln and Figment, that set up and operate the validators required for your staked ETH. Keep in mind that your staked funds are subject to the ETH deposit contract and third-party staking providers.
Staking lifecycle
Your staked ETH usually becomes eligible to receive rewards after the activation period. The activation period lasts a minimum of several hours to deposit your ETH plus the time it takes for your validator to activate. If a large number of validators are activating at the same time, the activation period could last up to several weeks.
Rewards are distributed periodically to each vault account you use to stake ETH. Your Fireblocks Vault balance automatically updates to reflect rewards. You can see the balance of your staked ETH and rewards on the Staking page or by viewing the ETH wallet in the vault account you used for depositing.
You can’t use your ETH while it is staked. You can unstake your ETH and transfer the funds back to your wallet by withdrawing the ETH from the deposit contract and waiting for the lock-up period to pass. The duration of the lock-up period varies widely depending on network traffic and the number of validators withdrawing staked ETH. If a large number of validators are withdrawing at the same time, the lock-up period could last a week or more. After the lock-up period, the withdrawn assets are transferred back to the original vault account used for depositing funds.
Note
Details in this article refer to staking via the Console or the native API endpoints.
TAP rules for staking
To allow users to stake, you must create Transaction Authorization Policy (TAP) rules to govern staking transactions. You can set up rule parameters for staking similar to configuring rules for other types of transactions. ETH staking rules apply only when depositing funds. They do not apply to withdrawing staked funds. Simply use the Stake operation type when creating staking rules.
Important
TAP 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 TAP rules for staking:
- Rules only apply to the staking transaction. They do not apply to withdrawals.
- You must create a TAP rule with the official ETH staking deposit contract as the destination. For depositing more than 32 ETH in a single transaction, the rule must also include the ETH Batch staking deposit contract (Stakefish smart contract) as a destination.
- When creating the rule, go to Destination > Staking destinations and select the appropriate destinations. 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 TAP 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 staking ETH, you must add funds to an ETH wallet and create TAP rules for staking. Transaction fees are paid in ETH and apply to staking and withdrawing.
- Select Stake on the Staking page or when viewing a vault account with an ETH wallet.
- Enter the vault account holding the ETH you want to stake.
- Enter the amount, in multiples of 32, you want to stake.
Note
The maximum amount you can stake in one transaction is 3200 ETH.
- Enter the fee for the transaction.
- Select a provider. If selecting a provider for the first time, accept the staking provider’s terms and conditions.
- Select Create stake.
- Approve and sign the staking transaction.
You can view details for the staking transaction on the Recent activity panel and the Transaction History page.
Once approved, the third-party provider sets up a validator node for your staked funds and sends the details, such as the validator address, to Fireblocks. The transaction for sending the funds to the ETH deposit contract is initiated.
Note
If the third-party provider fails to set up a validator node for your staked ETH, an error message appears in the Console, and the deposit transaction is not initiated.
Your staked ETH becomes eligible to receive rewards after the transaction is confirmed on the blockchain, the activation period passes, and the validator becomes active.
Staking page
Your staked ETH appears on the Staking page. You can view the status of each set of staked funds, track rewards, and withdraw your ETH from the deposit contract. To view the vault address used for staking, select Source Vault Address on the right side of the row. The validator address also appears.
You can stake additional ETH by selecting Stake and depositing a new multiple of 32 ETH. When staking more than 32 ETH, each set of 32 ETH is listed individually. You can deposit funds as many times as needed for each vault account.
Learn more about the Staking page.
Withdrawing staked ETH
You can withdraw your staked ETH from the deposit contract to transfer the funds back to your Fireblocks workspace. You can only withdraw 32 ETH at a time, even if you deposited more than 32 ETH in the original staking transaction. Once withdrawn, your ETH returns to the original vault account after the lock-up period, which could last a week or more depending on how many validators are withdrawing.
Withdrawals are not immediately available after funds are deposited or activated. The Withdrawal button in the Console will be disabled until withdrawals are available.
To withdraw your staked funds:
- Select Withdraw on the Staking page.
- Select the check box acknowledging that you understand the terms of withdrawing staked ETH. Then select Proceed to withdraw.
- Enter a note if needed, and select Withdraw.
- Your withdrawal has been initiated. The Withdrawal button will be immediately disabled, and the status of your staked funds will change to Withdrawing shortly after.
On Ethereum, withdrawals are signed by the validator rather than the wallet owner. When withdrawing staked ETH on Fireblocks, no transaction will be initiated for you to sign on your mobile device. Therefore, you will not receive a notification for the withdrawal action or see it in your Recent activity panel, Transaction History, or Audit Log.
After the lock-up period, your ETH transfers back to the vault account you used to initially deposit your funds. This typically takes around 8 days, but the time can vary depending on how many validators are withdrawing. You can check the status of your withdrawal by entering the validator address into the beacon chain explorer. Your validator address can be found on the Staking page.
Rewards
The Ethereum network provides two main types of staking rewards:
- Execution layer rewards: When submitting a transaction to the Ethereum network, users can include a priority fee to incentivize validators to validate their transactions faster. Validators earn these priority fees by adding those specific transactions to their blocks. Priority fee rewards are transferred automatically from Ethereum’s execution layer. Your Fireblocks Vault balance is updated in several ways as you receive rewards. Depending on how the validator was set up, these rewards may or may not appear as a transaction in your Fireblocks workspace. Execution layer rewards are distributed every few weeks or months.
- Consensus layer rewards: Validators receive consensus layer rewards when they propose a new block or attest to a block’s validity. Your balance will update automatically with the rewards. Consensus layer rewards do not depend on network activity and are typically distributed every couple of days.
Rewards begin to accrue after the activation period and are received periodically depending on the type of reward being distributed. Rewards are automatically distributed to your withdrawal address and will be reflected in your Fireblocks Vault balance. You receive the gross amount of rewards, and any related fees are collected retroactively.
You can view staking rewards on the Staking page or by viewing the vault account you used for depositing. Each set of 32 ETH may start receiving rewards at different times, even if you deposited them at the same time in the initial staking transaction.
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.
Fees
A percentage of your rewards is collected as a service fee, a portion of which is paid to the third-party staking partner. These fees are based on staking rewards only and are collected retroactively via your Fireblocks invoice. Staking service fees are charged in ETH.
Following are the fee rates for each provider:
- Figment: 9%
- Kiln: 9%
If you stake more than $5M per year, you may qualify for a lower fee rate. Submit this form to request discounted staking fees.
Staking with the Fireblocks API
You can also stake ETH using the Fireblocks API.