Staking Guide
Simplifying Non-Custodial Staking
Last updated
Simplifying Non-Custodial Staking
Last updated
Our node APIs support both 0x01 type and 0x02 type validators depending on your needs. You can choose to stake either 0x02 type validators or 0x01 type validators through our by setting the compounding
parameter to true
or false
while calling the .
Additonally, clients can set the amountPerValidator
based on their requirements and it is set to 32 when compounding
is set to false
.
The ETH Staking contract currently supports only one deposit transaction at a time. Clients looking to stake large amounts of ETH would have to make many transactions in multiples of 32 ETH ( for 0x01 type validators ) or any value from 32 - 2048 ETH ( for 0x02 type validators ). This can be simplified by using a Batch contract which can club 100 deposits (3200 ETH) into a single transaction for the user.
Use to stake ETH. The steps are as follows:
Sign up using the with your organisation details to receive your API key.
Initiate the provision of nodes by calling the with batch
parameter as true
. The API triggers the creation of nodes by Luganodes in the background. Allow some time (~4 mins for 100 validators) for the creation of deposit details required for transaction signing before calling the next API
Retrieve the unsigned transaction object depositInput
, by calling the . Use depositInput
as transaction data to execute the deposit transaction on the Batch Contract address mentioned below
Batch Contract Address (Hoodi)
0xCdf86Bf3E4B2D8777F1e6C70D6C694936c3459A6
Batch Contract Address (Mainnet)
0x33c10a5518a881ABfe318758646bB8C7cE613704
Post deposit, allow approximately 13 minutes for the protocol to verify details and queue your validators for activation (the activation time itself will depend on the number of validators awaiting activation in the network)
Use the Get User Validator and Provision ID API to check your validators’ status at any point in this process.
Refer to the sequence diagram below for a detailed guide on batch contract staking:
Clients can stake their ETH without using the batch contract and directly interacting with the Beacon deposit contract
Beacon Deposit Contract (Mainnet)
0x00000000219ab540356cBB839Cbe05303d7705Fa
Beacon Deposit Contract (Hoodi)
0x00000000219ab540356cBB839Cbe05303d7705Fa
Post deposit, allow approximately 13 minutes for the protocol to verify details and queue your validators for activation (the activation time will depend on the number of validators awaiting activation in the network).
Use the Get Validator and Provision ID API to check your validators’ status at any point in this process.
Refer to the sequence diagram below for a detailed guide on non-batched contract staking:
Users can get the raw deposit data using the Get Deposit Details API. They can use this data to initiate a deposit transaction on the Beacon deposit contract. The steps are as follows
Call the Deposit Details API to generate the raw deposit data which would include the following: signature
, deposit message root
, deposit data root
, fork version
. These would be essential to generate the input required for the deposit transaction.
Post deposit, allow approximately 15-24 hours for the protocol to verify details and queue your validators for activation (the activation time itself will depend on the number of validators awaiting activation in the network)
Use the Get Validator and Provision ID API to check your validators’ status at any point in this process.
Pectra EIP 7251 enables consolidation of stake of multiple validators into a single validator. This operation requires the client to sign an unsigned transaction with the validator withdrawal address and can be performed one validator at a time. Similarly, converting 0x01 withdrawal credentials to 0x02 credentials requires an unsigned transaction to be signed with the withdrawal address.
Consolidation Contract (Mainnet)
To be added
Consolidation Contract (Hoodi)
0x0000bbddc7ce488642fb579f8b00f3a590007251v NOTE: An audited version of the contract will be available soon
You can choose to perform exits by declaring an intent to exit or by performing the exit with your validator withdrawal address. You can perform partial withdrawals via the execution layer by signing and broadcasting an unsigned transaction.
A signed challenge must be created that contains the validators' information signed by the withdrawal key or the controller key. The script to generate this signed challenge can be found here.
After exiting, use the Get Validator and Provision ID API to check the status of your validators.
Partial withdrawals are triggered via the execution layer through the validators withdrawal address. This withdrawal is only possible for validators with 0x02 type withdrawal credentials.
EL Exit Contract (Mainnet)
To be added
EL Exit Contract (Hoodi)
0x00000961ef480eb55e80d19ad83579a64c007002 NOTE: An audited version of the contract will be available soon
After exiting, use the Get Validator and Provision ID API to check the status of your validators
The batch contract used is a forked version of Kiln's that has been audited by Runtime Verification Inc.
Use to stake ETH. The steps are as follows:
Sign up using the with your organisation details to receive your API key.
Initiate the provision of nodes by calling the with batch
parameter as false
. The API triggers the creation of nodes by Luganodes in the background. Allow some time (~4 mins for 100 validators) to create the deposit details required for transaction signing before calling the next API.
Retrieve unsigned transaction objects, specifically depositInput
in the result
array by calling the . Use depositInput
as transaction data to execute the deposit transaction on the Beacon deposit contract mentioned below. Each transaction should be made individually based on the number of validators being set up (e.g., Setting up 100 validators would require 100 transactions to be signed).
Sign up using the with your organisation details to receive your API key.
Initiate the provision of nodes by calling the with batch=false
(batch will have to be false here as deposit data will have to be shared separately for individual validators). The API triggers the creation of nodes by Luganodes in the background. Allow some time (~4 mins for 100 validators) for the creation of deposit details required for transaction signing before calling the next API
Check out the and , below are the contract addresses listed.
Call the Exit API with a signed challenge to initiate the validator exit. Refer to the .
Call the Partial Exit API to receive an unsigned transaction which needs to be signed with your validator withdrawal address and broadcasted to the network. Refer to the