github sigp/lighthouse v8.0.0-rc.0
Memory Rick

pre-release9 hours ago

Summary

Lighthouse v8.0.0-rc.0 is a release candidate for the upcoming Fulu-Osaka (Fusaka) hard fork, targeting the Holesky, Hoodi, and Sepolia testnets. It is a required upgrade for the upcoming Fusaka hard forks on these testnets.

  • Fulu on Holesky: 2025-10-01 08:48:00 UTC. Slot 5283840.
  • Fulu on Sepolia: 2025-10-14 07:36:00 UTC. Slot 8724480.
  • Fulu on Hoodi: 2025-10-28 18:53:12 UTC. Slot 1622016.

This release brings full Fusaka support (including PeerDAS), enhanced networking capabilities, and other optimisations.

While primarily intended for testnets, this release includes a memory leak fix and several performance improvements that may be useful to some mainnet users. However, the Fusaka upgrade has not yet been scheduled on mainnet, so mainnet users who choose to upgrade will still need to upgrade again to the official v8.0.0 mainnet release (scheduled for November 2025) before the mainnet fork.

⚠️ Breaking Changes ⚠️

💾 Database Schema Upgrade

Lighthouse v8.0.0-rc.0 includes a database schema upgrade to schema v28. This upgrade greatly reduces the size of fork choice on disk, leading to reduced I/O.

No action is required upon upgrading, Lighthouse will automatically upgrade your database to the new version.

If you would like to downgrade to a prior release (e.g. v7.1.0), then you must follow the instructions in the Lighthouse book for downgrading the database schema before switching your binary to the old version.

🦀 Rust Version Requirements (MSRV)

If you build Lighthouse from source you need to upgrade your Rust compiler to v1.88.0 or later. Usually this can be accomplished with the command rustup update.

🔑 Network Key Format Migration

Lighthouse BN's private key that it uses for networking cryptography has been changed from binary to hex string format. This is only relevant for users who are manually manipulating these keys, or downgrading to an older version of Lighthouse after running v8.0.0-rc.0.

Lighthouse will automatically change the format of the key from binary to hex upon upgrading. Because the new key format is not supported by previous versions of Lighthouse, the key must be manually deleted if you would like to downgrade. The key can be found at $datadir/network/key.

🍎 Platform Support Changes

