Skip to content

Summer Smith Prime

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 30 Apr 07:25
v7.0.1
e42406d

Summary

This release includes the fork epoch for Electra ⚑ on Mainnet πŸŽ‰

v7.0.1 is a hotfix for the increased number of state cache misses reported following the v7.0.0 release last week.

If you have not yet upgraded to v7.0.0, it is recommended to upgrade straight to v7.0.1. These release notes also describe all of the changes in v7.0.0.

As a reminder, all mainnet users must upgrade to either v7.0.1 or v7.0.0 by the time of the fork on 7 May 2025. You must also update your execution client (e.g. Geth, Nethermind, Erigon, Besu or Reth).

⚠️ Breaking Changes ⚠️

You can upgrade to v7.0.1 from any v5 or v6 release. If you are upgrading from v5 you should make sure to read the v6 release notes to account for breaking changes between v5 and v6.

Upgrading to Lighthouse v7.0.1 should require no manual intervention aside from updating the binary or Docker image, as there are no changes to CLI flags that will prevent the node from starting. Mainnet users must upgrade before the Electra fork. Failure to upgrade in time will require a re-sync.

Once you upgrade to Lighthouse v7.0.1, you can downgrade to v6, but only prior to the Electra fork.

See the sections below for details on other backwards-incompatible changes:

  • Deprecated CLI flags
  • Minimum supported Rust version
  • IPv6 by default
  • Gas limit enforcement

⚠️ Deprecated CLI Flags ⚠️

The following beacon node flags have been deprecated. You should remove them, but the beacon node will still start if they are provided.

  • --light-client-server

πŸ¦€ Minimum Supported Rust Version πŸ¦€

We have updated the Minimum Supported Rust Version (MSRV) for this release from 1.80.0 to 1.83.0.

This is only relevant to users compiling Lighthouse from source.

You can update your Rust compiler using:

rustup update stable

IPv6 by Default

Lighthouse will now automatically listen on IPv6 if it detects a globally-routable address. We expect for the majority of users with IPv4-only setups that this change will have no effect, but that it will benefit users with correctly configured IPv6 stacks.

The default IPv6 listening port has been changed from port 9090 to port 9000 (same as IPv4) to make firewalling easier. The IPv6 port can be adjusted using the flag --port6.

You can opt-out of IPv6 by using the flag--listen-address 0.0.0.0 to only listen on IPv4.

For more information, see the Lighthouse blog:

Gas Limit Enforcement

Lighthouse BN now enforces gas limit preferences when validating execution payloads from external builders (e.g. mev-boost relays). You can configure the gas limit for all validators connected to a VC using --gas-limit, or set individual limits in the validator_definitions.yml, or using the VC HTTP API.

⚑ Electra ⚑

The Electra hard fork, paired with the Prague hard fork on the execution layer – together known as Pectra – brings several new features to Ethereum.

The headline change is known as Max EB, and raises the maximum effective balance a single validator may wield from 32 ETH to 2048 ETH. Once adopted, this will allow the network to run more efficiently with a lower validator count, while retaining the same level of security. Max EB even removes some centralisation vectors from staking incentives so that solo validators are able to tap into the compounding rewards previously enjoyed exclusively by large operators.

The process of switching a validator's max effective balance is a consolidation, which transfers stake from one validator to another. Consolidations are triggered via a smart contract call, and are fully opt-in and voluntary. If you are a solo operator with a small number of validators, there is no need to consolidate, although you may choose to do so.

Information about consolidation tooling has been added to the Lighthouse book:

Bug Fixes

State Cache Misses

A number of users reported seeing an increased number of state cache misses following the update to v7.0.0:

Apr 30 15:45:30.000 WARN State cache missed

We have restored the state cache size to 128 in order to reduce cache misses, and will continue optimising the cache for non-finality. See the issue for details: #7363

Bugfix for InsufficientPeers

Both v7.0.1 and v7.0.0 include a bugfix for a regression in attestation subscription logic, resolving InsufficientPeers errors.

