github sigp/lighthouse v8.2.0
Mr. Goldenfold

5 hours ago

Summary

⚠️ Lighthouse v8.2.0 is a high-priority release containing fixes for several security vulnerabilities, as well as optimisations and new features.

All beacon node users should upgrade as soon as practical. Validator client users should review the fee-recipient and graffiti changes below before upgrading.

This release also contains substantial Gloas preparation, Fulu data-availability networking improvements, and new standard API support.

Upgrade Notes

  • Mandatory fee recipient: Validator clients now refuse to startup when an enabled validator has no suggested_fee_recipient field in validator_definitions.yml and no global --suggested-fee-recipient fallback is configured. This prevents validator income from being lost accidentally.
  • Validator graffiti: Lighthouse beacon nodes now append client version information to user graffiti by default. To opt-out use the --graffiti-append false flag with Lighthouse VC or set graffiti that is between 30-32 bytes long. There is no change in behaviour if you are already using the --private flag for the beacon node.
  • 💾 Database schema v29: Lighthouse beacon nodes will automatically migrate the database from schema v28 to v29 on startup. A downgrade back to v28 is available prior to the Gloas hard fork, follow the instructions in the Lighthouse Book.

⚠️ Breaking Changes ⚠️

  • Validator fee recipient: Validator clients now refuse to startup when an enabled validator has no suggested_fee_recipient and no global --suggested-fee-recipient fallback is configured. This prevents validator income from being lost accidentally.

