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
intodata_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 ofRuntimeVariableList
(#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 toopentelemetry_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 inkzg_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
overStatusV1
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
insidecontext_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 |
---|---|---|---|
| aarch64 | lighthouse-v8.0.0-rc.0-aarch64-apple-darwin.tar.gz | PGP Signature |
| x86_64 | lighthouse-v8.0.0-rc.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature |
| aarch64 | lighthouse-v8.0.0-rc.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature |
| x86_64 | lighthouse-v8.0.0-rc.0-x86_64-windows.tar.gz | PGP Signature |
System | Option | - | Resource |
| Docker | v8.0.0-rc.0 | sigp/lighthouse |