Summary
This low-priority release contains improvements for mainnet validators and support for the upcoming Goerli/Prater merge. This release is recommended for all validators on all networks.
Whilst this release is "low-priority" for mainnet, Prater users must upgrade to this release (or a subsequent release) before 2022-08-04 12:24 pm UTC for the Bellatrix fork. Failure to upgrade in time will leave nodes following the wrong chain.
Improvements and fixes include:
- Various bugfixes (#3258, #2911, #3287, #3331, #3350, #3347)
- Various optimisations (#3271, #3301, #3272, #3335)
- Support for the Sepolia network (#3268, #3288)
- Removal of support for multiple execution endpoints (#3257, #3283, #3284, #3324)
- Graceful recovery from
NonConsecutive
eth1 endpoint errors (#3273) - More information in block rewards APIs (#3290)
- Stabilisation of CLI flags for the merge (#3214)
- Addition of the
feerecipient
API (#3213) - Improvement to fallback BN behaviour for sync committees (#3291)
- Bump minimum supported Rust version to 1.62 (#3304)
- Bellatrix support for web3signer (#3318)
- Update Docker Rust version (#3353)
- Add TTD and Bellatrix epoch for Prater/Goerli (#3345)
- "Merge ready" logging and API endpoint (#3339, #3349)
- Add
--network goerli
flag (#3346)
Addition of --network goerli
Since Prater and Goerli will be merging, there is a consensus among the Ethereum community to begin to refer to the "Prater" beacon chain as the "Goerli" beacon chain. This helps convey the idea that the beacon chain and execution chain both form a single, unified chain.
To this end, this release supports the --network goerli
flag. Whilst this flag will connect to exactly the same network as when using --network prater
, it will result in a default data directory in ~/.lighthouse/goerli
, rather than ~/.lighthouse/prater
.
For users already using --network prater
, we recommend sticking with this value. Switching to --network goerli
will trigger Lighthouse to use a new data directory and therefore resync the beacon chain and ignore any existing validators. It's possible to migrate the prater
directory across to the goerli
name, however we do not have instructions for that at this stage.
In summary,
- The safest strategy for existing users should stick with
--network prater
- New users should use
--network goerli
The only difference is naming.
Breaking Changes
The breaking changes in this release should be inconsequential for mainnet users. However the changes may have some impact for users of post-merge testnets.
Breaking Change: Minimum Supported Rust Version (MSRV)
The MSRV was set to Rust 1.62 in #3304. Version 1.62 was released on June 30, 2022. If you are using an older version of Rust, please update before compiling.
Breaking Change: finalized_checkpoint
SSE event
In #3244, the state
field of the finalized_checkpoint
SSE endpoint now represents the state root of the finalized block, rather than the state root at the finalized slot. See #3244 for more information.
This change aligns Lighthouse with Teku's behaviour. It should be inconsequential for most users.
Breaking Change: Removal of --suggested-fee-recipient-file
The --suggested-fee-recipient-file
provided a path to a file which contained a mapping of validator public key to suggested fee recipient. With the addition of the feerecipient
API (#3213), this feature was deemed an unncessary burden to mainain. The feature has been removed in this release, the validator client will fail to start if --suggested-fee-recipient-file
is present.
The reasoning for this decision can be found at #3264.
Breaking Change: Stabilisation of CLI flags for the merge
This release stabilises the flags that will be used for the beacon node after the merge. Whilst there are some functional changes to the flags we have worked to ensure that the BN will still start even when using deprecated flags; deprecated flags or features will be ignored and a deprecation notice logged.
Details
The --merge
flag has been deprecated and no longer has any effect (it is permitted but ignored). Support for the merge will be enabled whenever --execution-endpoint
is supplied.
Support for multiple execution endpoints and payload builders has been removed. Only one value may be supplied for all related CLI flags. This has involved renaming some flags to remove the plural; the plural version now aliases to the singular version, but only supports a single value. Some jwt
flags have been renamed for clarity. The full list of renamed flags is below:
Old Flag (aliased to "New Flag") | New Flag |
---|---|
--execution-endpoints
| --execution-endpoint
|
--jwt-secrets
| --execution-jwt
|
--jwt-id
| --execution-jwt-id
|
--jwt-version
| --execution-jwt-version
|
--payload-builders
| --payload-builder
|
Additionally, the --eth1-endpoints
flag will be ignored if the --execution-endpoint
flag is provided. Any requests that were sent to the --eth1-endpoints
will instead be sent to the --execution-endpoint
.
This list of changes does appear complex, however we believe that migration to the new format should be rather simple. We expect all existing CLI configurations to still work, but with some deprecated values ignored.
Here are some examples for demonstration:
# Still works exactly as before. Multiple eth1-endpoints will still be
# utilised since `--execution-endpoints` is not present.
lighthouse \
bn \
--eth1-endpoints http://localhost:8545,https://third-party.com
# Still works, however `--eth1-endpoints` will be ignored in favor
# of `--execution-endpoints`.
lighthouse \
bn \
--merge \
--execution-endpoints http://localhost:8551 \
--jwt-secrets jwt.hex \
--eth1-endpoints http://localhost:8545,https://third-party.com
# Still works, however only the `192.168.1.1` server will be used.
# The seconds will be ignored.
lighthouse \
bn \
--merge \
--execution-endpoints http://192.168.1.1:8551,http://192.168.1.2:8551 \
--jwt-secrets jwt-1.hex,jwt-2.hex
# These are the minimum ideal flags for the merge.
# The --http flag is also required for staking.
lighthouse \
bn \
--execution-endpoint http://192.168.1.1:8551 \
--execution-jwt jwt.hex
Reminder: Docker Base Image
In the penultimate release (v2.3.0), the Docker base image was updated from Ubuntu 20.04 to Ubuntu 22.04 LTS. Older versions of Docker are unable to run the new image due to an incompatibility, so please ensure that you update your Docker engine past version 20.10.10 (released Oct 2021). Please see #3230 for more information.
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class | Beacon Node | Validator Client |
---|---|---|
Staking Users | Low Priority | Low Priority |
Non-Staking Users | Low Priority | --- |
Please note: this update is high-priority for Prater users.
The Beacon Node may be updated without the Validator Client, however we recommend updating both components.
See Update Priorities for more information about this table.
All Changes
- v2.4.0 (#3360)
- Merge readiness endpoint (#3349)
- Set safe block hash to justified (#3347)
- Add Goerli
--network
flag as duplicate of Prater: Option A (#3346) - Log ttd (#3339)
- Fix Gossip Penalties During Optimistic Sync Window (#3350)
- Add TTD and Bellatrix epoch for Prater (#3345)
- debug tests rust version (#3354)
- docker rust version update (#3353)
- Share
reqwest::Client
between validators when using Web3Signer (#3335) - Don't create a execution payload with same timestamp as terminal block (#3331)
- Add merge support to simulator (#3292)
- Make transactions in execution layer integration tests (#3320)
- Improve block-lookup functionality (#3287)
- Add Merge support to web3signer validators (#3318)
- Upstream local testnet improvements (#3336)
- Add a u256_hex_be module to encode/decode U256 types (#3321)
- Ignored sync jobs 2 (#3317)
- Bump the MSRV to 1.62 and using
#[derive(Default)]
on enums (#3304) - Do not interpret "latest valid hash" as identifying a valid hash (#3327)
- Further remove EE redundancy (#3324)
- Add
--release
to disallowed-from-async lint (#3325) - add sync committee contribution timeout (#3291)
- Merge Engines and Engine struct in one in the
execution_layer
crate (#3284) - eth2_hashing: make
cpufeatures
dep optional (#3309) - Implement feerecipient API for keymanager (#3213)
- Fix RUSTSEC-2022-0032 (#3311)
- Document min CMake version (#3310)
- Ensure caches are built for block_rewards POST API (#3305)
- Remove unused method in HandlerNetworkContext (#3299)
- Simplify error handling after engines fallback removal (#3283)
- Optimize historic committee calculation for the HTTP API (#3272)
- Use latest tags for nethermind and geth in the execution engine integration test (#3303)
- Use async code when interacting with EL (#3244)
- Avoid growing Vec for sync committee indices (#3301)
- Remove builder redundancy (#3294)
- Fix clippy lints for rust 1.62 (#3300)
- Register validator api (#3194)
- Unify execution layer endpoints (#3214)
- Extend block reward APIs (#3290)
- Update Cross config for v0.2.2 (#3286)
- v2.3.2-rc.0 (#3289)
- Update Sepolia TTD (#3288)
- Recover from NonConsecutive eth1 errors (#3273)
- Test the pruning of excess peers using randomly generated input (#3248)
- Add more paths to HTTP API metrics (#3282)
- Add some debug logs for checkpoint sync (#3281)
- Deprecate step param in BlocksByRange RPC request (#3275)
- Initial work to remove engines fallback from the
execution_layer
crate (#3257) - Enable malloc metrics for the VC (#3279)
- Avoid cloning snapshots during sync (#3271)
- Fix validator_monitor_prev_epoch_ metrics (#2911)
- Do not penalize peers on execution layer offline errors (#3258)
- Update cargo lockfile to fix RUSTSEC-2022-0025, RUSTSEC-2022-0026 and RUSTSEC-2022-0027 (#3278)
- Add sepolia config (#3268)
Binaries
See pre-built binaries documentation.
The binaries are signed with Sigma Prime's PGP key: 15E66D941F697E28F49381F426416DC3F30674B0
System | Architecture | Binary | PGP Signature |
---|---|---|---|
x86_64 | lighthouse-v2.4.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.4.0-x86_64-apple-darwin-portable.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.4.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.4.0-x86_64-unknown-linux-gnu-portable.tar.gz | PGP Signature | |
aarch64 | lighthouse-v2.4.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | lighthouse-v2.4.0-aarch64-unknown-linux-gnu-portable.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.4.0-x86_64-windows.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.4.0-x86_64-windows-portable.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v2.4.0 | sigp/lighthouse |