It takes five steps to stake ETH
Step 1: Provision Validators
This triggers the creation of validator keypairs on our infrastructure. The provisioning of validators is asynchronous and returns a status 200 and a position_id
. You will need to poll GET /validators
(filtered with the withdrawal_address
and status=provisioned
) to know when your validators have been provisioned.
See documentation for POST /provision
See documentation for GET /validators
Step 2: Build Staking Transaction
Once validators have been provisioned you will need to get a staking transaction (also called funding or deposit transaction). We will build it for you and return a few different options depending on how you intend to get it signed with your custody solution (raw payload or contract calldata). You may also choose to use the provided validator data as input for building the staking transaction yourself.
See documentation for POST /funding_transactions
See guide for setting the gas limit in staking transactions
Step 3. Sign Staking Transaction
This step is on you. Depending on your custody solution you will have different ways to sign the staking transaction. We have built guides to help you navigate this:
- Signing Transactions with our npm package
- Signing Transactions with the Fireblocks API
- Decode contract calldata
Step 4. Broadcast Staking Transaction
Once you have signed the staking transaction we will broadcast it, initiating the validator activation process.
Step 5. Track Validators Activation
This step is optional. We return real time on chain status and an estimate of activation (aka when the validators will start receiving rewards)
See documentation for GET /validators
Step 6. Exit Validators
Exit multiple validators at once by passing either specific public keys or a withdrawal address and an amount of ETH