Use ETH Staking API With Fireblocks

Explore seamless onboarding of the Staking API with Blockdaemon and utilization of ETH Staking API with Fireblocks.

Staking ETH with Blockdaemon's Staking API and Fireblocks is a relatively simple process. By following the steps outlined in this guide, you can onboard the Staking API, create a stake, and sign and broadcast the transaction using Fireblocks.

Onboarding the Staking API

To begin onboarding the Staking API with Blockdaemon, follow these steps:

  1. Provide Blockdaemon with the following information:
    1. Network: Mainnet or Goerli/Prater testnet.
    2. MEV (Miner Extracted Value) enabled or disabled.
    3. Geolocation preference.
    4. Default fee recipient address for Blockdaemon to set for all validators in the plan (this value can be overridden when you make the stake-intent API call).
  2. Once you have provided this information, Blockdaemon will create a staking plan with the above configuration. A staking plan is a pool of validators dedicated to your organization.
  3. Review the plan details in the Blockdaemon app and accept the plan if all looks good.
  4. After accepting the plan, create an API key under the connect tab in the Staking API section and store the key securely.

Creating a Stake with Blockdaemon

To create a stake with Blockdaemon, you'll need to call the Post Ethereum Stake Intent endpoint, which will return the unsigned stake transaction.



It is recommended to specify the plan-id when making the call. This ensures that you are explicitly telling the API which pool of validators you want to stake to. The plan-id can be retrieved from the Blockdaemon app.

Signing and Broadcasting the Transaction with Fireblocks

  1. Create a Fireblocks API User (if you already have created one, skip and proceed to the next step).
  2. Upload the transaction to the Fireblocks Console using the Fireblocks API POST /v1/transactions endpoint.
  3. Populate the unsigned_transaction (returned in the response from the Post Ethereum Stake Intent endpoint) into the contractCallData field in the Fireblocks endpoint.
  4. Complete the transaction signing.



There is a default two-hour timeout after the transaction is created for signing in Fireblocks.