Skip to content

Commit 17c0eee

Browse files
committed
Version 23.3.0
1 parent ad118cd commit 17c0eee

File tree

5 files changed

+123
-40
lines changed

5 files changed

+123
-40
lines changed

CHANGELOG.md

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,78 @@
1+
2023-03-11 v23.3.0
2+
==================
3+
4+
Nimbus `v23.3.0` is `low-urgency` upgrade bringing full support for the upcoming Capella hard-fork on the Goerli testnet. Keep an eye out for future mainnet releases!
5+
6+
### Improvements
7+
8+
* You can now increase the resilience of your setup and eliminate any downtime during upgrade procedures of the execution client software by allowing your beacon node to manage multiple execution clients. To enable this mode, just specify multiple URLs through the `--el` option (alias of `--web3-url`) when starting your beacon node:
9+
10+
```sh
11+
./run-mainnet-beacon-node.sh \
12+
--el=http://127.0.0.1:8551 \
13+
--el=ws://other:8551 \
14+
--jwt-secret=/tmp/jwtsecret
15+
```
16+
17+
As long as only one of execution clients remains operational and fully synced, Nimbus will keep performing all validator duties.
18+
19+
If you use this mode with different execution client implementations, Nimbus will act as an execution layer consensus violation detector, preventing the publishing of blocks that may trigger a catastrophic partitioning in the network.
20+
21+
https://github.com/status-im/nimbus-eth2/pull/4465
22+
https://nimbus.guide/eth1.html
23+
24+
* The metrics `engine_api_responses`, `engine_api_request_duration_seconds` and `engine_api_timeouts` provide statistics about latency and response status codes for all requests sent to each individual execution layer URL:
25+
26+
https://github.com/status-im/nimbus-eth2/pull/4465
27+
https://github.com/status-im/nimbus-eth2/pull/4707
28+
29+
* Nimbus will now attempt to connect to a locally running execution client even when the options `--el` and `--jwt-secret` are not specified. This is made possible by the following proposed standard:
30+
31+
https://github.com/ethereum/execution-apis/pull/302
32+
33+
Please note that the standard hasn't been implemented in any execution client yet.
34+
35+
* Nimbus now support the latest version of the Builder API, adding support for the Capella hard-fork:
36+
37+
https://github.com/status-im/nimbus-eth2/pull/4643
38+
39+
* Improved diagnostic messages and more spec-compliant behavior of the Nimbus validator client when being paired with a non-synced or optimistically synced beacon nodes:
40+
41+
https://github.com/status-im/nimbus-eth2/pull/4643
42+
https://github.com/status-im/nimbus-eth2/pull/4657
43+
https://github.com/status-im/nimbus-eth2/pull/4673
44+
45+
* The Sqlite3 database engine has been upgraded to version 3.40.1:
46+
47+
https://github.com/status-im/nimbus-eth2/pull/4649
48+
49+
### Fixes
50+
51+
* The doppelganger detection now acts safer after a period of lost network connectivity
52+
53+
https://github.com/status-im/nimbus-eth2/pull/4616
54+
55+
* The doppelganger detection now acts safer in the presence of out-of-order responses from the beacon node:
56+
57+
https://github.com/status-im/nimbus-eth2/pull/4691
58+
59+
* Nimbus can now export ERA files for the Sepolia network:
60+
61+
https://github.com/status-im/nimbus-eth2/pull/4689
62+
63+
* The `--history=prune` mode will no longer interfere with serving light client data for the full retention period as mandated by the spec:
64+
65+
https://github.com/status-im/nimbus-eth2/pull/4702
66+
67+
* Nimbus now downloads a longer range of recent execution blocks in order to avoid potential situations where our `Eth1Data` votes fail to agree with the honest majority in the network:
68+
69+
https://github.com/status-im/nimbus-eth2/pull/4588
70+
71+
* Nimbus has addressed a potential interruption of deposit syncing when connected to Geth over WebSocket:
72+
73+
https://github.com/status-im/nimbus-eth2/pull/4708
74+
75+
176
2023-02-16 v23.2.0
277
==================
378

@@ -27,7 +102,7 @@ Capella hard-fork on the Sepolia testnet. Keep an eye out for future mainnet rel
27102
https://github.com/status-im/nimbus-eth2/pull/4591
28103

29104
* The Keymanager API now supports all `gas_limit` end-points:
30-
https://ethereum.github.io/keymanager-APIs/#/Gas%20Limit
105+
https://ethereum.github.io/keymanager-APIs/#/Gas%20Limit
31106
https://github.com/status-im/nimbus-eth2/pull/4612
32107

33108
* Nimbus serves light client updates up to the retention period mandated by

beacon_chain/version.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ when not defined(nimscript):
1717

1818
const
1919
versionMajor* = 23
20-
versionMinor* = 2
20+
versionMinor* = 3
2121
versionBuild* = 0
2222

2323
versionBlob* = "stateofus" # Single word - ends up in the default graffiti

docs/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
mkdocs: mkdocs/bin/mkdocs
22

