Stake ETH on Fireblocks Using the Blockdaemon Staking API

Learn all about staking ETH via Fireblocks using the Blockdaemon Staking API and Raw Signing.

This article provides an overview of how to stake ETH via Fireblocks using the Blockdaemon Staking API and Raw Signing.

Step 1: 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.

Step 2: Creating a Blockdaemon Staking API Key

After accepting the staking plan, login to your Blockdaemon app to create a new API key.

  1. Navigate to Staking API under the Staking section.
  2. Go to the Connect tab and click Create API Key.
  3. Enter the name of the API key and click Create.
  4. Copy the generated API key by clicking I've copied my API Key.

❗️

Remember:

Please ensure that the API key is stored securely as you cannot review any previously created keys. A key can only be deleted within the Blockdaemon app, however, you can create additional API keys whenever you need to.

Step 3: Staking ETH with Blockdaemon Staking API

Now, you have a Staking API plan with deployed validators and the API key. The next step is to use the Post Stake Intent method. This method calls through Blockdaemon’s Staking API and reserves one or more of Blockdaemon’s validators, then returns an unsigned transaction.

Follow the steps below to learn how to do that:

  1. Go to Blockdaemon's API documentation.
  2. Under the Staking API section, select Ethereum.
  3. Click on the Post Stake Intent endpoint.
  4. Specify the required parameters:
ParameterDescription
networkSpecifies the network. Ensure that you have entered "mainnet" here.
amountSpecifies the amount of Ethereum that you wish to stake. This will show the full amount of ETH represented in Gwei with the trailing zeros.
withdrawal_addressHex-encoded Ethereum account or smart contract address. This will usually be the same address as the fee recipient address defined earlier when you created your Blockdaemon API staking plan.
quantityRefers to the number of validators that you are going to create. For instance, if depositing 32 ETH, you would select a quantity of one.
fee_recipientAn Ethereum address to receive transaction fees from published blocks. 20-bytes, hex encoded with 0x prefix, case insensitive.
plan_idThis enables you to stake to validators from the specified plan(s). When no plan ID is specified, validators across all plans that match the API route will be available for staking. Specify this object with the Plan ID you can copy from the Blockdaemon app.

📘

Info:

In most cases, the fee recipient address will be the same as the withdrawal address.

However, you can set it up differently using the address where you funded your Ethereum. This way, you can receive staking rewards at another address, earning rewards for the ETH you staked.

  1. Paste your API Key into the Header field under Authentication on the right-hand side of the page.
  2. The shell updates on the right-hand side of the page as you input the data. This endpoint returns a 'raw unsigned transaction'.

Step 4: Running the Unsigned Transaction in Fireblocks

🚧

Prerequisites

Ensure that you have raw signing enabled on your Fireblocks account.

  1. From the Post Stake Intent endpoint, copy the following fields from the response body:
    • contract_address
    • unsigned_transaction
  1. Create a Fireblocks API User (if you have already created one, skip it and proceed to the next step).
  2. On your Fireblocks account, go to the raw signing interface wallet.
  3. Paste the extracted fields (contract_address & unsigned_transaction) into the Fireblocks UI.
  4. Proceed with the transaction authorization process and approve the transaction to launch the validator.
  5. Once the transaction is approved, the validator launch process will be initiated.
  6. Congratulations! You have successfully staked ETH via Fireblocks using the Blockdaemon Staking API.

(Optional) Signing and Broadcasting the Transaction

  1. Upload the transaction to the Fireblocks Console using the Fireblocks API POST /v1/transactions endpoint.
  2. Populate the unsigned_transaction (returned in the response from the Post Ethereum Stake Intent endpoint) into the contractCallData field in the Fireblocks endpoint.
  3. Complete the transaction signing.

❗️

Remember

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

👋 Need Help?

Contact us through email or our support page for any issues, bugs, or assistance you may need.