github sigp/lighthouse v5.3.0
Risotto Groupon

3 months ago

Summary

This medium-priority release contains performance optimisations, bugfixes and new features. There are several breaking changes detailed below.

The main optimisations are:

  • Faster beacon node start-up due to an optimisation to the database schema (#5897). The schema migration is a backwards-incompatible change which is described in more detail below.
  • More reliable block proposals due to the use of the new v3 block production API (#5292).
  • Improvements to the validator client's broadcast mechanism (#5976, #6223).
  • Support for gossipsub IDONTWANT (#5422). This allows nodes to reduce their bandwidth usage by avoiding the download of duplicate messages.

The main bugfixes are:

  • Fix parsing of the VC proposer-nodes CLI flag (#6125).
  • Prevent connections from peers with a banned IP history (#6008).
  • Prevent UPnP queries when UPnP is disabled (#6170).
  • Corrections to lighthouse account CLI (#6153, #6091).
  • Update Sepolia bootnodes, fixing issues with 0 peers on Sepolia (#6037).

New features include:

  • A new Rust slasher database backend, redb (#4529). We still recommend running LMDB on mainnet, but encourage users to try redb on testnets using the flag --slasher-backend redb.
  • The default number of log files retained (logfile-max-number) has been increased from 5 to 10 to help with debugging issues (#6092).
  • Lots of code for the upcoming Electra and PeerDAS network upgrades (#5712, #5741, #5761, #5743).

Breaking Changes

🗑️ Removed CLI flags

The following CLI flags have been removed completely and will cause the BN to fail to start up if provided:

  • --builder-profit-threshold: This flag was already deprecated and has been incompatible since v5.2.0 (#6131).

You should remove any instances of these flags from your beacon node startup command.

👎 Deprecated CLI flags

Beacon node:

  • --disable-lock-timeouts: Lock timeouts are now disabled by default so this flag does nothing. It will be removed in a future release (#6048).
  • --self-limiter: The self limiter is now enabled by default. This flag will be removed in a future release. The purpose of this is to prevent Lighthouse from sending excessive requests to peers in case of bugs or edge case scenarios. The rate limit quotas can be configured via the existing --self-limiter-protocols flag (#6093).

Validator client:

  • --produce-block-v3: The produce block v3 API is now enabled by default and cannot be disabled, so this flag does nothing. It will be removed in a future release (#5292).

You should remove any instances of these flags from your BN/VC commands, although failing to do so will only result in a warning, not a failure to start.

🦀 Minimum Supported Rust Version 1.78.0 🦀

The minimum supported Rust version (MSRV) was updated to 1.78.0. Users who compile from source (i.e., not Docker or pre-built binary users) will receive the following error if they are using an earlier version of Rust:

lighthouse v5.3.0 (/home/sigp/lighthouse/lighthouse) cannot be built because it requires rustc 1.78 or newer

Users can typically obtain the latest version of Rust by running rustup update.

💾 Database Schema Upgrade

The beacon node database schema has been updated from v19 to v21. An automatic database schema upgrade will run when updating from a previous version. No manual intervention is required for upgrading.

The schema upgrade was required to prepare for the upcoming Electra fork, and to optimise how validator public keys are stored on disk. Public keys are now stored uncompressed, which uses twice as much space, but allows them to be loaded around 10x faster. This results in shorter start-up times after the initial start-up on v5.3.0.

If you decide to downgrade from v5.3.0, then a database schema downgrade is available. It must be run using the lighthouse db migrate command. For instructions on how to downgrade, see the Database Migrations section of the Lighthouse Book.

More details on the pubkey optimisation are found in the PR: #5897.

🐋 No more -portable tarballs or -modern images

There are no more -portable tarballs attached to this release, and the -modern Docker images on Docker Hub will no longer be updated. Both have been deprecated since v5.2.0 when portable builds became the default everywhere.

For portable binary users:

  • Download the latest .tar.gz for your platform. It will continue to work exactly as before.

For modern Docker image users:

  • Use the :latest tag, or the :v5.3.0 tag. It will be just as fast as the previously supplied -modern image.

📝 HTTP API /eth/v1/beacon/deposit_snapshot to use JSON response by default

The /eth/v1/beacon/deposit_snapshot now returns JSON response by default (instead of SSZ) if a header is not specified, for consistency with other beacon APIs.

See: #5813.

🐧 Jemalloc enabled by default on non-Windows targets

jemalloc is now necessary on Linux with the introduction of tree-states for performance reasons. The jemalloc feature is now enabled by default on non-Windows targets.

See: #5995.

🔓 Removal of signed validator client responses

Signing of validator client HTTP responses has been removed. This feature had limited utility and adoption, and removing it has simplified VC API token management. Unless you were relying on the Signature header in VC responses, no action is required.

See: #5529.

💵 Fee recipient required with --always-prepare-payload

The --suggested-fee-recipient flag is now required when --always-prepare-payload is set. This feature is likely only used by block builders and relays.

See: #6079.

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Beacon Node Validator Client
Staking Users Medium Medium
Non-Staking Users Medium ---

See Update Priorities for more information about this table.

Lighthouse BNs and VCs from v5.0.0, v5.1.x, v5.2.x and v5.3.x are compatible. However, we recommend that users update both the VC and BN to v5.3.0 if upgrading.

All Changes

  • Release v5.3.0 (#6194)
  • Broadcast VC requests in parallel and fix subscription error (#6223)
  • Don't expect DAS config in HTTP spec response (#6221)
  • Downgrade re-org log to INFO (#6220)
  • patch quick-protobuf (#6217)
  • Work around UB in LMDB bindings (#6211)
  • Avoid acquiring another read lock while holding one to avoid potential deadlock (#6200)
  • Swap finalized chains based on processed batches (#6203)
  • Use upgradable read lock for pubkey cache (#6190)
  • default vc to block v3 endpoint and deprecate block-v3 flag (#5292)
  • Remove timeout locks (#6048)
  • limit dial concurrency on Swarm (#6184)
  • Fix lighthouse account validator subcommands help text (#6091)
  • Iterate expired components from the da_checker (#5895)
  • Rust 1.80.0 lints (#6183)
  • Fix unexpected Marking peer disconnected in DHT (#6140)
  • Add DataColumnSidecar gossip topic and message handling (#6147)
  • Use then instead of then_some when checking upnp_enabled to avoid useless UPnP query (#6170)
  • Remove backwards compatibility for el_offline and is_optimstic (#6168)
  • Show correct total validator count during validator recovery (#6153)
  • Update msrv to 1.78.0 (#6159)
  • Revert --image-download always flag to avoid CI getting rate limited (#6163)
  • Siren Docs Upgrade (#5979)
  • Remove use of ethers core (#5301)
  • level down libp2p quic accept and close errors (#6148)
  • Make proposer duties work pre-genesis (#4789)
  • Update is_available check to support PeerDAS. (#6076)
  • Add PeerDAS presets and configs. (#6127)
  • Upgrade openssl to address cargo audit issue (#6143)
  • Attempt to fix flaky basic sim test (#6134)
  • Delete --builder-profit-threshold flag (#6131)
  • Return syncing on HTTP when sync is stalled (#6129)
  • Add an option to keep existing enclave when starting local testnet (#6065)
  • Add requires suggested-fee-recipient flag when always-prepare-payload is set (#6079)
  • Disable slasher default features (#6115)
  • Fix proposer-nodes cli flag name (#6125)
  • chore: update the trusted setup to match the consensus-specs version (#6117)
  • Track store metrics by DB column (#6041)
  • Ef tests electra (#5758)
  • Remove VC response signing and fix HTTP error handling (#5529)
  • Remove trace logging (#6103)
  • Measure consensus verification time (#6089)
  • Add block_gossip Beacon API events (#5864)
  • Bump default logfile-max-number to 10 (#6092)
  • Beacon api + validator electra (#5744)
  • Enable the outbound rate limiter by default, and update blobs method quotas (#6093)
  • Add range sync metrics to track efficiency (#6095)
  • Update Dockerfile to work on latest version of Docker (#6087)
  • Unimplement TreeHash for BeaconState (#6083)
  • Bound max count of lookups (#6015)
  • Change DB Manager Clap usage to derive (#5898)
  • Fix builds with slasher-redb (#6077)
  • Reject octet-stream content type when we expect json (#5862)
  • Log warning on startup if chain spec contains misaligned fork epochs (#5859)
  • Drop overflow cache (#5891)
  • update windows logo location in release template (#6056)
  • Add PeerDAS DataColumn type (#5913)
  • Drop unused store metrics (#6042)
  • Add sync network context cache size metrics (#6049)
  • Implement gossipsub IDONTWANT (#5422)
  • Add randomization in sync retry batch peer selection (#5822)
  • Delete old database schemas (#6051)
  • Remove generic Id param from RequestId (#6032)
  • Delete cached_tree_hash (#6060)
  • Show blst hardware support in lighthouse --version (#6039)
  • Increase penalty for old block gossip spam (#6050)
  • Drop skip too large condition for liveness safety (#6014)
  • Record BEACON_BLOCK_DELAY_GOSSIP metric only after a bock is verified (#6046)
  • Store pubkey cache decompressed on disk (#5897)
  • Downgrade duplication log of attestation to Debug (#6007)
  • Update Sepolia Bootnodes (#6037)
  • Update MDBX (#6024)
  • Broadcast validator registration to all synced beacon nodes (#5976)
  • Fix SigVerifiedOp SSZ implementation (#6035)
  • Electra engine api (#5743)
  • Delete duplicated serde code (#6027)
  • Redb slasher backend impl (#4529)
  • Electra epoch processing (#5761)
  • Merge remote-tracking branch 'origin/stable' into unstable
  • Pass vec to range sync batch (#5710)
  • Bound lookup parent chain length with tip extension (#5705)
  • Prevent connections from peers with a banned ip history (#6008)
  • Avoid rayon in lighthouse block verification (#5992)
  • Enable jemalloc by default on non windows targets (#5995)
  • Block processing electra (#5741)
  • Electra: Remaining Consensus Data Structures (#5712)

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-v5.3.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v5.3.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v5.3.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v5.3.0-x86_64-windows.tar.gz PGP Signature
System Option - Resource
Docker v5.3.0 sigp/lighthouse

Don't miss a new lighthouse release

NewReleases is sending notifications on new releases.