Skip to content

Commit 595ad26

Browse files
committed
Version 25.12.0
1 parent 0944d02 commit 595ad26

File tree

75 files changed

+12659
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+12659
-1
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: Chatbot
3+
slug: chatbot
4+
---
5+
6+
# Chatbot
7+
8+
<iframe src="https://teku.ai.protocols.consensys.io/?embed=true" height="800" width="100%" />
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: Architecture
3+
description: Learn about the Teku high-level architecture.
4+
sidebar_position: 1
5+
---
6+
7+
# Teku architecture
8+
9+
The following diagram outlines the Teku high-level architecture.
10+
11+
![Architecture](../images/architecture.png)
12+
13+
Teku contains both a beacon node and validator client implementation.
14+
The beacon node is the primary link to the Beacon Chain.
15+
The validator client performs [validator duties](proof-of-stake.md).
16+
17+
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).
18+
19+
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).
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
title: Builder network and MEV-Boost
3+
description: Learn about external builders and MEV-Boost.
4+
sidebar_position: 2
5+
---
6+
7+
# Builder network and MEV-Boost
8+
9+
[Consensus clients](./node-types.md#consensus-clients) are responsible for proposing
10+
blocks containing an execution payload obtained from their local
11+
[execution clients](./node-types.md#execution-clients) via the Engine API.
12+
13+
A consensus client can optionally configure an external builder and delegate the
14+
execution payload construction to it, instead of using the execution client.
15+
16+
## MEV-Boost
17+
18+
The most common builder deployment is to run a specialized external software
19+
such as [MEV-Boost](https://github.com/flashbots/mev-boost).
20+
MEV-Boost works by requesting a payload proposal from several entities (called
21+
relays), and selecting the best bid in order to improve validator rewards and
22+
increase the maximal extractable value (MEV).
23+
24+
Teku allows you to
25+
[configure the beacon node to use a builder network](../how-to/configure/builder-network.md)
26+
to generate execution payloads.
27+
In case of failures or non-timely responses, Teku falls back to the payload
28+
produced by the local execution client specified using
29+
[`--ee-endpoint`](../reference/cli/index.md#ee-endpoint).
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: Consensus and execution clients
3+
description: Learn about execution and consensus clients.
4+
sidebar_position: 5
5+
---
6+
7+
An Ethereum node is an instance of an Ethereum client, which consists of:
8+
9+
- A consensus client (for example, Teku)
10+
- An execution client (for example, Besu)
11+
12+
:::info
13+
14+
Before The Merge, execution clients were known as
15+
[Eth1 clients](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/), and consensus clients
16+
were called [Eth2 clients](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/).
17+
18+
The Merge, completed on **September 15, 2022**, transitioned Ethereum from
19+
proof of work to [proof of stake consensus](proof-of-stake.md).
20+
21+
:::
22+
23+
Execution and consensus clients communicate with each other using the [Engine API](https://besu.hyperledger.org/public-networks/how-to/use-engine-api).
24+
25+
![Ethereum node](../images/execution-consensus-clients.png)
26+
27+
### Execution clients
28+
29+
Execution clients, such as [Besu](https://besu.hyperledger.org/), manage the execution layer, including
30+
executing transactions and updating the world state. Execution clients serve
31+
[JSON-RPC API](https://besu.hyperledger.org/public-networks/reference/api) requests and
32+
communicate with each other in a peer-to-peer network.
33+
34+
### Consensus clients
35+
36+
Consensus clients, such as Teku, contain beacon node and validator client implementations. The beacon node
37+
is the primary link to the [Beacon Chain](https://ethereum.org/en/upgrades/beacon-chain/) (consensus layer).
38+
The validator client performs [validator duties](proof-of-stake.md) on the consensus layer. Consensus
39+
clients serve [REST API](../reference/rest.md) requests and communicate with each other in a peer-to-peer network.
40+
41+
:::info
42+
43+
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)).
44+
45+
:::
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: Peer-to-peer private key
3+
description: Learn about the peer-to-peer private key.
4+
sidebar_position: 6
5+
---
6+
7+
# Peer-to-peer private key
8+
9+
The peer-to-peer (P2P) private key is used to identify the beacon node on the network and secures the information channel between nodes.
10+
11+
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.
12+
13+
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.
14+
15+
:::info
16+
17+
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.
18+
19+
:::
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
description: Learn about the PeerDAS upgrade and its implications for node operators.
3+
sidebar_position: 4
4+
---
5+
6+
# PeerDAS
7+
8+
Peer Data Availability Sampling (PeerDAS), specified by [EIP-7594](https://eips.ethereum.org/EIPS/eip-7594), is the main feature of the next Ethereum upgrade, Fusaka.
9+
10+
PeerDAS introduces enhanced capacity extension over [proto-danksharding](proto-danksharding.md).
11+
The goal of this enhancement is to significantly increase the average number of blobs in every slot while keeping moderate network and storage requirements for most node operators.
12+
13+
This is achieved using multiple techniques:
14+
15+
- **1D blob extension** - PeerDAS applies one-dimensional erasure coding extension to each blob, so its size doubles.
16+
The extended blob can be split into 128 parts such that you can reconstruct the original blob from any 64 parts.
17+
18+
- **Column splitting** - In danksharding, the base data unit is the blob.
19+
Each node is required to download all blobs referenced in the block to verify its availability.
20+
In PeerDAS, extended blobs are rows which stack one below another and are split into columns, creating DataColumnSidecars.
21+
This is the base data unit in PeerDAS and consists of 1/128th of each extended blob from the block, with additional data like proofs and block header.
22+
23+
- **Data availability sampling** - The last major change is easing node operator requirements for data availability checks.
24+
By splitting blobs data into columns, so that every single node operator is required to get pieces of each blob, it's impossible to lose any whole blob; either all blobs are available or none are.
25+
Security research has proven that it's enough to download 1/8 of the data (1/16 of the extended data) to prove data availability or confirm its non-availability.
26+
27+
Decreasing the size of required download, store, and share data by 8 for most nodes compared to danksharding
28+
makes it possible to schedule a target number of blobs increase of almost 5x compared to the danksharding launch,
29+
with potential room to increase it by another 4x in the future.
30+
This change significantly increases the blob capacity of the Ethereum network and TPS of Layer 2.
31+
Moreover, [EIP-7892: Blob Parameters Only Hardforks](https://eips.ethereum.org/EIPS/eip-7892) allows for changing maximum number of blobs and blob target without a hard fork,
32+
making future blob capacity changes easier.
33+
34+
## Expected implications for node operators
35+
36+
Proto-danksharding was launched with increased network requirements over the previous fork and additional storage required for the data layer of about 50 GB for 3 blobs,
37+
which was later increased to about 100 GB for 6 blobs in the Pectra fork.
38+
39+
With PeerDAS, consensus layer clients will use network and storage space for sidecar data according to their roles:
40+
41+
- **Full nodes** - These are nodes without any validators.
42+
Their requirements are to store 4 data columns in custody (which is permanent storage for a moving window of about 18 recent days) and sample another 4.
43+
This means the data is downloaded, data availability is checked, but nothing is stored.
44+
4 columns with a scheduled 14-blob target (which could be increased in the future) will occupy about 16 GB of space, which means significantly less storage consumption by non-validator nodes.
45+
46+
- **Validator nodes** - Requirements for validator nodes are to custody at least 8 columns, with the number calculated based on the effective balance of active validators,
47+
adding a requirement of 1 extra column per every 32 ETH.
48+
So, 1 validator requires 8 columns, 8 validators require 8 columns, 20 validators require 20 columns, with a maximum of 128 columns for 128 validators or 4096 ETH in consolidated validators.
49+
For 1-8 validators and 14 blobs, a node will take 32 GB of space, which is still less than current requirements.
50+
But nodes with a lot of validators will basically become supernodes.
51+
52+
- **Supernodes** - These are either nodes running in altruistic mode or those operated by big validator operators with 4096 or more ETH staked.
53+
This type of node stores and shares all columns data.
54+
An operator can enable this mode using the [`--p2p-subscribe-all-custody-subnets-enabled`](../reference/cli/index.md#p2p-subscribe-all-custody-subnets-enabled) command line option;
55+
big operators run in this mode as a protocol requirement.
56+
Storage consumption is increased, taking about 500 GB with 14 blobs of data layer space compared to 100 GB in Pectra.
57+
58+
:::warning important
59+
If a node operator needs complete blob data through the REST API, they must run in supernode mode.
60+
Other types of nodes store only partial blob data.
61+
:::
62+
63+
All node space requirements are subject to change proportionally to the target number of blobs, which is currently scheduled to be 14 starting from January 7, 2026 (about 1 month after the Fusaka fork).
64+
Further target changes may be applied later and do not require a hard fork, but require node operators to upgrade their clients in a timely manner.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: Proof of stake
3+
description: Learn about Ethereum proof of stake consensus.
4+
sidebar_position: 3
5+
---
6+
7+
# Proof of stake
8+
9+
In Ethereum's [proof of stake (PoS)](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/), you
10+
must run a [full node](node-types.md) and
11+
[stake 32 ETH](https://ethereum.org/en/staking/) to become a validator.
12+
13+
:::note
14+
15+
You must run a beacon node and an execution client to operate a node on Mainnet. To become a validator, you
16+
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).
17+
18+
:::
19+
20+
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.
21+
22+
Proposers are responsible for proposing new consensus blocks, and non-proposing validators are responsible for validating (attesting to) proposed blocks.
23+
Validators are rewarded for proposing and attesting to consensus blocks eventually included in the Beacon Chain, and penalized for malicious behavior.
24+
Validators also receive transaction fees for included blocks.
25+
26+
Each consensus block contains an execution payload, which contains a list of transactions and other data required to execute and validate the payload.
27+
28+
When a node validates a consensus block, its [consensus client](node-types.md#consensus-clients) processes the block
29+
and sends the execution payload to the [execution client](node-types.md#execution-clients), which:
30+
31+
1. Assembles a block on the execution layer.
32+
1. Verifies pre-conditions.
33+
1. Executes transactions.
34+
1. Verifies post-conditions.
35+
1. Sends the validity result back to the consensus client.
36+
37+
If the block is valid, the execution client includes it in the execution chain and stores the new state in execution state storage.
38+
39+
If a consensus block receives attestations backed by enough staked ETH, the block is included in the Beacon Chain.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
description: Learn about the proto-danksharding upgrade and its implications for node operators.
3+
sidebar_position: 4
4+
---
5+
6+
# Proto-danksharding
7+
8+
Proto-danksharding, specified by [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), is part of
9+
the next Ethereum upgrade, the Dencun upgrade.
10+
11+
Proto-danksharding introduces a new "blob-carrying" transaction type, which allows data to be posted
12+
to Ethereum Mainnet more cheaply than currently possible, thus improving scalability while
13+
preserving decentralization.
14+
15+
## What are blobs?
16+
17+
Blobs are "sidecars" of data that ride alongside blocks, and are primarily used by the sequencers of
18+
Ethereum Layer 2 rollups to contain batched transactions executed on those rollups.
19+
20+
Blobs are made up of 4096 32-byte field elements.
21+
Blobs are designed to remain available for exactly 4096 epochs, or roughly 18 days.
22+
After a blob expires, a majority of consensus layer clients can no longer retrieve the specific
23+
data within the blob, but evidence of the blob's prior existence remains on the network.
24+
25+
The blobs' fee market structure is designed to target an average of three blobs attached to each
26+
beacon block, with a maximum of six blobs.
27+
Each blob holds 128 KB of temporary data.
28+
This means that proto-danksharding might increase the data associated with a block by 384 KB on
29+
average (128 KB per blob times three blobs) with a maximum of 768 KB (six blobs per block).
30+
31+
## What changes in consensus layer clients?
32+
33+
With proto-danksharding, consensus layer clients will:
34+
35+
- Use more network bandwidth in the peer-to-peer layer to receive and distribute the blobs.
36+
37+
- Require roughly 48 GiB more storage space for blobs, with a maximum of 96 GiB.
38+
This estimate comes from the following calculation:
39+
40+
- 3 blobs per block x 128 KB each = 384 KB per block
41+
- 32 blocks per epoch x 4096 epochs for blob expiry = 131,072 blocks with blobs
42+
- 384KB x 131,072 blocks = 48 GiB increase in storage
43+
44+
See this article,
45+
[Ethereum Evolved: Dencun Upgrade Part 5, EIP-4844](https://consensys.io/blog/ethereum-evolved-dencun-upgrade-part-5-eip-4844),
46+
for more information about Dencun and proto-danksharding.
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: Slashing protection
3+
description: Learn about Teku's slashing protection.
4+
sidebar_position: 7
5+
---
6+
7+
# Slashing protection
8+
9+
Teku implements slashing protection to prevent validators from signing blocks or attestations based on what it has already signed.
10+
11+
By default, Teku also locks keystore files listed in the [`--validator-keys`](../reference/cli/index.md#validator-keys) option to prevent other processes from using it.
12+
You can enable and disable this functionality using the [`--validators-keystore-locking-enabled`](../reference/cli/index.md#validators-keystore-locking-enabled) option.
13+
14+
:::warning
15+
16+
Teku's slashing protection does not provide protection if the same validator key is being used by multiple nodes.
17+
18+
:::
19+
20+
To protect validators from slashable offenses, Teku stores a record of the most recently signed blocks for each validator in the `<data-path>/validator/slashprotection/` directory.
21+
One [YAML file is stored per validator] in the format `<validator-pubkey>.yml` (with no `0x` prefix).
22+
23+
:::note
24+
25+
Set `<data-path>` using the [`--data-path`](../reference/cli/index.md#data-base-path-data-path) command line option.
26+
27+
:::
28+
29+
Teku provides command line options to [import] or [export] the slashing protection file.
30+
31+
:::tip
32+
33+
Teku also supports [doppelganger detection](../how-to/prevent-slashing/detect-doppelgangers.md)
34+
and [validator slashing detection](../how-to/prevent-slashing/detect-slashing.md) to help
35+
prevent slashing.
36+
These are early access features.
37+
38+
:::
39+
40+
## Validator slashing protection file
41+
42+
The slashing protection file records multiple values that protects the validator from incorrectly signing blocks or attestations.
43+
44+
```yaml title="Example"
45+
---
46+
genesisValidatorsRoot: "0x9436e8a630e3162b7ed4f449b12b8a5a368a4b95bc46b941ae65c11613bfa4c1"
47+
lastSignedBlockSlot: 71090
48+
lastSignedAttestationSourceEpoch: 2290
49+
lastSignedAttestationTargetEpoch: 3247
50+
```
51+
52+
The following rules apply to the file:
53+
54+
- A validator signs a block only if the slot number is greater than `lastSignedBlockSlot`.
55+
- A validator signs an attestation when the source epoch of the attestation is equal to or exceeds `lastSignedAttestationSourceEpoch`, and the target epoch of the attestation is greater than `lastSignedAttestationTargetEpoch`.
56+
- `genesisValidatorsRoot` is a hash of the validators active at genesis, and is used to differentiate between different chains.
57+
Teku does not require this field to be present, but if it is present and differs from the required value, then Teku returns an error.
58+
59+
:::info
60+
61+
You can obtain the `genesisValidatorsRoot` value by using the [`/eth/v1/beacon/genesis`](https://consensys.github.io/teku/#tag/Beacon/operation/getGenesis) API.
62+
63+
:::
64+
65+
These rules guarantee the validator does not sign anything that is slashable.
66+
67+
## Migrate the slashing protection file
68+
69+
Use the Teku command line options to [import] or [export] the slashing protection file. Alternatively, you can manually migrate or create the database.
70+
71+
### Between Teku nodes
72+
73+
If moving a validator from one Teku node to another, you can manually migrate the slashing protection file.
74+
75+
For example, to manually move the file from node A to node B:
76+
77+
1. Stop Teku node A and confirm the process has fully exited and won't be restarted.
78+
1. Remove the validator key from node A, for example from the [`--validator-keys`](../reference/cli/index.md#validator-keys) option.
79+
1. Copy the file from `<nodeA-data-path>/validators/slashprotection/` to `<nodeB-data-path>/validators/slashprotection/`.
80+
1. Start node B with the migrated validator key.
81+
1. Restart node A if required.
82+
83+
### From a non-Teku node
84+
85+
If moving a validator from a different client to Teku, you can do either of the following:
86+
87+
- Manually [create a new slashing protection file] by setting the values based on the validator's last signing details.
88+
- [Import] the slashing protection file.
89+
90+
To manually create the file, stop the other client to ensure it isn't signing, then set the following:
91+
92+
- Set `lastSignedBlockSlot` to the current chain head slot + 1.
93+
- Set `lastSignedAttestationSourceEpoch` to the current justified checkpoint.
94+
- Set `lastSignedAttestationTargetEpoch` to the current epoch + 1.
95+
96+
Start the Teku node with the validator key.
97+
98+
<!-- links -->
99+
100+
[YAML file is stored per validator]: #validator-slashing-protection-file
101+
[create a new slashing protection file]: #validator-slashing-protection-file
102+
[import]: ../how-to/prevent-slashing/use-a-slashing-protection-file.md#import-a-slashing-protection-file
103+
[export]: ../how-to/prevent-slashing/use-a-slashing-protection-file.md#export-a-slashing-protection-file

0 commit comments

Comments
 (0)