Luganodes Docs
TwitterLinkedInMedium
  • Luganodes
  • Native ETH Staking
    • Features
      • Stake
      • Portfolio
  • Custodians
    • Fireblocks
    • Ledger
  • Networks
    • Overview
    • Active Networks
      • Aptos
      • Archway
      • Avail
      • Avalanche
      • bitsCruch
      • Canto
      • Cardano
      • Chiliz
      • Composable Finance
      • Concordium
      • Cosmos
      • Covalent
      • dYdX
      • Eigen Layer
      • Ethereum
      • Elixir
      • Flare
      • Gitopia
      • Kava
      • Kroma
      • Kusama
      • Lukso
      • MultiversX
      • Namada
      • Near
      • Neutron
      • Noble
      • Persistence
      • Polkadot
      • Polygon
      • Radix
      • Ronin
      • River
      • Saga
      • Solana
      • Stride
      • Sui
      • Tenet
      • Tron
      • Ton
      • Vanar
      • Walrus
      • Zilliqa
  • Staking APIs
    • Overview
    • Ethereum
      • Staking Guide
      • Authentication
      • Node Provisioning APIs
      • Consolidation & Switch
      • Exits
      • FAQs
  • TOOLS
    • Ethereum
      • Pectra CLI
    • Hyperliquid
      • Hypermon Monitoring Tool
    • Flare
      • FTSOv2 Monitoring Tool
    • Solana
      • Solana Indexer
    • Berachain
      • Berachain Indexer
Powered by GitBook
On this page
  • Pectra Compatibility
  • Staking ETH using the Batch Contract
  • Staking ETH without the Batch Contract
  • Staking without batch contract (using raw deposit data)
  • Consolidation and Switching
  • Exiting an Ethereum Validator
  • Via Intent
  • Via Withdrawal Address
  1. Staking APIs
  2. Ethereum

Staking Guide

Simplifying Non-Custodial Staking

PreviousEthereumNextAuthentication

Last updated 15 days ago

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 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.

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 to stake ETH. The steps are as follows:

  1. Sign up using the with your organisation details to receive your API key.

  2. 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

  3. 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

  1. 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)

  2. 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

Beacon Deposit Contract (Mainnet)

0x00000000219ab540356cBB839Cbe05303d7705Fa

Beacon Deposit Contract (Hoodi)

0x00000000219ab540356cBB839Cbe05303d7705Fa

  1. 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).

  2. 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

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

  2. 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)

  3. 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.

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

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

  2. After exiting, use the Get Validator and Provision ID API to check the status of your validators.

Via Withdrawal Address

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

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

contract
Luganodes’ Node Provisioning APIs
Exit API documentation
Staking without batch contract (using raw deposit data)
Luganodes’ Node Provisioning APIs
Luganodes’ Node Provisioning APIs
Pectra Compatibility
Staking using the Batch Contract
Staking without the Batch Contract
Staking without batch contract (using raw deposit data)
Consolidation and Switching
Exiting an Ethereum Validator
Signup API
Signup API
Signup API
Partial Exit API documentation.
Consolidate API
Switch API
Provision Request API
Provision Request API
Get Validator Objects API
Provision Request API
Get Validator Objects API
Provision Request API