-
Notifications
You must be signed in to change notification settings - Fork 77
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into 7707-vc-slashing
- Loading branch information
Showing
133 changed files
with
21,445 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
title: Architecture | ||
description: Learn about the Teku high-level architecture. | ||
sidebar_position: 1 | ||
--- | ||
|
||
# Teku architecture | ||
|
||
The following diagram outlines the Teku high-level architecture. | ||
|
||
![Architecture](../images/architecture.png) | ||
|
||
Teku contains both a beacon node and validator client implementation. | ||
The beacon node is the primary link to the Beacon Chain. | ||
The validator client performs [validator duties](proof-of-stake.md). | ||
|
||
You can [run the beacon node only](../get-started/start-teku.md#start-the-beacon-node), or [run the beacon node and validator client](../get-started/start-teku.md#start-the-clients-in-a-single-process). | ||
|
||
Read more about the [Ethereum consensus client architecture](https://ethereum.org/en/developers/docs/nodes-and-clients/). For more information about the Teku architecture, contact us on [Teku Discord channel](https://discord.com/invite/consensys). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
title: Builder network and MEV-Boost | ||
description: Learn about external builders and MEV-Boost. | ||
sidebar_position: 2 | ||
--- | ||
|
||
# Builder network and MEV-Boost | ||
|
||
[Consensus clients](merge.md#consensus-clients) are responsible for proposing | ||
blocks containing an execution payload obtained from their local | ||
[execution clients](merge.md#execution-clients) via the Engine API. | ||
|
||
A consensus client can optionally configure an external builder and delegate the | ||
execution payload construction to it, instead of using the execution client. | ||
|
||
## MEV-Boost | ||
|
||
The most common builder deployment is to run a specialized external software | ||
such as [MEV-Boost](https://github.com/flashbots/mev-boost). | ||
MEV-Boost works by requesting a payload proposal from several entities (called | ||
relays), and selecting the best bid in order to improve validator rewards and | ||
increase the maximal extractable value (MEV). | ||
|
||
Teku allows you to | ||
[configure the beacon node to use a builder network](../how-to/configure/builder-network.md) | ||
to generate execution payloads. | ||
In case of failures or non-timely responses, Teku falls back to the payload | ||
produced by the local execution client specified using | ||
[`--ee-endpoint`](../reference/cli/index.md#ee-endpoint). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
--- | ||
title: The Merge | ||
description: Learn about The Merge, and execution and consensus clients. | ||
sidebar_position: 4 | ||
--- | ||
|
||
# The Merge | ||
|
||
:::info | ||
|
||
The Merge was executed on **September 15, 2022**. | ||
|
||
::: | ||
|
||
[The Merge](https://ethereum.org/en/upgrades/merge/) was an Ethereum upgrade that merged the [Beacon Chain](https://ethereum.org/en/upgrades/beacon-chain/) into Ethereum Mainnet, turning Mainnet into a combination of an [execution layer and consensus layer](#execution-and-consensus-clients). The Merge transitioned Mainnet from proof of work to [proof of stake consensus](proof-of-stake.md). | ||
|
||
You can run Teku as a consensus client with: | ||
|
||
- Any execution client on Mainnet. | ||
- Any execution client on a testnet. | ||
- Besu on Mainnet. | ||
- Besu on a testnet. | ||
|
||
## Execution and consensus clients | ||
|
||
After The Merge, a full Ethereum Mainnet node is a combination of an execution client (previously called an [Ethereum 1.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a consensus client (previously called an [Ethereum 2.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client). | ||
|
||
Execution and consensus clients communicate with each other using the [Engine API](https://besu.hyperledger.org/development/public-networks/how-to/use-engine-api). | ||
|
||
![Ethereum Merge node](../images/execution-consensus-clients.png) | ||
|
||
### Execution clients | ||
|
||
Execution clients, such as [Besu](https://besu.hyperledger.org/), manage the execution layer, including executing transactions and updating the world state. Execution clients serve [JSON-RPC API](https://besu.hyperledger.org/development/public-networks/reference/api) requests and communicate with each other in a peer-to-peer network. | ||
|
||
### Consensus clients | ||
|
||
Consensus clients, such as Teku, contain beacon node and validator client implementations. The beacon node is the primary link to the [Beacon Chain](https://ethereum.org/en/upgrades/beacon-chain/) (consensus layer). The validator client performs [validator duties](proof-of-stake.md) on the consensus layer. Consensus clients serve [REST API](../reference/rest.md) requests and communicate with each other in a peer-to-peer network. | ||
|
||
## What happened during The Merge | ||
|
||
Before The Merge, the execution and consensus clients' configurations were updated to listen for a certain total terminal difficulty (TTD) to be reached. | ||
|
||
The consensus layer enabled the Merge configuration (Bellatrix) before reaching the TTD. Once the execution layer blocks reached the TTD, the Beacon Chain merged into Ethereum Mainnet, and Ethereum transitioned to a proof of stake network. | ||
|
||
:::tip | ||
|
||
After The Merge, a Mainnet node operator must run both an execution client and a beacon node at the same time. To become a validator, you must also run a validator client (either [in the same process as the beacon node](../get-started/start-teku.md#start-the-clients-in-a-single-process) or [separately](../get-started/start-teku.md#run-the-clients-separately)). | ||
|
||
::: | ||
|
||
After The Merge, validators earn rewards for performing [validator duties](proof-of-stake.md), and fee recipients earn rewards for the inclusion of execution layer transactions. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
title: Peer-to-peer private key | ||
description: Learn about the peer-to-peer private key. | ||
sidebar_position: 5 | ||
--- | ||
|
||
# Peer-to-peer private key | ||
|
||
The peer-to-peer (P2P) private key is used to identify the beacon node on the network and secures the information channel between nodes. | ||
|
||
When starting Teku, if the [`--p2p-private-key-file`](../reference/cli/index.md#p2p-private-key-file) option is not specified, and the `generated-node-key.dat` file does not exist in the node's data directory, Teku generates a P2P private key and writes it to the `generated-node-key.dat` file. | ||
|
||
If the `generated-node-key.dat` file exists in the data directory when starting Teku, the node starts using the private stored in the file. | ||
|
||
:::info | ||
|
||
The `generated-node-key.dat` file is stored by default in the `<data-beacon-path>/kvstore` directory, where `<data-beacon-path>` is specified using the [`--data-beacon-path`](../reference/cli/index.md#data-beacon-path) option. | ||
|
||
::: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- | ||
title: Proof of stake | ||
description: Learn about Ethereum proof of stake consensus. | ||
sidebar_position: 3 | ||
--- | ||
|
||
# Proof of stake | ||
|
||
[The Merge](merge.md) transitioned Ethereum Mainnet to [proof of stake (PoS)](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/) consensus. | ||
|
||
In Ethereum's PoS, you must run a [full node](merge.md#execution-and-consensus-clients) and [stake 32 ETH](https://ethereum.org/en/staking/) to become a validator. | ||
|
||
:::note | ||
|
||
You must run a beacon node and an execution client to operate a node on Mainnet. To become a validator, you must also run a validator client (either [in the same process as the beacon node](../get-started/start-teku.md#start-the-clients-in-a-single-process) or [separately](../get-started/start-teku.md#run-the-clients-separately). | ||
|
||
::: | ||
|
||
The PoS mechanism randomly chooses validators to propose or validate blocks on the [Beacon Chain](https://ethereum.org/en/upgrades/beacon-chain/) in defined time frames. | ||
|
||
Proposers are responsible for proposing new consensus blocks, and non-proposing validators are responsible for validating (attesting to) proposed blocks. Validators are rewarded for proposing and attesting to consensus blocks eventually included in the Beacon Chain, and penalized for malicious behavior. Validators also receive transaction fees for included blocks. | ||
|
||
Each consensus block contains an execution payload, which contains a list of transactions and other data required to execute and validate the payload. | ||
|
||
When a node validates a consensus block, its [consensus client](merge.md#execution-and-consensus-clients) processes the block and sends the execution payload to the [execution client](merge.md#execution-and-consensus-clients), which: | ||
|
||
1. Assembles a block on the execution layer. | ||
1. Verifies pre-conditions. | ||
1. Executes transactions. | ||
1. Verifies post-conditions. | ||
1. Sends the validity result back to the consensus client. | ||
|
||
If the block is valid, the execution client includes it in the execution chain and stores the new state in execution state storage. | ||
|
||
If a consensus block receives attestations backed by enough staked ETH, the block is included in the Beacon Chain. |
Oops, something went wrong.