Pre-built macOS x86_64 binaries are no longer provided (#7862). Apple, GitHub runners, and Rust are dropping x86_64 macOS support, so we have made the decision to phase out support.

macOS x86 users should use the Linux Docker image, the homebrew package, or build Lighthouse from source.

🖥️ CLI Flag Changes

  • Changed: The default --block-cache-size is now 0 (#8066). To re-enable, use --block-cache-size N with a non-zero argument. We recommend leaving the cache disabled, as its absence improves performance for block persistence and RPC responses.

🦓 Fulu

This release candidate introduces full support for the Fulu hard fork, paired with the Osaka hard fork on the execution layer - together known as Fusaka - brings PeerDAS (Data Availability Sampling) and several new features to Ethereum. See this post for details.

New CLI Flags

  • --supernode: Subscribe to all data column subnets and run as a PeerDAS supernode (renamed from --subscribe-all-data-column-subnets) (#8083). The old name is aliased for now but will eventually be removed.

🔧 Memory & Performance Fixes

  • Fixed reprocess queue memory leak (#8065): Resolves gradual memory consumption increase during normal operation
  • Block cache optimization (#8066): Cache now disabled by default, eliminating contention issues
  • Reduced KZG verification overhead: Removed unnecessary verification from local block production (#7713, #7771)

📊 Add OpenTelemetry support

Lighthouse now includes built-in OpenTelemetry support for advanced monitoring and performance analysis. OpenTelemetry provides detailed traces showing exactly how your node processes blocks, handles network requests, and performs validator duties - breaking down operations into individual steps with precise timing data. This helps devlopers and operators identify bottlenecks, troubleshoot performance issues, and potentially optimize their setup.

New CLI Flags

  • --telemetry-collector-url: Connect to an OpenTelemetry GRPC backend (e.g. opentelemetry-collector, Tempo) to export traces (#7816)
  • --telemetry-service-name: Override the service name differentiating traces when running multiple nodes

Getting Started: Set up an OpenTelemetry collector (such as Grafana Tempo) and run Lighthouse beacon node with the following flags:

--telemetry-collector-url http://localhost:4317 --telemetry-service-name lighthouse-bn

Other Notable Changes

  • SSZ default: Validator client now uses SSZ by default for /eth/v3/validator/blocks endpoint (#7727)
  • Selection Beacon API endpoints: Implement selections Beacon API endpoints to support DVT middleware (#7016)
  • New experimental beacon node flag:--complete-blob-backfill flag enables backfilling all blobs beyond the 18-day window (#7751)

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) Low Low
Non-Staking Users (mainnet) Low ---

See Update Priorities for more information about this table.

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

Mainnet users may consider upgrading if experiencing high memory usage. However this release candidate does NOT have mainnet Fulu fork baked in yet, as the fork schedule has not been finalised. Users will have to upgrade to the v8.0.0 mainnet release before the mainnet Fulu fork.

All Changes

  • Release v8.0.0 rc.0 (#8127)
  • Fix proposer shuffling decision slot at boundary (#8128)
  • Fix bug in fork calculation at fork boundaries (#8121)
  • Fix bugs in proposer calculation post-Fulu (#8101)
  • Fulu testnet configs (#8117)
  • Only mark block lookups as pending if block is importing from gossip (#8112)
  • Only send data coumn subnet discovery requests after peerdas is scheduled (#8109)
  • Run reconstruction inside a scoped rayon pool (#8075)
  • Use HTTPS for xdelta3 in Cargo.toml (#8094)
  • Reduce TARGET_BACKFILL_SLOTS in checkpoint sync test (#8102)
  • Refine HTTP status logs (#8098)
  • Merge remote-tracking branch 'origin/stable' into unstable
  • Always upload sim test logs (#8082)
  • Rename --subscribe-all-data-column-subnets to --supernode and make it visible in help (#8083)
  • Consolidate reqresp_pre_import_cache into data_availability_checker (#8045)
  • Use scoped rayon pool for backfill chain segment processing (#7924)
  • Make the block cache optional (#8066)
  • Add release helper script to list PRs and breaking changes (#7737)
  • Add experimental complete-blob-backfill flag (#7751)
  • Fix reprocess queue memory leak (#8065)
  • Prevent silently dropping cell proof chunks (#8023)
  • Update issue template (#7938)
  • fix(rate_limiter): add missing prune calls for light client protocols (#8058)
  • Don't penalize peers for extending ignored chains (#8042)
  • chore: Bump discv5 and remove generic DefaultProtocolId in metrics (#8056)
  • Enable reconstruction for nodes custodying more than 50% of columns and instrument tracing (#8052)
  • Add instrumentation to recompute_head_at_slot (#8049)
  • Reduce reconstruction queue capacity (#8053)
  • Remove column reconstruction when processing rpc requests (#8051)
  • Another check to prevent duplicate block imports (#8050)
  • Update engine methods in notifier (#8038)
  • Add max delay to reconstruction (#7976)
  • Add missing event in PendingComponent span and clean up sync logs (#8033)
  • Remove unused logging metrics (#7997)
  • Expose functions to do preliminary slashing checks (#7783)
  • Increase HTTP timeouts on CI (#8031)
  • Fixed orphaned verify_cell_proof_chunk span. (#8026)
  • Remove cargo test targets, use nextest exclusively (#7874)
  • chore: add comment to PendingComponents (#7979)
  • Create network_utils crate (#7761)
  • Skip column gossip verification logic during block production (#7973)
  • Fix http api tests ci (#7943)
  • Reduce noise in Debug impl of RuntimeVariableList (#8007)
  • Instrument tracing on block production code path (#8017)
  • fix: extra fields in logs (#8009)
  • Fix stuck data column lookups by improving peer selection and retry logic (#8005)
  • Don't penalize peers if locally constructed light client data is stale (#7996)
  • Add co-author to mergify commits (#7993)
  • Fix data column reconstruction error (#7998)
  • Fix incorrect prune test logic (#7999)
  • Allow AwaitingDownload to be a valid in-between state (#7984)
  • Maintain peers across all data column subnets (#7915)
  • Simplify length methods on BeaconBlockBody (#7989)
  • Add tls-roots feature to opentelemetry_otlp to support exporting traces over https (#7987)
  • Implement selections Beacon API endpoints to support DVT middleware (#7016)
  • Remove ttfb_timeout and resp_timeout (#7925)
  • Update tracing (#7981)
  • Fix data availability checker race condition causing partial data columns to be served over RPC (#7961)
  • Remove expect usage in kzg_utils (#7957)
  • chore: small refactor of epoch method (#7902)
  • Update to 1.6.0 alpha.6 spec (#7967)
  • Remove dependency on target_info. (#7964)
  • Impl ForkVersionDecode for beacon state (#7954)
  • Avoid serving validator endpoints while the node is far behind syncing head (#7962)
  • Use rayon to speed up batch KZG verification (#7921)
  • Reduce backfill batch buffer size (#7958)
  • Instrument publish_block code path (#7945)
  • Fix doppelganger protection script (#7959)
  • Delete RuntimeVariableList::from_vec (#7930)
  • Fix data columns by range returning all columns (#7942)
  • Update to spec v1.6.0-alpha.5 (#7910)
  • Notify lookup after gossip data column processing resulted in an import (#7940)
  • Add BEACON_PROCESSOR_WORKERS_ACTIVE_GAUGE_BY_TYPE metric (#7935)
  • Run sync tests on CI by default. (#7929)
  • Add Gloas boilerplate (#7728)
  • Fix RPC blocks not getting fully KZG verified (#7927)
  • Fix DataColumnsByRoot request limit validation bug (#7928)
  • Use Fork variants instead of version for JsonPayload types (#7909)
  • use DEFAULT_TARGET_PEERS for target peers everywhere (#7916)
  • Prioritise StatusV2 over StatusV1 RPC protocol (#7912)
  • Update lighthouse to the latest upstream libp2p and gossipsub (#7828)
  • Re-assess Lighthouse's peer count for Fusaka (#7877)
  • Implement tracing spans for data columm RPC requests and responses (#7831)
  • Avoid unnecessary database lookups in data column RPC requests (#7897)
  • Add tempo to local testnet config and update fulu kurtosis config files (#7898)
  • Fulu update to spec v1.6.0-alpha.4 (#7890)
  • Add --telemetry-service-name CLI flag for OpenTelemetry service name override (#7903)
  • Revise data column rpc limits and queue sizes (#7887)
  • Do not filter validators by status if filter is an empty list (#7884)
  • Shrink persisted fork choice data (#7805)
  • Add rustfmt config with edition 2024 (#7888)
  • Upgrade rust-eth-kzg to 0.8.0 (#7870)
  • Transition network key to hex format (#7665)
  • Fix malloc_utils features (sysmalloc) (#7770)
  • Fix ssz formatting for /light_client/updates beacon API endpoint (#7806)
  • Yeet env_logger into the sun (#7872)
  • Try using sccache instead of disabling (#7873)
  • Allow for sync state where batch is unknown (#7391)
  • Update Rust Edition to 2024 (#7766)
  • Disable sccache to fix Windows builds (#7867)
  • Deprecate macOS-x86 binaries (#7862)
  • Initial Claude.md draft (#7848)
  • Re-export context_deserialize_derive inside context_deserialize (#7852)
  • Fix bugs in rebasing of states prior to finalization (#7849)
  • Backfill peer attribution (#7762)
  • Add metrics to track beacon processor queue times (#7808)
  • Add a flag to disable getBlobs (#7853)
  • Instrument tracing spans for block processing and import (#7816)
  • Fix Rust 1.89 compiler warnings in slasher tests. (#7844)
  • Fix Makefile line continuation syntax in test-release target (#7834)
  • Adjust DA checker cache size (#7825)
  • Fix wrong columns getting processed on a CGC change (#7792)
  • Fix: RPC test failures (#7734)
  • Shuffling for 32 bit platforms (#7725)
  • Fix Clippy for Rust 1.90 beta (#7826)
  • Update fetch blobs metrics buckets (#7823)
  • Filter dependencies from SSE logging (#7819)
  • Simplify ConfigAndPreset (#7777)
  • Add builder blinded_blocks v2 (#7778)
  • Remove KZG verification on blobs fetched from the EL (#7771)
  • Update spec tests to 1.6.0-alpha.3 (#7786)
  • Bump Rust version to 1.88 (#7787)
  • Skip serializing blob_schedule before Fulu (#7779)
  • Feature gate arbitrary crate in the consensus types crate (#7743)
  • Remove peer sampling code (#7768)
  • Use SSZ by default when calling /eth/v3/validator/blocks (#7727)
  • Refine delayed head block logging (#7705)
  • Control span data through tracing Extensions (#7239)
  • Data column custody info (#7648)
  • Remove KZG verification from local block production and blobs fetched from the EL (#7713)
  • Add heaptrack support (#7764)
  • Serialize bpo schedule in asending order (#7753)
  • Fix enr loading from disk with cgc (#7754)
  • Add additional broadcast validation tests for Fulu/PeerDAS (#7325)
  • Allow /validator apis to work pre-genesis (#7729)
  • Add a guide to partially reconstruct historic states to Lighthouse book (#7679)
  • Sync peer attribution (#7733)
  • Final changes for fusaka-devnet-2 (#7655)
  • Improve data column KZG verification metric buckets (#7717)
  • Merge remote-tracking branch 'origin/stable' into unstable
  • Upgrade to c-kzg 2.1.0 and alloy-primitives 1.0 (#7271)
  • Fix description of DB read bytes metric (#7716)
  • Make notifier_service::notify pub (#7708)
  • Update LH book for v7.1.0 (#7706)

Binaries

See pre-built binaries documentation.

The binaries are signed with Sigma Prime's PGP key: 15E66D941F697E28F49381F426416DC3F30674B0

System Architecture Binary PGP Signature
Apple logo aarch64 lighthouse-v8.0.0-rc.0-aarch64-apple-darwin.tar.gz PGP Signature
Linux logo x86_64 lighthouse-v8.0.0-rc.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
Raspberrypi logo aarch64 lighthouse-v8.0.0-rc.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
Windows logo x86_64 lighthouse-v8.0.0-rc.0-x86_64-windows.tar.gz PGP Signature
System Option - Resource
Docker logo Docker v8.0.0-rc.0 sigp/lighthouse

Don't miss a new lighthouse release

NewReleases is sending notifications on new releases.