💻 Breaking Changes for Devs

  • Mplex will be disabled by default in the next release.
  • Removed non-standard Lighthouse APIs: /lighthouse/analysis/block_rewards, /lighthouse/analysis/attestation_performance/{index}, and /lighthouse/analysis/block_packing_efficiency.
  • Updated /eth/v1/beacon/rewards/* responses to match the beacon API spec wrappers, including execution optimistic/finalized metadata.
  • Pre-Fulu devnet support has been removed.
  • Merge transition support has been removed.

🗑️ Deprecated CLI Flags

The follow CLI flags for the beacon node have been deprecated:

  • --libp2p-addresses is deprecated in favour of --boot-nodes.
  • --reconstruct-historic-states is deprecated in favour of --archive.
  • --proposer-reorg-* flags are deprecated. We do not recommend changing these values.

🧩 Partial Data Columns

Lighthouse now supports partial data columns (EIP-8136). Partial columns reduce the bandwidth used to propagate blob data, utilizing data already present in the EL client. While partial data columns do not require a hard fork, the benefits scale as more of the network upgrades.

For now, Lighthouse only enables partial data columns by default on Hoodi and Sepolia. To opt out, use --enable-partial-columns false.

Notable Changes

  • Added extensive Gloas/ePBS support: payload envelopes, payload bids, payload attestations, PTC duties, proposer preferences, fork-choice changes, gossip verification, lookup/range sync, HTTP APIs, and validator-client duties.
  • Added standard API support for proposer lookahead, v2 proposer duties, payload bids, payload envelopes, PTC duties, proposer preferences, and new SSE topics including execution_payload, execution_payload_gossip, and proposer_preferences.
  • Improved validator-client behaviour for proposer preferences, payload attestation duties, per-validator fee-recipient validation, graffiti defaults, and validator-manager imports.

Update Priority

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

User Class Beacon Node Validator Client
Staking Users High Low
Non-Staking Users High ---

See Update Priorities for more information about this table.

Security Content

This section will be updated with security advisories as they are made public. We are not disclosing the complete security content of this release in order to give users time to upgrade.

  • Fix for a fork choice bug which could cause incorrect justification and finalization: #9471.
  • Fix for a fork choice bug resulting in #9364.
  • Fix for a slasher OOM: #9141.

All Changes

  • Release v8.2.0
  • Update deps
  • Add proposer preferences SSE event (#9308)
  • Fix race condition between validator duties service and proposer preferences (#9309)
  • Fix and improve handling of empty columns after getBlobs response (#9361)
  • Enable late re-org and re-org interactive tests (#9405)
  • Update DB docs for v8.2.0/schema v29 (#9489)
  • Refactor payload attestation service (#9492)
  • Correct unrealized justification for blocks with slashings (#9471)
  • Gloas attestation payload reprocess (#9440)
  • SSZ fallback to JSON in proposer_preferences (#9475)
  • fix(http_api): ignore committee_index in attestation data endpoint (#9437)
  • Remove --disable-partial-columns in favour of bool argument to --enable... (#9478)
  • Make single block lookup respect earliest_available_slot for column requests (#9447)
  • Use hashlink over lru for LruCache (#8911)
  • Enable mplex by default and change --enable-mplex to take bool (#9476)
  • Gloas alpha spec 9 (#9393)
  • Append client version info to user graffiti by default (#9313)
  • Allow release branches to target stable in target-branch-check (#9457)
  • deprecate disallowed-offsets config for re-orgs (#9449)
  • Only bake warpbuild snapshot from stable (#9462)
  • Bump discv5 (#9394)
  • Update warp snapshot build job (#9459)
  • Better partial diagnosics (#9436)
  • Gloas range sync (#9362)
  • Refactor payload_attestation_service and add payload attestation test to validator client (#9357)
  • Gloas lookup sync (#9155)
  • Fix sending partials from immediately complete columns (#9433)
  • Simplify lookup sync da_checker oracle (#9428)
  • Optimise slow block verification tests (#9274)
  • fix(network): clear ENR nfd field when no next fork is scheduled during runtime transitions (#9131)
  • Update gloas api routes to match updated spec (#9418)
  • Update libp2p (#9331)
  • Improve error types for envelopes (#9414)
  • Fix O(n²) find_head and stack overflow in filter_block_tree (#9090)
  • Ensure PTC votes accurately reflect data availability (#9412)
  • Remove unused spec field from AvailableBlock (#9411)
  • Reject importing Gloas block until parent's payload is imported (#9382)
  • Regression test for range sync CGC race condition (#8039)
  • Gloas data column reprocess queue (#9339)
  • Remove RequestState trait from lookup sync (#9391)
  • Disable Mplex by default (#9365)
  • Delete unnecessary SyncMessage variants (#9379)
  • Move BlockProcessingResult match out of block lookups (#9327)
  • Deprecate blob lookup sync (#9383)
  • Add POST beacon/bid endpoint (#9347)
  • Make proposer_score_boost non-optional in ChainSpec (#9386)
  • Use correct slot in custody request (#9380)
  • Delete bogus InvalidBestNode error (#9364)
  • Deprecate gossip blobs (#9126)
  • Rust 1.96 lints (#9368)
  • Add gossip validation spec tests for proposer/attester slashings (#9323)
  • Ensure we can serve blocks and columns after head event is emitted (#9338)
  • Fix non-canonical payload attestation processing (#9305)
  • Deprecate some reorg-related CLI flags and read from spec (#9177)
  • Enable partial data columns by default on Hoodi and Sepolia (#9343)
  • Add macro to simplify into_full_block implementations (#9294)
  • Add support for jemalloc memory profiling (#9326)
  • Gloas dont enforce peer column custody on block import (#9341)
  • Custody backfill sync only penalize peers once per batch (#9340)
  • Ensure we use the right fork when calculating payload attestation sig domain (#9342)
  • Gloas alpha spec 8 (#9315)
  • Add getBlobsV3 to LIGHTHOUSE_CAPABILITIES (#9330)
  • Drop unused EthSpec generic from Stores (#9281)
  • Partial columns cleanup (#9321)
  • Gloas lookup sync boilerplate (#9322)
  • Use dedicated cache for HTTP API route (#9318)
  • Remove outdated SPRP hint (#9312)
  • Gloas payload cache (#9209)
  • ignore-ws-check flag doesnt allow the node to start outside the weak subjectivity period (#9290)
  • Fix stale beacon_state_root in test helpers (#9289)
  • Dont penalize payload envelope peers after gossip verification (#9283)
  • chore: remove builder_index from produce_block_v4 (#9267)
  • Fix execution integration test CI failure (#9277)
  • Implement beacon_blocks_by_head (#9237)
  • Generalise reconstruct_historic_states for ranged replay (#9222)
  • Remove TestRandom (#9006)
  • Remove libssl dependency for cargo udeps (#9263)
  • fix: payload_attestation_data when no block received for slot (#9225)
  • Implement gloas proposer preference vc duty (#9208)
  • Unblock CI by temporarily ignoring hickory-proto audit failures (#9257)
  • fix: prevent duplicate column reconstruction dispatch (#9250)
  • Avoid 0x00 block hashes in fcU (#9233)
  • Update CI: warp runnner to use snapshot and use warm (#9217)
  • Gloas proposer preferences alpha 7 (#9239)
  • Gloas HTTP API tests passing (#9154)
  • Submit ptc votes that we produce to the ptc op pool (#9231)
  • Remove test_logger feature (#9125)
  • Import execution payload envelope locally during HTTP API publication (#9226)
  • Update proposer boost calculation (#9215)
  • Add Gloas bid inclusion (#9221)
  • Spec v1.7.0-alpha.6 and Gloas genesis (#9190)
  • Gossip reprocessed payload envelopes that are timely (#9210)
  • Gloas publish data columns during local block building (#9182)
  • Gloas filter conflicting voluntary exits (#9183)
  • Add payload attestation to op pool and pack into block (#9180)
  • Fix validator manager compilation (#9187)
  • Wire up ePBS SSE events and fix envelope availability (#9199)
  • Fix spurious re-org logs on ePBS payload status changes (#9191)
  • Add method to Hash256 to display shortened hashes (#9118)
  • Add payload attestation validator duty (#9178)
  • Gloas PayloadAttestation gossip verification (#9145)
  • Gloas ptc duties beacon node response (#8415)
  • Gloas set AttestationData.index (#9100)
  • Fix builder exit signature batch verification logic and small refactor (#9173)
  • Re-issue ForkchoiceUpdate based on updated PayloadStatus (#9102)
  • Cell Dissemination (Partial messages) (#8314)
  • Avoid lint and fmt for agents (#9166)
  • Ensure payload envelope streamer always serves canonical envelopes after the split slot (#9085)
  • At the fork transition ensure we build ontop of the correct parent block hash (#9160)
  • Fix audit failure for rustls-webpki (#9161)
  • Remove more mentions of "pending"/"full" states (#9156)
  • Gloas engine api updates (#9150)
  • Revert Gloas API changes from 9092 (#9151)
  • Gloas spec v1.7.0-alpha.5 and beacon_chain tests (#8998)
  • Fix slasher OOM (#9141)
  • Fix total_effective_balance=0 in PreEpochCache (#9106)
  • Gloas - add get_payload_attestation_endpoint (#8497)
  • Rust 1.95 lints (#9142)
  • Gloas vc ptc duty (#8338)
  • Add mixed V17/V29 execution payload invalidation test (#9089)
  • Prefix VC root spans with lh_ so they get exported to tracing backend (#9129)
  • Bump rustls-webpki to unblock CI (#9130)
  • Gloas: envelope peer penalties and REJECT/IGNORE mapping (#8981)
  • Gloas bid and preference verification (#9036)
  • Add missing beacon API config/spec values (#9112)
  • Truncated Display impl for ExecutionBlockHash (#9108)
  • Refactor timestamp_now (#9094)
  • Fix graffiti calculator test mock commit fallback (#9087)
  • feat(execution_layer): log more detail when JWT auth fails (#9051)
  • added check for fee recipient per validator and added unit tests (#8454)
  • Reduce slow test runtimes to under 60s (#9012)
  • Allow --validator-dir to be specified after subcommands (#8329)
  • Gloas serve post block state for finalized/justified state requests (#9092)
  • Add cargo-hack to CI to check crate features (#8927)
  • Remove unused exit-future (#9095)
  • Use spec constants for PTC thresholds in fork choice (#9088)
  • Add test for protocol registration completeness (#8920)
  • Gloas fork choice redux (#9025)
  • Automatically pass spans into blocking handles (#8158)
  • Update blob_delay_ms to track data columns seen (#9024)
  • Emit SSE: execution_payload (#9065)
  • Emit SSE: execution_payload_gossip (#9063)
  • Never use MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS for networks that started with Fulu enabled (#8731)
  • Gloas get payload envelope beacon API (#9038)
  • Add Gloas SSE event boilerplate (#9053)
  • Update to spec v1.7.0-alpha.4 (#9046)
  • Add range sync tests (#8989)
  • Fix local testnet Tempo and Prometheus/Grafana config (#9054)
  • Check ChainSpec consistency with upstream config.yaml (#9008)
  • Gloas new payload v5 (#9037)
  • Use yaml_serde in place of deprecated serde_yaml (#9040)
  • Merge remote-tracking branch 'origin/stable' into unstable
  • Remove schema migrations for v28 and earlier (#9031)
  • Gloas serve envelope rpc (#8896)
  • fix(network): set ENR nfd to zero bytes when next fork is unknown (#9009)
  • Carry forward withdrawals from the current BeaconState when a parent envelope is missed (#9014)
  • Merge remote-tracking branch 'origin/release-v8.1' into backmerge-audit
  • fix: update kurtosis apt source to sdk.kurtosis.com (#9000)
  • Gloas cold DB (#8991)
  • Remove lighthouse/analysis endpoints (#8968)
  • Unknown block for envelope (#8992)
  • Spec v1.7.0 alpha.3 (#8988)
  • Update /rewards endpoints to match spec (#8967)
  • Breakup RPCBlock into LookupBlock & RangeSyncBlock (#8860)
  • Fix intermittent simulator test failures (#8983)
  • Fix flaky test_same_subnet_unsubscription (#8932)
  • Refactor/stream vc vote publishing (#8880)
  • Fix proposer lookahead endpoint JSON return type (#8970)
  • Schedule Fulu fork for Chiado testnet (#8954)
  • Update database and block replayer to handle payload envelopes (#8886)
  • Optionally check DB invariants at runtime (#8952)
  • Remove c-kzg (#8930)
  • Update contribution guidlines regarding LLM usage (#8879)
  • Implement proposer lookahead endpoint (#8815)
  • Implement proposer duties v2 endpoint (#8918)
  • Fix syn in Cargo.lock
  • Merge remote-tracking branch 'origin/stable' into unstable
  • Gloas payload envelope processing (#8806)
  • Remove /lighthouse/analysis/block_rewards APIs (#8935)
  • Fix cargo-sort errors (#8945)
  • Remove arbitrary-fuzz (#8936)
  • Fix lints for Rust v1.94.0 (#8939)
  • update cargo-sort (#8933)
  • Add testing feature to validator_client/http_api (#8909)
  • Persist custody context more readily (#8921)
  • Merge remote-tracking branch 'origin/release-v8.1' into back-merge-v8.1.1
  • Add CI job to check for deleted files (#8727)
  • Add getBlobsV1 and getBlobsV2 support to mock EL server (#8870)
  • Remove merge transition code (#8761)
  • Add debug spans to DB write paths (#8895)
  • Delete dysfunctional fork_revert feature (#8891)
  • Add unit tests for BatchInfo and fix doc comments (#8873)
  • Implement gloas block gossip verification changes (#8878)
  • Enforce stricter checks on certain constants (#8500)
  • Bump uuid to remove duplicate (#8874)
  • Add --jwt-secret-path to lcli mock-el (#8864)
  • Remove unreachable void pattern for ConnectionLimits (#8871)
  • Feature-gate all uses of arbitrary (#8867)
  • Bump sqlite deps to remove hashlink 0.8 (#8866)
  • Validator manager import to allow overriding fields with CLI flag (#7684)
  • Skip payload_invalidation tests prior to Bellatrix (#8856)
  • Update agent review instructions on large PRs (#8845)
  • Merge remote-tracking branch 'origin/release-v8.1' into unstable
  • Add critical instructions and hooks for Claude Code (#8715)
  • Support pinning nightly ef test runs (#8738)
  • Gloas local block building cleanup (#8834)
  • Gloas fork upgrade consensus (#8833)
  • Gloas payload attestation consensus (#8827)
  • Gloas local block building MVP (#8754)
  • Remove reqwest re-exports from eth2 (#8829)
  • Delete OnDiskConsensusContext (#8824)
  • Fix eth2 compilation by feature gating SseEventSource (#8819)
  • fix second_payload head in execution engine test (#8789)
  • Implement inactivity scores ef tests unstable (#8807)
  • Correctly compute process times during ProcessHealth::observe (#8793)
  • Gloas attestation verification (#8705)
  • Gloas consensus: epoch processing, block signature verification, more tests (#8808)
  • Tree-sync friendly lookup sync tests (#8592)
  • Disable legacy-arith by default in consensus/types (#8695)
  • Add network feature to eth2 (#8558)
  • fix: auto-populate ENR UDP port from discovery listen port (#8804)
  • Gloas payload bid consensus (#8801)
  • fix: cache slot in check_block_relevancy to prevent TOCTOU (#8776)
  • rename --reconstruct-historic-states to --archive (#8795)
  • Add sync request metrics (#7790)
  • Remove pending requests from ready_requests (#6625)
  • Penalize peers that send an invalid rpc request (#6986)
  • Implement weak subjectivity safety checks (#7347)
  • Add insecure-dep test task to Makefile and CI (#8464)
  • Add AI assistant documentation and commands (#8785)
  • Gloas envelope consensus and more operations tests (#8781)
  • Remove dependency on OpenSSL (#8768)
  • Remove libp2p multiaddress (#8683)
  • Merge v8.1.0 (stable) into unstable
  • Gloas consensus logic for attestations (#8760)
  • Record metrics for only valid gossip blocks (#8723)
  • Fix regression test for #8528 (#8771)
  • Merge remote-tracking branch 'origin/release-v8.0' into unstable
  • Remove syn version 1 (#8678)
  • Use if-addrs instead of local_ip_address (#8659)
  • Update time to fix cargo audit failure (#8764)
  • Run all ssz_static tests for Gloas (#8755)
  • Remove state lru cache (#8724)
  • Remove kzg_commitments from DataColumnSidecarGloas (#8739)
  • Move KZG commitments from payload envelope to payload bid and spec alpha.2 (#8725)
  • Merge remote-tracking branch 'origin/release-v8.1' into unstable
  • Implement Gloas withdrawals and refactor (#8692)
  • Payload envelope db operations (#8717)
  • fix(beacon_node): add pruning of observed_column_sidecars (#8531)
  • Use correct Fork in verify_header_signature (#8528)

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.2.0-aarch64-apple-darwin.tar.gz PGP Signature
Linux logo x86_64 lighthouse-v8.2.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
Raspberrypi logo aarch64 lighthouse-v8.2.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
System Option - Resource
Docker logo Docker v8.2.0 sigp/lighthouse

Don't miss a new lighthouse release

NewReleases is sending notifications on new releases.