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 tryredb
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 ofthen_some
when checkingupnp_enabled
to avoid useless UPnP query (#6170) - Remove backwards compatibility for
el_offline
andis_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 whenalways-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
forBeaconState
(#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 expectjson
(#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 inlighthouse --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 |