Skip to content

Geardude Clockberg

Compare
Choose a tag to compare
@github-actions github-actions released this 22 Jul 04:12
· 1853 commits to stable since this release
v2.4.0

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