github sigp/lighthouse v7.0.0-beta.0
Beta-Seven

pre-release5 days ago

💡 Mainnet users can ignore this pre-release.

Summary

This beta release is high-priority for users on Holesky and Sepolia. It is a required upgrade for the upcoming Electra hard forks on these testnets.

  • Electra on Holesky: Mon 24 Feb 2025 21:55:12 UTC. Slot 3710976.
  • Electra on Sepolia: Wed 5 Mar 2025 07:29:36 UTC. Slot 7118848.

If you are running Lighthouse on a testnet, you must also upgrade your execution layer client to a Prague-Electra (Pectra) compatible release.

The Electra upgrade has not yet been scheduled on mainnet, so no action is required for mainnet users (do not upgrade).

Notable changes in Lighthouse v7.0.0-beta.0 include:

  • IPv6 enabled by default when a globally-routable IPv6 address is configured.
  • Light client server enabled by default.
  • Bugfix for a regression in attestation subscription logic.
  • Support for a new database backend, redb.

⚠️ Breaking Changes ⚠️

You can upgrade to v7.0.0-beta.0 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.0-beta.0 should be automatic for all users, as there are no changes to CLI flags that will prevent the node from starting. Holesky and Sepolia users must upgrade before the Electra fork. Failure to upgrade in time will require a re-sync.

Once you upgrade to Lighthouse v7.0.0-beta.0, you can downgrade to v6, but only prior to the Electra fork.

⚠️ 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

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 implementation PR:

🦀 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

⚡ 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.

We expect the tooling and documentation for consolidations to mature as Electra on mainnet approaches. We have plans of our own to update the Lighthouse UI (Siren) with consolidation support, and will make an announcement when that is ready.

Light Client Server

We have enabled the Light Client Server by default 🎉. Our implementation has reached a stage of maturity and performance where we feel comfortable rolling it out by default. It should result in negligible changes to bandwidth, CPU usage, memory and disk I/O for users.

The light client protocol allows very lightweight clients and devices to interact with Ethereum, and we are excited to see how the ecosystem evolves with more widespread protocol support.

You can opt-out of the light client server using --disable-light-client-server.

Attestation Subscription Fix

A fix was made to the beacon node's attestation subscription logic which could lead to under-subscription and issues publishing aggregate attestations. This has been addressed in the following PR:

New Database Backends

A new database backend is available in the form of redb. This is a pure-Rust database, with nice ACID properties. We hope to modernise and optimise our database usage around redb in the coming months.

For now, redb is performing slightly worse than LevelDB for some operations, and is only recommended for expert users and tinkerers. You can opt-in using --beacon-node-backend redb. This won't make use of any existing LevelDB database, nor will it delete it, so you should delete your LevelDB database manually and then checkpoint sync if you would like to switch.

🐛 Known Issues 🐛

There are no known issues at the time of writing.

Update Priority

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

User Class Beacon Node Validator Client
Staking Users (testnet) High High
Non-Staking Users (testnet) High ---
Staking Users (mainnet) DON'T UPDATE DON'T UPDATE
Non-Staking Users (mainnet) DON'T UPDATE ---

See Update Priorities for more information about this table.

Testnet users should update both the Lighthouse VC and BN to v7.0.0-beta.0 if using separate binaries. The execution layer client (e.g. Geth, Reth, Besu, Nethermind, Erigon) must also be updated prior to the Electra fork.

All changes

  • 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)
  • Modularize beacon node backend (#4718)
  • Electra minor refactorings (#6839)
  • 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)

See full changelog here.

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

Don't miss a new lighthouse release

NewReleases is sending notifications on new releases.