Staking Guide
Simplifying Non-Custodial Staking
Pectra Compatibility
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 Luganodes’ Node Provisioning APIs by setting the compounding
parameter to true
or false
while calling the Provision Request API.
Additonally, clients can set the amountPerValidator
based on their requirements and it is set to 32 when compounding
is set to false
.
Staking ETH using the Batch Contract
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 Luganodes’ Node Provisioning APIs to stake ETH. The steps are as follows:
Sign up using the Signup API with your organisation details to receive your API key.
Initiate the provision of nodes by calling the Provision Request API with
batch
parameter astrue
. 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 APIRetrieve the unsigned transaction object
depositInput
, by calling the Get Validator Objects API. UsedepositInput
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:

Staking ETH without the Batch Contract
Clients can stake their ETH without using the batch contract and directly interacting with the Beacon deposit contract
Use Luganodes’ Node Provisioning APIs to stake ETH. The steps are as follows:
Sign up using the Signup API with your organisation details to receive your API key.
Initiate the provision of nodes by calling the Provision Request API with
batch
parameter asfalse
. 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 theresult
array by calling the Get Validator Objects API. UsedepositInput
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).
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
Sign up using the Signup API with your organisation details to receive your API key.
Initiate the provision of nodes by calling the Provision Request API 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 APICall 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.
Consolidation and Switching
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.
Check out the Consolidate API and Switch API, below are the contract addresses listed.
Consolidation Contract (Mainnet)
To be added
Consolidation Contract (Hoodi)
0x0000bbddc7ce488642fb579f8b00f3a590007251v NOTE: An audited version of the contract will be available soon
Exiting an Ethereum Validator
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.
Via Intent
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.
Call the Exit API with a signed challenge to initiate the validator exit. Refer to the Exit API documentation.
After exiting, use the Get Validator and Provision ID API to check the status of your validators.
Via Withdrawal Address
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.
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 Partial Exit API documentation.
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
Last updated