Create a Validator

Becoming a Validator

There are a few ways to create a validator. You may create a validator through one of our validator service providers or a self setup manual process.

Validator Service Providers

Below is the list of independent validator service providers that offers a seamless experience to kick start the validation process.

Self Setup

CheckList

Hardware Requirements

  • To properly attest to the Ethereum network, stakers must run both execution and consensus clients as third-party providers (such as Infura and Alchemy) are no longer options.

  • Recommended disk space for a full node running Geth and a consensus client: 2TB SSD

  • Geth alone requires >650GB of disk space for a snap-synced full node

  • Geth with the default cache size grows by about 14GB per week

CPU and RAM Requirements

  • It is recommended to use at a fast CPU with 4+ cores with least 16GB RAM.

  • Verify with the client documentation(execution client) to make sure the hardware you plan to use meets the requirements and is supported.

Internet Requirements

  • The ideal internet connection should be stable and as continuous as possible, with minimal interruptions.

  • Recommended minimum download speed: 25Mbps.

To receive full rewards, it is your responsibility to keep your validator online and up-to-date. If your validator goes offline, you will face penalties which are approximately equal in value to the rewards you would have received for active participation.

Choose an Execution Client

At present, over 66% of the Ethereum network uses Geth as their client.

Having a diverse range of clients is crucial for the health of the Ethereum network and is an important purpose of NodeDAO. A flaw in a client with more than 33% market share can cause Ethereum to become unavailable, and if the client holds a supermajority (>66%) of the market, the chain may split incorrectly due to the bug, which could result in slashing.

Therefore, if possible, it is recommended to run a different client to secure your interests and maintain the integrity of the network.

Execution ClientProgramming Language

Java

C#, .NET

Go

Go

Choose an Consensus Client

Presently, over 33% of the Ethereum network utilizes Prysm as their client.

Having a diverse set of clients is crucial for the stability of the Ethereum network. If a client with a market share greater than 33% contains a bug, it may cause Ethereum to become offline. This is not recommended by NodeDAO. Additionally, if the client holds a supermajority (>66%) of the market, the bug could result in a split of the chain, potentially leading to slashing.

Therefore, if feasible, it is advisable to run a different client to safeguard your interests and contribute to the security of the network.

Consensus ClientProgramming Language

TypeScript

Nim

Go

Rust

Generate Key Pairs

Step 1 - Download CLI Application

Github Resource

Step 2 - Generate Deposit Keys

Decompress the downloaded file, navigate to the directory where the deposit execution file is located. Then run the following command:

./deposit new-mnemonic --chain mainnet

Ensure --chain mainnet is pointed to the actual Mainnet, as failure to do so will result in an invalid deposit. You can ensure that you are on the correct Mainnet by confirming that the network ID and chain ID match the values specified by Ethereum's official documentation. Additionally, you can compare the network's current block height with a reputable block explorer, such as Etherscan, to verify that it is in line with the Mainnet's latest block. You can also check the network's genesis block hash, which should match the expected value for the Mainnet. These checks will help confirm that you are indeed on the correct Mainnet and not on a different network or testnet.

Follow the instructions presented to you in the terminal to generate your keys. Save your keystore and write down your mnemonic for each of your validators. The keystore should be in the validator_keys directory. The public keys associated with each validator should be available in the deposit_data.json.

You should see that you have one keystore per validator. This keystore contains your signing key, encrypted with your password. You can use your mnemonic to generate your withdrawal key when you wish to withdraw.

Refrain from storing keys on multiple validators at once

Last updated