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.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
honorscommittee_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
andready-for-merge
labels to satisfy if base is notstable
(#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 ofZeroizing<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 |