Skip to content

Commit 012ff59

Browse files
authored
eth1 docs (#6680)
Minimal quickstart for setting up the execution client * bump mkdocs to resolve a strange cython incompatibility
1 parent 00f276e commit 012ff59

File tree

10 files changed

+205
-46
lines changed

10 files changed

+205
-46
lines changed

docs/requirements.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
pip-tools
2+
pyyaml >= 6.0.1
23
mkdocs-material

docs/requirements.txt

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,95 @@
11
#
2-
# This file is autogenerated by pip-compile with python 3.10
3-
# To update, run:
2+
# This file is autogenerated by pip-compile with Python 3.12
3+
# by the following command:
44
#
55
# pip-compile requirements.in
66
#
7-
build==0.8.0
7+
babel==2.16.0
8+
# via mkdocs-material
9+
build==1.2.2.post1
810
# via pip-tools
9-
click==8.1.3
11+
certifi==2024.8.30
12+
# via requests
13+
charset-normalizer==3.4.0
14+
# via requests
15+
click==8.1.7
1016
# via
1117
# mkdocs
1218
# pip-tools
19+
colorama==0.4.6
20+
# via mkdocs-material
1321
ghp-import==2.1.0
1422
# via mkdocs
15-
importlib-metadata==4.12.0
16-
# via mkdocs
23+
idna==3.10
24+
# via requests
1725
jinja2==3.1.4
1826
# via
1927
# mkdocs
2028
# mkdocs-material
21-
markdown==3.3.7
29+
markdown==3.7
2230
# via
2331
# mkdocs
2432
# mkdocs-material
2533
# pymdown-extensions
26-
markupsafe==2.1.1
27-
# via jinja2
34+
markupsafe==3.0.2
35+
# via
36+
# jinja2
37+
# mkdocs
2838
mergedeep==1.3.4
29-
# via mkdocs
30-
mkdocs==1.3.1
39+
# via
40+
# mkdocs
41+
# mkdocs-get-deps
42+
mkdocs==1.6.1
3143
# via mkdocs-material
32-
mkdocs-material==8.3.9
44+
mkdocs-get-deps==0.2.0
45+
# via mkdocs
46+
mkdocs-material==9.5.42
3347
# via -r requirements.in
34-
mkdocs-material-extensions==1.0.3
48+
mkdocs-material-extensions==1.3.1
3549
# via mkdocs-material
36-
packaging==21.3
50+
packaging==24.1
3751
# via
3852
# build
3953
# mkdocs
40-
pep517==0.12.0
41-
# via build
42-
pip-tools==6.8.0
54+
paginate==0.5.7
55+
# via mkdocs-material
56+
pathspec==0.12.1
57+
# via mkdocs
58+
pip-tools==7.4.1
4359
# via -r requirements.in
44-
pygments==2.15.0
60+
platformdirs==4.3.6
61+
# via mkdocs-get-deps
62+
pygments==2.18.0
4563
# via mkdocs-material
46-
pymdown-extensions==10.0
64+
pymdown-extensions==10.11.2
4765
# via mkdocs-material
48-
pyparsing==3.0.9
49-
# via packaging
50-
python-dateutil==2.8.2
66+
pyproject-hooks==1.2.0
67+
# via
68+
# build
69+
# pip-tools
70+
python-dateutil==2.9.0.post0
5171
# via ghp-import
52-
pyyaml==6.0
72+
pyyaml==6.0.2
5373
# via
74+
# -r requirements.in
5475
# mkdocs
76+
# mkdocs-get-deps
5577
# pymdown-extensions
5678
# pyyaml-env-tag
5779
pyyaml-env-tag==0.1
5880
# via mkdocs
81+
regex==2024.9.11
82+
# via mkdocs-material
83+
requests==2.32.3
84+
# via mkdocs-material
5985
six==1.16.0
6086
# via python-dateutil
61-
tomli==2.0.1
62-
# via
63-
# build
64-
# pep517
65-
watchdog==2.1.9
87+
urllib3==2.2.3
88+
# via requests
89+
watchdog==5.0.3
6690
# via mkdocs
67-
wheel==0.38.1
91+
wheel==0.44.0
6892
# via pip-tools
69-
zipp==3.19.1
70-
# via importlib-metadata
7193

7294
# The following packages are considered to be unsafe in a requirements file:
7395
# pip

docs/the_nimbus_book/mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ nav:
6161
- 'quick-start.md'
6262
- 'run-a-validator.md'
6363
- 'el-light-client.md'
64+
- 'execution-client.md'
6465
- 'pi-guide.md'
6566

6667
- How-to:
@@ -80,6 +81,7 @@ nav:
8081
- 'additional-validator.md'
8182
- 'validator-client.md'
8283
- 'withdrawals.md'
84+
- 'voluntary-exit.md'
8385

8486
- General:
8587
- 'keep-updated.md'

docs/the_nimbus_book/src/eth1.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ Select an execution client and install it, configuring it such that that the aut
1919

2020
=== "Nimbus"
2121

22-
In parallel to `nimbus-eth2`, we are working hard on the [Nimbus execution client](https://github.com/status-im/nimbus-eth1).
23-
While this is very much a project in development (i.e. not yet ready for public consumption), we welcome you to experiment with it.
22+
See the [Nimbus execution client](./execution-client.md) for installation instructions.
2423

2524
=== "Geth"
2625

@@ -112,9 +111,9 @@ You will need to pass the path to the token file to Nimbus together with the web
112111
=== "Geth"
113112

114113
Following [Geth update instructions](https://geth.ethereum.org/docs/faq#how-to-update-geth), to update Geth you need to:
115-
116114

117-
1. stop the node,
115+
116+
1. stop the node,
118117
2. download the latest release (follow [installation instructions](https://geth.ethereum.org/docs/getting-started/installing-geth)),
119118
3. restart the node.
120119

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Execution client
2+
3+
!!! warning "Pre-release software"
4+
The Nimbus execution client is currently available as a proof of concept - all aspects of it, including resource requirements, command line interface and in particular the database format will change!
5+
6+
Have fun with it and let us know how it goes while keeping the above in mind.
7+
8+
If you're looking for information about setting up an execution client for validator duties or any other production usage, see the [execution clients guide](./eth1.md).
9+
10+
The Nimbus execution client is a light-weight implementation of the Ethereum execution protocol. Paired with a [beacon node](./quick-start.md) or [light client](./el-light-client.md), it provides access to Ethereum blockchain for dapps and users alike via the standard [Web3 API](https://ethereum.github.io/execution-apis/api-documentation/).
11+
12+
## Building from source
13+
14+
The Nimbus execution client is currently only provided as a source code distribution.
15+
16+
### Clone the `nimbus-eth1` repository
17+
18+
```sh
19+
git clone https://github.com/status-im/nimbus-eth1
20+
cd nimbus-eth1
21+
```
22+
23+
### Run the build process
24+
25+
To build the Nimbus execution client and its dependencies, make sure you have [all prerequisites](./install.md) and then run:
26+
27+
```sh
28+
make -j4 nimbus nrpc
29+
```
30+
31+
This may take a few minutes.
32+
33+
When the process finishes, the `nimbus_execution_client` and `nrpc` executables can be found in the `build` subdirectory.
34+
35+
## Import era files
36+
37+
Syncing Nimbus requires a set of `era1` and `era` files. These can be generated from a `geth` and `nimbus` consensus client respectively or downloaded from a third-party repository.
38+
39+
In addition to the era files themselves, you will need at least 200GB of free space on a fast SSD in your data directory, as set by the `--data-dir` command line option.
40+
41+
!!! info "`era` file download locations"
42+
`era` and `era1` files for testing purposes could at the time of writing be found here - these sources may or may not be available:
43+
44+
=== "Mainnet"
45+
* https://mainnet.era.nimbus.team/
46+
* https://era1.ethportal.net/
47+
48+
=== "Holesky"
49+
* https://holesky.era.nimbus.team/
50+
51+
The Holesky network does not have `era1` files since it never operated as a proof-of-work chain
52+
53+
=== "Sepolia"
54+
* https://sepolia.era.nimbus.team/
55+
* https://sepolia.era1.nimbus.team/
56+
57+
It is recommended that you place the era files in the data directory under `era1` and `era` respectively. Era files can be shared between multiple nodes and can reside on a slow drive - use the `--era1-dir` and `--era-dir` options if they are located outside of the data directory.
58+
59+
See the [era file guide](./era-store.md) for more information.
60+
61+
!!! tip ""
62+
Future versions of Nimbus will support other methods of syncing
63+
64+
=== "Mainnet"
65+
!!! note ""
66+
Performing a full sync of mainnet from era files takes several days - its speed varies greatly depending on hardware. Use one of the testnets to get started more quickly!
67+
68+
```sh
69+
build/nimbus_execution_client --data-dir=build/mainnet import
70+
```
71+
72+
73+
=== "Holesky"
74+
```sh
75+
build/nimbus_execution_client --network=holesky --data-dir=build/holesky import
76+
```
77+
78+
=== "Sepolia"
79+
```sh
80+
build/nimbus_execution_client --network=sepolia --data-dir=build/sepolia import
81+
```
82+
83+
## Launch the client
84+
85+
In order for the execution client to operate, you need to connect a consensus node. This can be the [Nimbus beacon node](./quick-start.md), a [supported consensus client](https://ethereum.org/en/developers/docs/nodes-and-clients/#consensus-clients) or a [light client](./el-light-client.md).
86+
87+
The consensus node connects to the execution client via the Engine API which is enabled using `--engine-api` and by default runs on port `8551`.
88+
89+
During startup, a `jwt.hex` file will be placed in the data directory containing authentication information that the consensus node uses to connect - make sure to use the same `jwt.hex` file on both consensus and execution node.
90+
91+
=== "Mainnet"
92+
```sh
93+
build/nimbus_execution_client --data-dir=build/mainnet --engine-api
94+
```
95+
96+
=== "Holesky"
97+
```sh
98+
build/nimbus_execution_client --network=holesky --data-dir=build/holesky --engine-api
99+
```
100+
101+
=== "Sepolia"
102+
```sh
103+
build/nimbus_execution_client --network=sepolia --data-dir=build/sepolia --engine-api
104+
```
105+
106+
## Top up blocks from the consensus node
107+
108+
While era files cover the majority of chain history, Nimbus currenty relies on the consensus node to sync the most recent blocks using the `nrpc` helper.
109+
110+
This method of syncing loads blocks from the consensus node and passes them to the execution client via the Engine API.
111+
112+
=== "Mainnet"
113+
```sh
114+
# Start `nrpc` every 2 seconds in case there is a fork or the execution client goes out of sync
115+
while true; do build/nrpc sync --beacon-api=http://localhost:5052 --el-engine-api=http://localhost:8550 --jwt-secret=build/mainnet/jwt.hex; sleep 2; done
116+
```
117+
118+
=== "Holesky"
119+
```sh
120+
# Start `nrpc` every 2 seconds in case there is a fork or the execution client goes out of sync
121+
while true; do build/nrpc sync --network=holesky --beacon-api=http://localhost:5052 --el-engine-api=http://localhost:8550 --jwt-secret=build/holesky/jwt.hex; sleep 2; done
122+
```
123+
124+
=== "Sepolia"
125+
```sh
126+
# Start `nrpc` every 2 seconds in case there is a fork or the execution client goes out of sync
127+
while true; do build/nrpc sync --network=sepolia --beacon-api=http://localhost:5052 --el-engine-api=http://localhost:8550 --jwt-secret=build/sepolia/jwt.hex; sleep 2; done
128+
```
129+
130+
!!! tip ""
131+
Future versions of Nimbus will support other methods of syncing

docs/the_nimbus_book/src/index.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22

33
Nimbus is a client for the Ethereum network that is [lightweight](https://our.status.im/ethereum-is-green/), [secure](./audit.md) and [easy to use](./run-a-validator.md).
44

5-
Its efficiency and low resource consumption allows it to perform well on all kinds of systems: ranging from Raspberry Pi and mobile devices — where it contributes to low power consumption and security — to powerful servers where it leaves resources free to perform other tasks, such as running an [execution node](./eth1.md).
5+
Its efficiency and low resource consumption allows it to perform well on all kinds of systems: ranging from Raspberry Pi and mobile devices — where it contributes to low power consumption and security — to powerful servers where it leaves resources free to perform other tasks.
66

7-
This book describes the consensus layer client, [`nimbus-eth2`](https://github.com/status-im/nimbus-eth2).
8-
An execution client, [nimbus-eth1](https://github.com/status-im/nimbus-eth1), is also under development.
7+
This book describes the consensus protocol implementation which includes a [beacon node](./quick-start.md), [validator client](./validator-client.md) and [light client](./el-light-client.md).
98

9+
An [execution client](https://github.com/status-im/nimbus-eth1) is also under development - see its [quickstart guide](./execution-client.md).
10+
11+
Our companion project [fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) connects to the [Ethereum portal network](https://ethportal.net/) and has its [own guide](https://fluffy.guide/).
1012

1113
## Feature highlights
1214

1315
* [Beacon node](./quick-start.md) with integrated validator client, slashing protection and doppelganger detection
14-
* Stand-alone [validator client](./validator-client.md) with [sentry node](./validator-client.md#sentry-node-setup) support
16+
* Stand-alone [validator client](./validator-client.md) with [sentry node](./validator-client-options.md#sentry-node-setup) support
1517
* Fast [Beacon](./rest-api.md) and [KeyManager](./keymanager-api.md) APIs with extensions
1618
* [Web3Signer](https://docs.web3signer.consensys.net/en/latest/) remote signing
1719
* [Validator monitoring](./validator-monitor.md) and [performance analysis](./attestation-performance.md) tooling
@@ -35,7 +37,6 @@ As part of our first design goal, our primary objective here is for Nimbus to be
3537

3638
Our dream is for you to be able to run and monitor your validator straight from Status desktop.
3739

38-
3940
## Book contents
4041

4142
You can read this book from start to finish, or you might want to read just specific topics you're interested in:
@@ -46,8 +47,6 @@ You can read this book from start to finish, or you might want to read just spec
4647
* Interested in becoming a validator? Follow the [validator guide](./run-a-validator.md).
4748
* If you're not planning on becoming a validator, you can run the [light client](./el-light-client.md).
4849

49-
50-
5150
## Get in touch
5251

5352
Need help with anything?

docs/the_nimbus_book/src/networking.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ It means that Nimbus is unable to find a sufficient number of peers to guarantee
3333

3434
Most commonly, this happens when your computer is not reachable from the outside and therefore won't be able to accept any incoming peer connections.
3535

36-
If you're on a home network, the fix here is to [set up port forwarding](./networking.md#set-up-port-forwarding) (this may require you to [pass the extip option](./networking.md#pass-the-extip-option) and [set enr-auto-update](./networking.md#set-enr-auto-update)).
36+
If you're on a home network, the fix here is to [set up port forwarding](./networking.md#set-up-port-forwarding) (this may require you to [pass the extip option](./networking.md#set-an-explicit-external-ip) and [set enr-auto-update](./networking.md#set-enr-auto-update)).
3737

3838
The first step however, is to check for incoming connections.
3939

docs/the_nimbus_book/src/pi-guide.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
# Running on a Raspberry Pi
1+
# Raspberry Pi
22

33
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I expect the new Raspberry Pi 4 (4GB RAM option, external SSD) to handle an Eth2 validator node without breaking a sweat. That&#39;s $100 of hardware running at 10 Watts to support a 32 ETH node (currently ~$10K stake).</p>&mdash; Justin Ðrake (@drakefjustin) <a href="https://twitter.com/drakefjustin/status/1143091047058366465?ref_src=twsrc%5Etfw">June 24, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
44

5+
6+
!!! note
7+
While this guide is based on Raspberry Pi 4 which was the newest version at the time of writing, growth of the validator set and chain complexity has led to increased hardware requirements for running a node. A Pi 4 might still be able to keep up, but your experience will be much better with the 8GB version of Pi 5 (or similar single-board computer such as [Rock 5B](https://radxa.com/products/rock5/5b/)).
8+
59
In addition to this guide, we highly recommend this [wonderful and complementary resource](https://docs.rocketpool.net/guides/node/local/prepare-pi.html#preliminary-setup) by community member Joe Clapis.
610

711
## Introduction
@@ -419,7 +423,7 @@ You should see something like:
419423
peers: 15 ❯ finalized: ada7228a:8765 ❯ head: b2fe11cd:8767:2 ❯ time: 9900:7 (316807) ❯ sync: wPwwwwwDwwDPwPPPwwww:7:1.2313:1.0627:12h01m(280512)
420424
```
421425

422-
Keep an eye on the number of peers you're currently connected to (in the above case that's `15`), as well as your [sync progress](./keep-an-eye.md#syncing-progress).
426+
Keep an eye on the number of peers you're currently connected to (in the above case that's `15`), as well as your [sync progress](./keep-an-eye.md#keep-track-of-your-syncing-progress).
423427

424428
!!! note
425429
15 - 20 peers and an average sync speed of **0.5 - 1.0** blocks per second is normal on `Holesky` with a Pi.

docs/the_nimbus_book/src/quick-start.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ The quickstart setup involves running two nodes: an [execution client](./eth1.md
66
Both are needed to run a full Ethereum setup.
77

88
To become a validator, you first need to set up a beacon node.
9+
910
The beacon node connects to the beacon chain network, syncs historical data, and provides [API's](./rest-api.md) to monitor and interact with the beacon chain.
1011
Running a beacon node is a [worthwhile endeavor](https://vitalik.eth.limo/general/2021/05/23/scaling.html#its-crucial-for-blockchain-decentralization-for-regular-users-to-be-able-to-run-a-node) even if you are not planning on validating yourself!
1112

docs/the_nimbus_book/src/troubleshooting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ If you can't find a solution to your problem here, get in touch with us on our [
1414
When installing Nimbus, you will typically be using the latest `stable` release.
1515

1616
However, the latest changes happen in the `unstable` branch.
17-
If you're looking to test the changes coming to the _next_ Nimbus release, consider building Nimbus from [source](./keep-updated.md#build-from-source) using the `unstable` branch.
17+
If you're looking to test the changes coming to the _next_ Nimbus release, consider building Nimbus from [source](./keep-updated.md#install-a-specific-version) using the `unstable` branch.
1818

1919
## Networking
2020

0 commit comments

Comments
 (0)