Skip to main content

Update Validator Withdrawals

The following guide will teach you how to update your plain BLS Validator Key to reference an ETH1 Address, so your validator keys are able to withdraw staked LYX/LYXt and earnings. If an ETH1 Address is referenced to the BLS Key, the validator's stake can be exited to any wallet. When enabled, all validator earnings above 32 LYX/LYXt will be periodically withdrawn to your ETH1 Address every few days.

  • BLS Keys are the backbone of the digital signature type to secure the PoS Consensus Layer of EVM blockchains. Every validator uses them to sign blocks and stake LYX/LYXt on the LUKSO networks.
  • ETH1 Addresses are the traditional Ethereum addresses from Externally Owned Accounts or Smart Contracts on the Execution Layer which can receive tokens or coins on the network.
Key Generation

The update is only necessary for LUKSO KeyGen CLI users. If you used the LUKSO KeyGen GUI to generate your validator keys, it automatically asked for a withdrawal address during the setup.

Withdrawal Process

As LUKSO is an EVM-based blockchain, the withdrawal update is similar to Ethereum. In case you have questions about the process, please refer to the sources linked in Further Reads.

Check the Withdrawals Status

Withdrawal Activation Time

If you've updated your ETH1 recently, its activation can take up to 48 hours.

If you've never updated your validator withdrawals after the initial deposit, you can check the deposit_data.json file of the validator locally. To check if your withdrawals are executed on the network, you can check them using the consensus explorer.

  1. Open the deposit_data.json file of the validator
  2. Search for the withdrawal_credentials properties for every key
    • If the hexadecimal number starts with 01, withdrawals are already enabled
    • If the hexadecimal number starts with 00, withdrawals can be enabled using this guide

Prepare Validator Indices

To update your withdrawals, you have to specify the on-chain indices for each of the deposited validator keys. You can get them directly from the node machine or manually check your public keys on the consensus explorer.

  1. Open the deposit file of your validator and copy the pubkey element of a validator key.
  2. Search for your validator by entering its public key into the search bar of the related consensus explorer:
  3. Copy the validator index property

The steps need to be repeated for every validator key.

Copy the validator indices so they can be used to generate the withdrawal credential later on.

Download the LUKSO KeyGen CLI


The LUKSO KeyGen CLI should only be used on a secure offline device.

You will need to input your Validator Seed Phrase again.

  1. Download the latest version of the LUKSO KeyGen CLI
  2. Transfer the archive to a secure device.
  3. Extract the archive to receive the executable binary file
  4. Open the terminal and move into the generated folder

Start the LUKSO KeyGen CLI


If you want to have different withdrawal credentials, the following steps must be repeated multiple times.


You will need the following information:

  • Current Validator Indices (Previous Step)
  • Old Withdrawal Credentials for each Validator Key (Deposit File)
  • New ETH1 Withdrawal Address (Generated)

Start the BLS to Execution process from the LUKSO KeyGen CLI

./lukso-key-gen generate-bls-to-execution-change

Generate the Withdrawal Credential

Index Position

During Step 4, you will have to define an index position of the validator keys, indicating the starting point of your credential generation.

  • To generate the withdrawal credentials from the first key, set the index position to 0.
  • To generate the withdrawal credentials for the 11th key onwards, set the index position to 10.

During Step 6 and 7, you will have to input hexadecimal values.

  • Ensure to add 0x in front of the copied withdrawal credential
  • Verify that your EOA address has the 0x prefix
Error Handling

The LUKSO KeyGen CLI might show errors about given inputs no being hexadecimal or checksum values. If your inputs are correct and the JSON file is generated sucessfully, these errors can be ignored.

  1. Select your language
  2. Select the network which your validators are running on
  3. Enter your Validator Seed Phrase that you’ve used to generate your initial BSL keys
  4. Enter the index position of the keys you want to create withdrawal credentials for
  5. Enter all your validator indices to enable withdrawals for, separated with whitespaces or commas
  6. Enter a list of the old BLS withdrawal credentials of your validator keys, separated with whitespaces or commas
  7. Enter the ETH1 address that all earnings will be withdrawn to

The LUKSO KeyGen CLI will then generate a bls_to_execution_change.json file.

Broadcast the Withdrawal Credential


The withdrawal credential can only be set/published once for each validator key. Ensure to have ownership over the withdrawal address.

The Withdrawal Credential can be shared directly from your node or the public consensus explorer of the related network.

  1. Open the broadcast window of the consensus explorer of the related network:
  2. Upload the bls_to_execution_change.json file
  3. Broadcast the withdrawal credential

Check your Withdrawal Progress

Execution Delay

A maximum of 16 validator keys can update their withdrawal credentials per block. It might take several hours for the change to be included in a block, depending on the number of address updates in the queue. If the update hasn't been done after several hours, consider re-submitting the JSON file or data.

  1. Open the Validator Withdrawal Page of the related network:
  2. Scroll down to the list of Address Changes.
  3. Your Validator indices should show up as some of the latest entries.

Client Documentation

Further Reads