Network Components
A Blockchain network comprises of nodes. Each participant in a network must setup their own node and connect it to the other nodes in the network. Two components are required to run an Ethereum node:
Execution Client
An execution client handles transactions, deployment and execution of Smart Contracts and contains an embedded virtual processing environment known as the Ethereum Virtual Machine.
Consensus Client
Historically, an execution client alone was enough to run a full Ethereum node. However, since Ethereum swapped from proof-of-work (PoW) to proof-of-stake (PoS) based consensus, Geth needs to be coupled to another piece of software called a consensus client.
The consensus client (also known as the Beacon Node) implements the proof-of-stake consensus algorithm, which enables the network to achieve agreement based on validated data from the execution client. There is also a third piece of software, known as a Validator that can be added to the consensus client, allowing a node to participate in securing the network. Validators are responsible for validating transactions and adding them to the blockchain. Validators are chosen in a decentralized manner, promoting security and decentralization.
There are five consensus clients available, all of which connect to Geth in the same way:
- Lighthouse: written in Rust
- Nimbus: written in Nim
- Prysm: written in Go
- Teku: written in Java
- Lodestar: written in Typescript
blsync is a beacon chain light client. Integrated within Geth, blsync eliminates the necessity of running a separate consensus client, making it ideal for use-cases that do not require full validation capabilities. It comes with very low resource requirements and can sync the beacon chain within seconds. blsync can be run in two modes: integrated or standalone. In standalone mode it is possible to use it for driving other execution clients.
While all nodes can run the same consensus client, for better performance it is encouraged to have client diversity in a network, which means nodes must vary the cients used. We will be using a combination of Lighthouse and Prysm across nodes in our network.
Tech Stacks
The technologies that we will be using for each component for both options are listed below:
Component | Option 1 | Option 2 |
---|---|---|
Configure, Setup, and Deploy on a local computer. | Use Sepolia, a public Testnet. | |
Node (Execution Client) | geth (Go Ethereum) | Built in |
Node (Consensus Client) | Lighthouse Prysm | Built in |
Smart Contract | Solidity Remix IDE | Solidity Remix IDE |
User App | Custom app using web3.js and a Web3 Provider (Metamask) | Custom app using web3.js and a Web3 Provider (Metamask) |