Ethereum: From Holesky Fullnode to Staking (dry-run report)

Caution

This was written for my own documentation purpose only and it a dry-run report, there is an official guide for this (also which this doc is based on): https://holesky.launchpad.ethereum.org/en/overview

What you need:

  1. Having a Fullnode up and running, as well as synced.
  2. Acquire 32 TestnetETH/HolETH for despoit/staking. (Usually from faucets, look it up online or join the discord and ask someone)
  3. Fundamental knowledge about terminal, linux stuff. (or how to use google)

What I assume:

  1. For Consensus layer client, you are using prysm
  2. For Execution layer client, you are using geth
  3. This is you first time starting the staking process (i.e. Starting a new validator and not yet deposited for staking)

Note

Currently Geth is used by >66% of the network.

Client diversity is extremely important for the network health of Ethereum: A bug in a client with a share of over 33% can cause Ethereum to go offline. If the client has a supermajority (>66%), a bug could cause the chain to incorrectly split, potentially leading to slashing.

If at all possible, consider running another client at this time to help protect yourself and the network.

Important

Before moving on to the first step, please make sure, if you are using prysm, you have completed everything before Step 5. (not including Step 5.)

Get a validator running with Prysm

Download the following executables

  1. Ethereum Staking Deposit CLI.
  2. prysm.sh at some place.

Generate validator keys

Once you have acquired the above executables, run:

./deposit new-mnemonic --num_validators=1 --mnemonic_language=english --chain=holesky

where:

  1. --num_validators=1: number of keys you wish to generate. (Required: non negative integer)
  2. --mnemonic_language: language used for the 24-word in mnemonic. (Default: english)
  3. --chain=holesky: chain setting for the signing domain. (Default: mainnet, Note: For mainnet key generation, this can be omitted as the mainnet is default option.)

Depending on where you run this command, there would be two artifacts generated:

  1. A new mnemonic seed phrase. This is highly sensitive and should never be exposed to other people or networked hardware.
  2. A validator_keys folder. This folder will contain two files:
    • deposit_data-*.json - contains deposit data that you’ll later upload to the Ethereum launchpad.
    • keystore-m_*.json - contains your public key and encrypted private key.

Import validator keys to validator client

Then, run the following command to import the generated keys to the Validator client.

./prysm.sh validator accounts import --keys-dir=/path/to/validator_keys --holesky

where:

  1. --keys-dir=/path/to/validator_keys: Specifies the directory where the validator keys are stored.
  2. --chain=holesky: Specifies the chain setting for the signing domain. In this case, holesky is being used instead of the default mainnet.

You’ll be prompted to specify a wallet directory twice. Provide the path to your consensus folder (if you don't know what this is, check Step 2) for both prompts. You should see Imported accounts [...] view all of them by running accounts list when your account has been successfully imported into Prysm.

Deposit your token on Holesky launchpad.

Caution

!!!never send real ETH to the testnet deposit contract!!!

Next, go to the Holesky Launchpad’s deposit data upload page and upload your deposit_data-*.json file. You’ll be prompted to connect your wallet.

Start the validator client

You are now ready to start your validator client and actually start staking by running:

./prysm.sh validator --wallet-dir=/path/to/consensus --holesky --suggested-fee-recipient=/path/to/your_wallet>

where:

  1. --wallet-dir=/path/to/consensus: Specifies the directory where the consensus wallet is located.
  2. --chain=holesky: Specifies the chain setting for the signing domain, similar to the --chain=holesky option in your initial example.
  3. --fee-recipient=/path/to/your_wallet: Specifies the fee recipient wallet path.

You may wonder why you need to use the --suggested-fee-recipient in both beacon node and validator client. The reason is it is possible to plug multiple validator clients to the same beacon node. If no --suggested-fee-recipient is set on a validator client, then the beacon node will fallback on its own --suggested-fee-recipient when proposing a block.

If no --suggested-fee-recipient is set neither on the validator client nor on the beacon node, the corresponding tips will be sent to the burn address, and forever lost.

Tip

If you are reading this, this means you are now running a validator client in Ethereum Holesky network!

Next step: Follow Check node and validator status to make sure that your validator is running. Note: Your validator might take a long time to become fully activated.