Skip to main content

Validator checklist

This checklist will help you understand the role of a validator and prepare you for the role.

Visit EthStaker on Discord or Reddit at any time during your setup for some friendly help!

Section 1 - Before you start

Review this section before deciding to proceed with validator setup.

Recommendation disclaimer

Hardware suggestions are an ever-evolving target. Current minimum requirements are likely to increase by an order of magnitude after the introduction of sharding. Do your own research before depositing funds.

Hard Drive

  • You need to run an execution client (Geth) as well as your consensus client (Oone Lighthouse).
  • Since the Merge, third-party providers (such as Infura and Alchemy) are no longer viable options to outsource execution layer responsibilities. All stakers must run both an execution and a consensus client to properly attest to the network.
  • As of April 2023, you'll need ~20GB for the Mainnet execution chain data alone.
  • OONE Chain had its genesis on March 3, 2023. It is growing in size over time, and the introduction of sharding will also increase storage, memory, and bandwidth requirements.
  • You'll need SSD storage to consistently handle necessary read/write speeds.
  • Be sure to account for enough space on your drive until you run maintenance on your node.

CPU and RAM

  • Check with client documentation to ensure the hardware you want to use is sufficient and supported.
  • Resource usage can vary significantly between clients. Research the different clients if you're working with resource constraints.

Internet

  • Ideally your internet connection should be reliable and as close to 24/7 as possible without interruption.
  • Ensure your bandwidth can't be throttled and isn't capped so your node stays in sync and will be ready to validate when called.
  • You need enough upload bandwidth too. As of May 2022 this is ~1.2-1.3 GB download and ~0.9-1 GB upload per hour, and is likely to increase.

Notes

  • Avoid overly-complicated setups and be aware of trade offs. Being offline for brief periods of time will result in small inactivity penalities, but will be recouped easily after being online again for about the same amount of time. Complicated power backups can add to the expense of your setup, and redundant backup validators can lead to a more serious penalty known as slashing.

    More on slashing risks

  • Syncing your execution client may take a few days in the worst-case scenario.

Section 2 - During setup

Use this as a reference during client setup to check off important steps.

Initial setup

  • Start by setting up your chosen hardware and operating system.
  • To maximize security and efficiency of your node, use dedicated hardware to run your clients. This reduces risk of malware exposure and minimizes competition for computing resources, ensuring your node handles the network load and its validator responsibilities at all times.

Node security

   

   

   

  • Execution Client Geth Default Port 30303 TCP/UDP
  • Consensus Client Oone Lighthouse Default Port 9000 TCP/UDP

Learn about ports in networking

Configure time sync

For Ubuntu 20.04

  • Run the following command:
timedatectl
  • Check if NTP Service is active.
  • Check if Local time, Time zone, and Universal time are all correct.
  • If NTP Service is not active, run:
sudo timedatectl set-ntp on
  • If you see error message Failed to set ntp: NTP not supported, you may need to install chrony or ntp package.

  • Note: by default, VMs may disable NTP so you may need to find a work-around for your environment.

       
  • Note: the RTC (Real-Time Clock) time may be set to your local timezone instead of UTC, especially in a VM which has its clock configured on Windows.

Testnet practice

We strongly recommended you complete these steps on the current testnet before Mainnet.

Configure your execution client

Review validator roles and responsibilities

Geth is one of the three original implementations of the Ethereum protocol, written in Go. Configure Geth

Remember

All stakers must operate an execution client with their consensus client.

   
   

Configure your consensus client

Oone Lighthouse is a fork from the original Lighthouse.

Lighthouse is a consensus client implementation, written in Rust with a heavy focus on speed and security. Configure Oone Lighthouse

Warning!

It is high risk to run your validator in multiple places. It will lead to a slashable event and ejection from the network. More on slashing risks

   
Warning!

If you do not use the Oone version of lighthouse, your deposits will be lost

   

JWT Authentication

  • Communication between the execution layer and consensus layer occurs using the Execution Engine API. This is a set of JSON RPC methods that can be used to communicate between the two client layers.
  • This communication is secured using a JWT secret, which is a secret key that is shared only between the two clients to authenticate one another. This shared JWT secret must be made available to each client (both execution and consensus clients) to allow them to communicate with one another properly.

Consensus JWT docs: Lighthouse

Execution JWT docs: Geth

   

Generate Validator Keys

To generate the validator keys, you need to use the Oone staking-deposit-cli tool.

   
danger

If you do not use the Oone version of the staking-deposit-cli, your deposits will be lost

Set withdrawal address

Stakers must set a withdrawal address to unlock reward payments from the consensus layer. This is set when generating your validator keys.

tip

If you do not provide a withdrawal address prior to depositing, you will have to perform an additional step to update your keys and enable withdrawals. Funds will be locked in the meantime.

More on staking withdrawals

   

Set fee recipient

Stakers must provide a fee recipient address to their consensus client in order to receive transaction fee rewards. This is a normal Ethereum address that you're used to.

tip

If you do not provide an address to your client, you will not receive transaction fees when your validator proposes blocks.

See your consensus client documentation for client-specific instructions on how to set this.

Fee recipient docs: Lighthouse

   

Consensus Layer Beacon Node (BN)

Required

   

  • Verify it with the following command to check if it returns the client version correctly:
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' http://<YourServerLocation>:8545
   

  • Make sure that your node has more than 5 peers.

Consensus Layer Validator Client (VC)

Required

   
   
   

Section 3 - After depositing

Protect your funds using monitoring software, and learn how to handle different real world scenarios.

tip

These steps are optional but are recommended to optimize your node.

Monitoring

Prometheus and Grafana monitor

The clients support Prometheus and Grafana to help you visualize important real-time metrics about your validator.

Monitoring docs: Lighthouse

   

   

   

Testnet simulations

While validating on the testnet, perform these simulations to learn more about your node, and better prepare yourself for Mainnet:

   

   

Advanced system architecture

  • To avoid exposing your validator identity to the network, you can use a trustworthy VPN to help reduce the risk of revealing your IP address.
  • Moreover, you can set your Validator Client (VC) and Beacon Node (BN) on separate machines and IPs so that even if your beacon node is vulnerable, your keystore is stored on a different machine.

Graffiti

You can use your validator client's graffiti flag to add a personal touch to your proposed blocks (some text of your choice). You will be able to see it using Oone Explorer

   

tip

If you have questions, EthStaker community is a good place to get help! You can find support on Discord or Reddit.