First, we need to understand a basic concept: to handle incoming validator deposits from the execution layer, you need to run both an execution client and a consensus client. This means we need to deploy at least two client programs (three in this tutorial, as the consensus client is split by functionality).

image.png

image.png

If you want to learn more about the differences and functional responsibilities of the execution client and consensus client, you can click to read: https://ethereum.org/zh/developers/docs/networking-layer/

1. Choose Execution Client

There are many types of clients in the Ethereum ecosystem, with both execution clients and consensus clients having implementations in various languages, such as Geth implemented in Go and Reth implemented in Rust. You can choose different clients based on your preference; the overall process is similar, but the commands involved vary between clients. Here, we cannot provide deployment tutorials for all clients, so the tutorial uses Reth as the execution client (purely a personal preference, not guaranteed to be the most performant).

Additionally, the tutorial uses the method of compiling from source for deployment. In fact, almost every client provides a Docker-based deployment method, which you can choose at your discretion. However, I personally recommend using the source compilation method, as it helps in troubleshooting issues when the documentation does not provide effective assistance by allowing you to inspect the source code to find and resolve the problem.

1.1 Setup Basic Development Environment

1)build-essential

sudo apt install build-essential

2)gcc, g++, make, cmake, clang

sudo apt install gcc g++ make cmake clang

3)Rust

curl --proto '=https' --tlsv1.2 -sSf <https://sh.rustup.rs> | sh

1.2 Build and Execute the Program from Source Code

1)Download the Reth source code

git clone <https://github.com/paradigmxyz/reth>
cd reth

2)Switch to version v1.1.1