33
mkdocs/bin/mkdocs:
4-
test -d mkdocs || python -m venv mkdocs
4+
test -d mkdocs || python3 -m venv mkdocs
55
. mkdocs/bin/activate; pip install -r requirements.txt
66

77
compile:

docs/the_nimbus_book/src/eth1.md

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Nimbus has been tested all major execution clients - see the [execution client c
88
You need to run your own execution client - relying on third-party services such as Infura, Alchemy and Pocket is no longer possible. Sharing the same execution client between multiple beacon nodes is not supported.
99

1010
!!! info
11-
Syncing an execution client may take hours or even days, depending on your hardware! The backup providers will be synced only when the primary becomes unavailable, which may lead to a small gap in validation duties - this limitation may be lifted in future versions.
11+
Syncing an execution client may take hours or even days, depending on your hardware!
1212

1313
## Steps
1414

@@ -28,7 +28,7 @@ Select an execution client and install it, configuring it such that that the aut
2828

2929
#### 2. Start Geth
3030

31-
Once you have geth installed, make sure to enable the JSON-RPC WebSocket interface when running geth, along with the options for creating an [autheticated RPC endpoint](https://geth.ethereum.org/docs/interface/consensus-clients):
31+
Once you have geth installed, make sure to enable the [authenticated JSON-RPC interface](https://geth.ethereum.org/docs/getting-started/consensus-clients) when running geth:
3232

3333
=== "Mainnet"
3434
```
@@ -40,21 +40,6 @@ Select an execution client and install it, configuring it such that that the aut
4040
geth --goerli --authrpc.addr localhost --authrpc.port 8551 --authrpc.vhosts localhost --authrpc.jwtsecret /tmp/jwtsecret
4141
```
4242

43-
#### 3. Leave Geth running
44-
45-
Let it syns - it may take anywhere between a few hours and a couple of days.
46-
47-
You'll know Geth has finished syncing, when you start seeing logs that look like the following:
48-
49-
```
50-
INFO [05-29|01:16:05] Imported new chain segment blocks=1 txs=3 mgas=0.065 elapsed=5.885ms mgasps=11.038 number=3785445 hash=553d9e…fc4547
51-
INFO [05-29|01:16:10] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=5.447ms mgasps=0.000 number=3785446 hash=5e3e7d…bd4afd
52-
INFO [05-29|01:16:10] Imported new chain segment blocks=1 txs=1 mgas=0.021 elapsed=7.382ms mgasps=2.845 number=3785447 hash=39986c…dd2a01
53-
INFO [05-29|01:16:14] Imported new chain segment blocks=1 txs=11 mgas=1.135 elapsed=22.281ms mgasps=50.943 number=3785444 hash=277bb9…623d8c
54-
```
55-
56-
Geth accepts connections from the localhost interface (`127.0.0.1`), with default authenticated RPC port `8551`. This means that your default Web3 provider URL should be: `http://127.0.0.1:8551`
57-
5843
=== "Nethermind"
5944

6045
See the [Getting started](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started) guide to set up Nethermind.
@@ -81,30 +66,49 @@ It is safe to start the beacon node even if the execution client is not yet full
8166

8267
### 3. Pass the URL and JWT secret to Nimbus
8368

84-
The `--web3-url` option informs the beacon node how to connect to the execution client - both `http://` and `ws://` URLs are supported.
69+
The `--el` option informs the beacon node how to connect to the execution client - both `http://` and `ws://` URLs are supported.
70+
71+
!!! info
72+
By default, the execution client accepts connections on the localhost interface (`127.0.0.1`), with default authenticated RPC port `8551`. When the `--el` option is not explicitly specified, Nimbus will assume that the execution client is running on the same machine with such default settings.
8573

8674
Once started, the execution client will create a file containing a JWT secret token. The token file is needed for Nimbus to authenticate itself with the execution client and perform trusted operations. You will need to pass the path to the token file to Nimbus together with the web3 URL.
8775

8876
=== "Mainnet"
8977
```sh
9078
./run-mainnet-beacon-node.sh \
91-
--web3-url=http://127.0.0.1:8551 \
79+
--el=http://127.0.0.1:8551 \
9280
--jwt-secret=/tmp/jwtsecret
9381
```
9482

9583
=== "Prater"
9684
```sh
9785
./run-prater-beacon-node.sh \
98-
--web3-url=http://127.0.0.1:8551 \
86+
--el=http://127.0.0.1:8551 \
9987
--jwt-secret=/tmp/jwtsecret
10088
```
10189

102-
!!! tip "Multiple execution clients"
103-
You can pass one or more `--web3-url` parameters to the node as long as they share JWT secret. Any additional web3 URLs will be used for backup, should the first one become unavailable:
90+
!!! info
91+
When the `--jwt-secret` option is not specified and the execution client is running on the same machine under default setting, Nimbus may be able to connect successfully to it by using the default secret value `0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3`. This is a [proposed standard protocol](https://github.com/ethereum/execution-apis/pull/302) that aims to simplify the required user configuration, but it's not yet adopted by all execution clients.
10492

105-
```sh
106-
./run-mainnet-beacon-node.sh \
107-
--web3-url=http://127.0.0.1:8551 \
108-
--web3-url=ws://other:8551 \
109-
--jwt-secret=/tmp/jwtsecret
110-
```
93+
## Advanced setups
94+
95+
### Running multiple execution clients
96+
97+
You can increase the resilience of your setup and eliminate any downtime during upgrade procedure of the execution client software by allowing your beacon node to manage multiple execution clients. To enable this mode, just specify multiple URLs through the `--el` option when starting your beacon node:
98+
99+
```sh
100+
./run-mainnet-beacon-node.sh \
101+
--el=http://127.0.0.1:8551 \
102+
--el=ws://other:8551 \
103+
--jwt-secret=/tmp/jwtsecret
104+
```
105+
106+
!!! tip
107+
You can use a different secret for each connection by specifying `jwtSecret` or `jwtSecretFile` as a query parameter in the anchor section of the URL (e.g. `http://127.0.0.1:8551/#jwtSecret=0x12345...` or `http://127.0.0.1:8551/#jwtSecretFile=/tmp/jwtsecret`).
108+
109+
As long as only one of execution clients remains operational and fully synced, Nimbus will keep performing all validator duties.
110+
111+
!!! tip
112+
To carry out an upgrade procedure without any downtime, just restart the execution clients one by one, waiting for each instance to re-sync before moving to the next one.
113+
114+
If you use this mode with different execution client implementations, Nimbus will act as an execution layer consensus violation detector, preventing the publishing of blocks that may trigger a catastrophic partitioning in the network.

docs/the_nimbus_book/src/options.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ The following options are available:
3434
--validators-dir A directory containing validator keystores.
3535
--secrets-dir A directory containing validator keystore passwords.
3636
--wallets-dir A directory containing wallet files.
37-
--web3-url One or more execution layer Web3 provider URLs.
38-
--optimistic Run the node in optimistic mode, allowing it to optimistically sync without an
39-
execution client [=false].
37+
--web3-url One or more execution layer Engine API URLs.
38+
--el One or more execution layer Engine API URLs.
39+
--no-el Don't use an EL. The node will remain optimistically synced and won't be able to
40+
perform validator duties [=false].
4041
--non-interactive Do not display interative prompts. Quit on missing configuration.
4142
--netkey-file Source of network (secp256k1) private key file (random|<path>) [=random].
4243
--insecure-netkey-password Use pre-generated INSECURE password for network private key file [=false].
@@ -60,6 +61,7 @@ The following options are available:
6061
this functionality [=false].
6162
--weak-subjectivity-checkpoint Weak subjectivity checkpoint in the format block_root:epoch_number.
6263
--finalized-checkpoint-state SSZ file specifying a recent finalized state.
64+
--finalized-deposit-tree-snapshot SSZ file specifying a recent finalized EIP-4881 deposit tree snapshot.
6365
--node-name A name for this node that will appear in the logs. If you set this to 'auto', a
6466
persistent automatically generated ID will be selected for each --data-dir
6567
folder.
@@ -81,7 +83,7 @@ The following options are available:
8183
--rest-request-timeout The number of seconds to wait until complete REST request will be received
8284
[=infinite].
8385
--rest-max-body-size Maximum size of REST request body (kilobytes) [=16384].
84-
--rest-max-headers-size Maximum size of REST request headers (kilobytes) [=64].
86+
--rest-max-headers-size Maximum size of REST request headers (kilobytes) [=128].
8587
--keymanager Enable the REST keymanager API [=false].
8688
--keymanager-port Listening port for the REST keymanager API [=5052].
8789
--keymanager-address Listening port for the REST keymanager API [=127.0.0.1].
@@ -106,15 +108,17 @@ The following options are available:
106108
a validator with the same index (a doppelganger), before sending an attestation
107109
itself. This protects against slashing (due to double-voting) but means you will
108110
miss two attestations when restarting. [=true].
109-
--validator-monitor-auto Automatically monitor locally active validators (BETA) [=false].
111+
--validator-monitor-auto Monitor validator activity automatically for validators active on this beacon
112+
node [=true].
110113
--validator-monitor-pubkey One or more validators to monitor - works best when --subscribe-all-subnets is
111-
enabled (BETA).
112-
--validator-monitor-totals Publish metrics to single 'totals' label for better collection performance when
113-
monitoring many validators (BETA) [=false].
114+
enabled.
115+
--validator-monitor-details Publish detailed metrics for each validator individually - may incur significant
116+
overhead with large numbers of validators [=false].
114117
--suggested-fee-recipient Suggested fee recipient.
115-
--suggested-gas-limit Suggested gas limit [=30000000].
118+
--suggested-gas-limit Suggested gas limit [=defaultGasLimit].
116119
--payload-builder Enable external payload builder [=false].
117120
--payload-builder-url Payload builder URL.
121+
--history Retention strategy for historical data (archive/prune) [=HistoryMode.Archive].
118122
119123
...
120124
```

0 commit comments

Comments
 (0)