New Features

  • Electra fork epoch for Gnosis chain.
  • Light client server enabled by default.
  • Support for a new database backend, redb. This is still experimental and only reccommended for expert users.
  • New API to add trusted peers at runtime (#7198).
  • Full Hoodi testnet support (--network hoodi).

Optimisations

  • Smarter state cache heuristics.
  • More efficient serving of BlocksByRange/BlobsByRange during non-finality.

Known Issues

There are few minor issues being investigated.

  • Some users report their lighthouse vc processes seizing up and becoming unresponsive. A workaround for this issue is to run a script that regularly polls the validator client HTTP API, e.g. while sleep 5; do curl -s --fail "http://localhost:5062/lighthouse/auth" > /dev/null && echo "polled at $(date)"; done. This requires enabling the HTTP API on the validator client using the flag --http. See the Lighthouse book for more information: https://lighthouse-book.sigmaprime.io/api_vc.html. There is a tracking issue for this bug here: #7403.
  • The light client server will log ERRO error computing light_client updates LightClientUpdateError(BeaconStateError(IncorrectStateVariant)) at the fork until the transition epoch is finalized. This is harmless (albeit annoying) as Lighthouse's light client server is non-essential for validating, and this issue has no negative impact on performance.
  • An error log is incorrectly emitted for certain types of invalid attestations received from peers: ERRO Unable to validate attestation error: AttestationValidationError(BeaconStateError(EmptyCommittee)). These attestations are the fault of the peers producing them, but Lighthouse incorrectly assumes an internal fault and does not penalise the peers. We do not have time to fix this before the fork, but the impact should be minimal. A fix will be included in the next Lighthouse release. The invalid attestations have been identified to come from Caplin (Erigon consensus client), see: erigontech/erigon#14830.

Update Priority

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

User Class Beacon Node Validator Client
Mainnet Users High High
Testnet Users Low Low

Update priority is Low if you have already updated to v7.0.0.

See Update Priorities for more information about this table.

Compatible Execution Clients

You must update both the consensus client (Lighthouse) and execution client to be ready for Pectra.

Execution client Pectra-ready version
Reth v1.3.12
Nethermind v1.31.9
Geth v1.15.10
Erigon v3.0.2
Besu 25.4.1

All Changes

  • Release v7.0.1 (#7374)
  • Change default state cache size back to 128 (#7364)
  • Release v7.0.0 (#7288)
  • Merge remote-tracking branch 'origin/stable' into release-v7.0.0
  • Release v7.0.0-beta.7 (#7333)
  • Update proposer_slashings and attester_slashings amounts for electra. (#7316)
  • Release v7.0.0-beta.6
  • Update withdrawals processing (spec v1.5.0-beta.6)
  • Ensure /eth/v2/beacon/pool/attestations honors committee_index (#7298)
  • Ensure light_client/updates endpoint returns spec compliant SSZ data (#7230)
  • Update crossbeam to fix cargo audit failure (#7313)
  • Gnosis Pectra fork epoch (#7296)
  • Update and cleanup Electra preset (#7303)
  • Downgrade light client errors (#7300)
  • Add pending_consolidations Beacon API endpoint (#7290)
  • Remove/document remaining Electra TODOs (#6982)
  • Clarify network limits (#7175)
  • Fix builder API electra json response (#7285)
  • Mainnet Electra fork epoch (#7275)
  • Return eth1_data early post transition (#7248)
  • Compute roots for unfinalized by_range requests with fork-choice (#7098)
  • Bump openssl to fix cargo audit failure (#7263)
  • Rust 1.86.0 lints (#7254)
  • feat: add more bootnodes for Hoodi and Sepolia (#7222)
  • Consensus spec tests beta4 (#7231)
  • Disable LevelDB snappy feature (#7235)
  • Admin add/remove peer (#7198)
  • Top-up pubkey cache on startup (#7217)
  • Release v7.0.0-beta.5 (#7210)
  • Fix xdelta3 output buffer issue (#7174)
  • Prevent duplicate effective balance processing (#7209)
  • Release v7.0.0-beta.4 (#7162)
  • Update ring to 0.17.14 to fix build compat (#7164)
  • Reject attestations to blocks prior to the split (#7084)
  • Manual compaction endpoint backport (#7104)
  • Pseudo finalization endpoint (#7103)
  • Support Hoodi testnet (#7145)
  • State cache tweaks (#7095)
  • Add block ban flag --invalid-block-roots (#7042)
  • Ensure finalized block is the correct fork variant when constructing light client updates (#7085)
  • feat: implement new beacon APIs(accessors for pending_deposits/pending_partial_withdrawals) (#7006)
  • Address cargo audit failure RUSTSEC-2024-0437 (#7114)
  • Set epochs-per-blob-prune default to 256 (#7113)
  • Change state cache size default to 32 (#7101)
  • Address cargo audit failure RUSTSEC-2025-0009 (#7086)
  • Optimise status processing (#7082)
  • Temporarily ignore cargo audit failures (#7092)
  • Use sync_tolerance_epochs flag to control the proposer prep routines (#7044)
  • Schedule Chiado testnet Electra hard fork (#7074)
  • Make ExecutionBlock::total_difficulty Optional (#7050)
  • Add --long-timeouts-multiplier CLI flag (#7047)
  • Add --disable-attesting flag to validator client (#7046)
  • Add test flag to override SYNC_TOLERANCE_EPOCHS for range sync testing (#7030)
  • Fix builder API headers (#7009)
  • Rust 1.85 lints (#7019)
  • Fix light client merkle proofs (#7007)
  • Update mergify conditions for trivial and ready-for-merge labels to satisfy if base is not stable (#6997)
  • Release v7.0.0-beta.0 (#6962)
  • Fix light client plumbing in beacon processor (#6993)
  • Ensure GET v2/validator/aggregate_attestation is backwards compatible (#6984)
  • Address cargo audit failure RUSTSEC-2025-0006 (#6972)
  • IPv6 By Default (#6808)
  • Update EF tests to spec v1.5.0-beta.2 (#6958)
  • Sync active request byrange ids logs (#6914)
  • Enable Light Client server by default (#6950)
  • Schedule Sepolia and Holesky Electra forks (#6949)
  • Update attestation rewards API for Electra (#6819)
  • Fix aggregate attestation v2 response (#6926)
  • Remove duplicated fork_epoch and fork_version implementation (#6953)
  • Optimise and refine SingleAttestation conversion (#6934)
  • Fix fetch blobs in all-null case (#6940)
  • Keep execution payload during historical backfill when prune-payloads set to false (#6766)
  • Remove un-used batch sync error condition (#6917)
  • Remove unused metrics (#6817)
  • Reduce ForkName boilerplate in fork-context (#6933)
  • Use old geth version due to breaking changes. (#6936)
  • Fix attestation queue length metric (#6924)
  • Update metrics.rs (#6863)
  • Add individual by_range sync requests (#6497)
  • Return error if getBlobs not supported (#6911)
  • Add test to beacon node fallback feature (#6568)
  • Add check to Lockbud CI job (#6898)
  • UX Network Fixes (#6796)
  • chore: update peerDAS KZG library to 0.5.3 (#6906)
  • Migrate validator client to clap derive (#6300)
  • Use data column batch verification consistently (#6851)
  • Add builder SSZ flow (#6859)
  • Subscribe to PeerDAS topics on Fulu fork (#6849)
  • Fix subnet unsubscription time (#6890)
  • Cargo update for openssl vuln (#6901)
  • update libp2p to 0.55 (#6889)
  • update MSRV (#6896)
  • Compute columns in post-PeerDAS checkpoint sync (#6760)
  • Fix mdbook build. (#6891)
  • POST /eth/v2/beacon/pool/attestations bugfixes (#6867)
  • Cargo update without rust_eth_kzg (#6848)
  • Implement PeerDAS Fulu fork activation (#6795)
  • Make range sync chain Id sequential (#6868)
  • Underflow and Typo (#6885)
  • Increase jemalloc aarch64 page size limit (#5244) (#6831)
  • Some sync/backfill format nits (#6861)
  • Fork aware max values in rpc (#6847)
  • More gossipsub metrics (#6873)
  • Fix Redb implementation and add CI checks (#6856)
  • Detect invalid proposer signature on RPC block processing (#6519)
  • Add tests for ExecutionRequests decoding errors (#6832)
  • Update to EF tests v1.5.0-beta.1 (#6871)
  • Improve mergify config (#6852)
  • Modularize beacon node backend (#4718)
  • Electra minor refactorings (#6839)
  • Fix branch/tag names in mergify config (#6842)
  • update script for new mergify syntax (#6597)
  • Update discv5 (#6836)
  • Avoid computing columns from EL blobs if block has already been imported (#6816)
  • Add MetaData V3 support to node/identity API (#6827)
  • Refactor mock builder (#6735)
  • Add EIP-7636 support (#6793)
  • Fix custodial peer assumption on lookup custody requests (#6815)
  • Do not send column requests if there is no blob for the block. (#6814)
  • SingleAttestation implementation (#6488)
  • Misc. dependency cleanup (#6810)
  • Remove ineffectual block RPC limits post merge (#6798)
  • Implement PeerDAS subnet decoupling (aka custody groups) (#6736)
  • Fix data columns not persisting for PeerDAS due to a getBlobs race condition (#6756)
  • Use existing peer count metrics loop to check for open_nat toggle (#6800)
  • Implement changes for EIP 7691 (#6803)
  • Execution requests with prefix (#6801)
  • Electra spec changes for v1.5.0-beta.0 (#6731)
  • Refactor feature testing for spec tests (#6737)
  • Add missing crates to cargo workspace (#6774)
  • Make max_blobs_per_block a config parameter (#6329)
  • Add Fulu boilerplate (#6695)
  • Use oldest_block_slot to break off pruning payloads (#6745)
  • Add libssl install to udeps task (#6777)
  • Rust 1.84 lints (#6781)
  • Fix incorrect VC default HTTP token path when the --datadir flag is present (#6748)
  • Fix incorrect data column metric name (#6761)
  • Implement getBlobSidecars support for PeerDAS (#6755)
  • Add 'beacon_' prefix to PeerDAS metrics names (#6537)
  • add joao CODEOWNERS (#6762)
  • fully lint only explicitly to avoid unnecessary rebuilds (#6753)
  • Make sure we have fanout peers when publish (#6738)
  • Ensure non-zero bits for each committee bitfield comprising an aggregate (#6603)
  • Revise Siren documentation (#6553)
  • Delete OTB verification service (#6631)
  • Enforce alphabetically ordered cargo deps (#6678)
  • Fix anvil 404 link in docs (#6724)
  • Fix Sse client api (#6685)
  • Unsaturate dial negotiation queue (#6711)
  • Add spell check and update Lighthouse book (#6627)
  • Electra alpha8 spec updates (#6496)
  • Enable lints for tests only running optimized (#6664)
  • Fix peer down-scoring behaviour when gossip blobs/columns are received after getBlobs or reconstruction (#6686)
  • Write range sync tests in external event-driven form (#6618)
  • Remove req_id from CustodyId (#6589)
  • Fix web3signer test fails on macOS (#6588)
  • builder gas limit & some refactoring (#6583)
  • Add CLI flag for HTTP API token path (VC) (#6577)
  • Merge remote-tracking branch 'origin/stable' into back-merge-6.0.1
  • Track beacon processor import result metrics (#6541)
  • Remove heading that isn't rendered correctly (#6650)
  • Fix for blank line in graffiti file (#6635)
  • Remove ZeroizeString in favour of Zeroizing<String> (#6661)
  • Merge remote-tracking branch 'origin/release-v6.0.1' into unstable
  • Deprecate futures ticker (#6630)
  • Add a security section to the book (#6581)

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