Skip to content

Releases: ChainSafe/lodestar

Release v1.36.0

04 Nov 18:52
c5e987f

Choose a tag to compare

Happy November Lodestar users! We are excited to announce our Fusaka mainnet release with version 1.36.0!

It is mandatory for all node operators to utilize this version or above to be Fusaka fork ready for the scheduled December 3rd hard fork and subsequent BPO forks: BPO1 (December 9th) and BPO2 (January 7th). A reminder for node operators that if you do not run Lodestar or any client with validators and wish to custody all data columns sidecars with your beacon node, you must use the --supernode flag to indicate this, otherwise your node will, by default, custody the minimum amount of 4 or higher depending on your attached validator count.

We have introduced a --semiSupernode flag for more efficient data availability with lower bandwidth and storage requirements. This will custody half the data column sidecar subnets to support blob reconstruction should you need them for other dependents. See #8568 for full details.

This release also increases the default gas limit to signal for 60 million gas blocks, up from the 45 million gas blocks currently on mainnet.

Other optimizations and performance enhancements found on testnets and from the Fusaka bug bounty have also been included with this version.

As usual, ensure you've updated your entire stack to mainnet-ready versions of Fusaka alongside your Lodestar beacon node/validator client. Happy Fusaka fork everyone ! 🍴🦓

Changelog

Full Changelog

Features

Bug Fixes

  • prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
  • resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
  • refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
  • update local status fork digest on fork boundary transition (#8561) (@nflaig)
  • remove extraneous fields from /eth/v1/node/peers response (#8554) (@nflaig)
  • ignore already known data column sidecars (#8542) (@nflaig)
  • respect reverse and limit in bun leveldb controller (#8529) (@wemeetagain)
  • only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
  • ensure data column sidecars respect blob limit (#8534) (@nflaig)
  • do not create default cache entry for unknown proposers (#8532) (@nflaig)
  • avoid emitting stale light client updates (#8522) (@nflaig)
  • avoid Set.has() in computeDeltas() (#8525) (@twoeths)
  • improve heap size limit log (#8516) (@twoeths)

Refactoring

Tests

Maintenance

Release v1.36.0-rc.4

04 Nov 17:55
801b1f4

Choose a tag to compare

Release v1.36.0-rc.4 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
  • resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
  • refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
  • update local status fork digest on fork boundary transition (#8561) (@nflaig)
  • remove extraneous fields from /eth/v1/node/peers response (#8554) (@nflaig)
  • ignore already known data column sidecars (#8542) (@nflaig)
  • respect reverse and limit in bun leveldb controller (#8529) (@wemeetagain)
  • only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
  • ensure data column sidecars respect blob limit (#8534) (@nflaig)
  • do not create default cache entry for unknown proposers (#8532) (@nflaig)
  • avoid emitting stale light client updates (#8522) (@nflaig)
  • avoid Set.has() in computeDeltas() (#8525) (@twoeths)
  • improve heap size limit log (#8516) (@twoeths)

Refactoring

Tests

Maintenance

Release v1.36.0-rc.3

03 Nov 21:54

Choose a tag to compare

Release v1.36.0-rc.3 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
  • resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
  • refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
  • update local status fork digest on fork boundary transition (#8561) (@nflaig)
  • remove extraneous fields from /eth/v1/node/peers response (#8554) (@nflaig)
  • ignore already known data column sidecars (#8542) (@nflaig)
  • respect reverse and limit in bun leveldb controller (#8529) (@wemeetagain)
  • only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
  • ensure data column sidecars respect blob limit (#8534) (@nflaig)
  • do not create default cache entry for unknown proposers (#8532) (@nflaig)
  • avoid emitting stale light client updates (#8522) (@nflaig)
  • avoid Set.has() in computeDeltas() (#8525) (@twoeths)
  • improve heap size limit log (#8516) (@twoeths)

Refactoring

Tests

Maintenance

Release v1.36.0-rc.2

31 Oct 19:42

Choose a tag to compare

Release v1.36.0-rc.2 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
  • update local status fork digest on fork boundary transition (#8561) (@nflaig)
  • remove extraneous fields from /eth/v1/node/peers response (#8554) (@nflaig)
  • ignore already known data column sidecars (#8542) (@nflaig)
  • respect reverse and limit in bun leveldb controller (#8529) (@wemeetagain)
  • only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
  • ensure data column sidecars respect blob limit (#8534) (@nflaig)
  • do not create default cache entry for unknown proposers (#8532) (@nflaig)
  • avoid emitting stale light client updates (#8522) (@nflaig)
  • avoid Set.has() in computeDeltas() (#8525) (@twoeths)
  • improve heap size limit log (#8516) (@twoeths)

Refactoring

Tests

Maintenance

Release v1.36.0-rc.1

27 Oct 21:57

Choose a tag to compare

Release v1.36.0-rc.1 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
  • update local status fork digest on fork boundary transition (#8561) (@nflaig)
  • remove extraneous fields from /eth/v1/node/peers response (#8554) (@nflaig)
  • ignore already known data column sidecars (#8542) (@nflaig)
  • respect reverse and limit in bun leveldb controller (#8529) (@wemeetagain)
  • only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
  • ensure data column sidecars respect blob limit (#8534) (@nflaig)
  • do not create default cache entry for unknown proposers (#8532) (@nflaig)
  • avoid emitting stale light client updates (#8522) (@nflaig)
  • avoid Set.has() in computeDeltas() (#8525) (@twoeths)
  • improve heap size limit log (#8516) (@twoeths)

Refactoring

Tests

Maintenance

Release v1.35.0

08 Oct 22:45
a8e3089

Choose a tag to compare

Hey Lodestar users! We're happy to release v1.35.0 which includes performance refactors and enhancements! This upgrade is recommended for all mainnet and testnet users.

For node operators, we now support dual stack IPv4 and IPv6 by default serving port 9000. If no listenAddress is specified then we will enable both IPv4 and IPv6. If you want to reconfigure the listening addresses or explicitly enable one stack, you can manually set it for IPv4 only with listenAddress or for IPv6 only with listenAddress6.

This release also supports the Fusaka hard fork on all planned testnets for Holesky, Sepolia and Hoodi. Note that any v1.35.0-rc.X versions are still compatible for the Fusaka testnet forks, but we now recommend using the stable release.

Changelog

Full Changelog

Features

Bug Fixes

  • update gnosis slot duration ms to 5000 (#8512) (@nflaig)
  • use datastore-level by default (#8503) (@wemeetagain)
  • default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
  • unsubscribe from blob_sidecar topics during fulu fork transition (#8497) (@nflaig)
  • return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
  • use previous slot to get sync aggregate for block (#8494) (@nflaig)
  • update regen caller for data column (#8487) (@wemeetagain)
  • not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
  • hasAllData in createFromColumn() api (#8473) (@twoeths)
  • untrusted slot in network processor (#8466) (@twoeths)
  • sort cell indices before calling recoverCellsAndKzgProofs (#8450) (@ensi321)
  • emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
  • use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
  • emit data column sidecar event when receive them from execution (#8446) (@nflaig)
  • pass current time in seconds to seenTimestampSec of block input (#8444) (@nflaig)
  • add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
  • correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
  • wait for block and all data (#8430) (@twoeths)
  • emit unknownParent event (#8429) (@twoeths)
  • use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
  • stop verifying SECONDS_PER_ETH1_BLOCK on validator startup (#8397) (@nflaig)
  • restore data column sidecars prune log (#8388) (@nflaig)
  • don't log proposer boost reorg logs during sync (#8363) (@nflaig)
  • bump discv5 to 11.0.4 (#8365) (@philknows)
  • properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
  • update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
  • min key for the archive data columns (#8345) (@nazarhussain)
  • deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
  • add bucketId to all db operations (#8347) (@nflaig)
  • correct leveldb metrics (#8355) (@nflaig)
  • add bucketId to abstract_prefixed_repo (#8346) (@twoeths)

Refactoring

  • replace * value with other more bash friendly value (#8491) (@guha-rahul)
  • make commonBlockBodyPromise a required parameter (#8273) (@nflaig)

Dependencies

Tests

Maintenance

Documentation

Release v1.35.0-rc.4

08 Oct 17:17

Choose a tag to compare

Release v1.35.0-rc.4 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • use datastore-level by default (#8503) (@wemeetagain)
  • default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
  • unsubscribe from blob_sidecar topics during fulu fork transition (#8497) (@nflaig)
  • return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
  • use previous slot to get sync aggregate for block (#8494) (@nflaig)
  • update regen caller for data column (#8487) (@wemeetagain)
  • not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
  • hasAllData in createFromColumn() api (#8473) (@twoeths)
  • untrusted slot in network processor (#8466) (@twoeths)
  • sort cell indices before calling recoverCellsAndKzgProofs (#8450) (@ensi321)
  • emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
  • use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
  • emit data column sidecar event when receive them from execution (#8446) (@nflaig)
  • pass current time in seconds to seenTimestampSec of block input (#8444) (@nflaig)
  • add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
  • correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
  • wait for block and all data (#8430) (@twoeths)
  • emit unknownParent event (#8429) (@twoeths)
  • use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
  • stop verifying SECONDS_PER_ETH1_BLOCK on validator startup (#8397) (@nflaig)
  • restore data column sidecars prune log (#8388) (@nflaig)
  • don't log proposer boost reorg logs during sync (#8363) (@nflaig)
  • bump discv5 to 11.0.4 (#8365) (@philknows)
  • properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
  • update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
  • min key for the archive data columns (#8345) (@nazarhussain)
  • deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
  • add bucketId to all db operations (#8347) (@nflaig)
  • correct leveldb metrics (#8355) (@nflaig)
  • add bucketId to abstract_prefixed_repo (#8346) (@twoeths)

Refactoring

  • replace * value with other more bash friendly value (#8491) (@guha-rahul)
  • make commonBlockBodyPromise a required parameter (#8273) (@nflaig)

Dependencies

Tests

Maintenance

Documentation

Release v1.35.0-rc.3

06 Oct 21:09

Choose a tag to compare

Release v1.35.0-rc.3 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • use datastore-level by default (#8503) (@wemeetagain)
  • default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
  • unsubscribe from blob_sidecar topics during fulu fork transition (#8497) (@nflaig)
  • return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
  • use previous slot to get sync aggregate for block (#8494) (@nflaig)
  • update regen caller for data column (#8487) (@wemeetagain)
  • not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
  • hasAllData in createFromColumn() api (#8473) (@twoeths)
  • untrusted slot in network processor (#8466) (@twoeths)
  • sort cell indices before calling recoverCellsAndKzgProofs (#8450) (@ensi321)
  • emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
  • use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
  • emit data column sidecar event when receive them from execution (#8446) (@nflaig)
  • pass current time in seconds to seenTimestampSec of block input (#8444) (@nflaig)
  • add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
  • correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
  • wait for block and all data (#8430) (@twoeths)
  • emit unknownParent event (#8429) (@twoeths)
  • use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
  • stop verifying SECONDS_PER_ETH1_BLOCK on validator startup (#8397) (@nflaig)
  • restore data column sidecars prune log (#8388) (@nflaig)
  • don't log proposer boost reorg logs during sync (#8363) (@nflaig)
  • bump discv5 to 11.0.4 (#8365) (@philknows)
  • properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
  • update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
  • min key for the archive data columns (#8345) (@nazarhussain)
  • deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
  • add bucketId to all db operations (#8347) (@nflaig)
  • correct leveldb metrics (#8355) (@nflaig)
  • add bucketId to abstract_prefixed_repo (#8346) (@twoeths)

Refactoring

  • replace * value with other more bash friendly value (#8491) (@guha-rahul)
  • make commonBlockBodyPromise a required parameter (#8273) (@nflaig)

Dependencies

Tests

Maintenance

Documentation

Release v1.35.0-rc.2

03 Oct 20:20

Choose a tag to compare

Release v1.35.0-rc.2 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • use previous slot to get sync aggregate for block (#8494) (@nflaig)
  • update regen caller for data column (#8487) (@wemeetagain)
  • not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
  • hasAllData in createFromColumn() api (#8473) (@twoeths)
  • untrusted slot in network processor (#8466) (@twoeths)
  • sort cell indices before calling recoverCellsAndKzgProofs (#8450) (@ensi321)
  • emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
  • use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
  • emit data column sidecar event when receive them from execution (#8446) (@nflaig)
  • pass current time in seconds to seenTimestampSec of block input (#8444) (@nflaig)
  • add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
  • correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
  • wait for block and all data (#8430) (@twoeths)
  • emit unknownParent event (#8429) (@twoeths)
  • use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
  • stop verifying SECONDS_PER_ETH1_BLOCK on validator startup (#8397) (@nflaig)
  • restore data column sidecars prune log (#8388) (@nflaig)
  • don't log proposer boost reorg logs during sync (#8363) (@nflaig)
  • bump discv5 to 11.0.4 (#8365) (@philknows)
  • properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
  • update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
  • min key for the archive data columns (#8345) (@nazarhussain)
  • deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
  • add bucketId to all db operations (#8347) (@nflaig)
  • correct leveldb metrics (#8355) (@nflaig)
  • add bucketId to abstract_prefixed_repo (#8346) (@twoeths)

Refactoring

  • replace * value with other more bash friendly value (#8491) (@guha-rahul)
  • make commonBlockBodyPromise a required parameter (#8273) (@nflaig)

Dependencies

Tests

Maintenance

Documentation

Release v1.35.0-rc.1

26 Sep 13:34

Choose a tag to compare

Release v1.35.0-rc.1 Pre-release
Pre-release

Hey everyone! For testnet users of Lodestar, we have a new pre-release which includes configurations for Fusaka on Holesky, Sepolia and Hoodi public testnets. This pre-release is to allow for additional testing and pending the success of the Holesky Fusaka hard fork next week, we will observe and include any additional fixes for a full release.

For testnet node operators, here are the current configurations as of today (subject to change with core dev consensus) which are included with this pre-release:

Holesky Fusaka: Wednesday, 1 October 2025 @ 08:48:00 UTC (epoch 165120)
Holesky BPO 1: Tuesday, 7 October 2025 @ 01:20:00 UTC (epoch 166400)
Holesky BPO 2: Monday, 13 October 2025 @ 21:10:24 UTC (epoch 167936)

Sepolia Fusaka: Tuesday, 14 October 2025 @ 07:36:00 UTC (epoch 272640)
Sepolia BPO 1: Tuesday, 21 October 2025 @ 03:26:24 UTC (epoch 274176)
Sepolia BPO 2: Monday, 27 October 2025 @ 23:16:48 UTC (epoch 275712)

Hoodi Fusaka: Tuesday, 28 October 2025 @ 18:53:12 UTC (epoch 50688)
Hoodi BPO 1: Wednesday, 5 November 2025 @ 18:02:00 UTC (epoch 52480)
Hoodi BPO 2: Wednesday, 12 November 2025 @ 13:52:24 (epoch 54016)

Don't forget to update your execution clients to Fusaka testnet ready releases and any sidecars for Fusaka support! Happy forking 🍴🦓 !

Changelog

Full Changelog

Features

Bug Fixes

  • not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
  • hasAllData in createFromColumn() api (#8473) (@twoeths)
  • untrusted slot in network processor (#8466) (@twoeths)
  • sort cell indices before calling recoverCellsAndKzgProofs (#8450) (@ensi321)
  • emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
  • use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
  • emit data column sidecar event when receive them from execution (#8446) (@nflaig)
  • pass current time in seconds to seenTimestampSec of block input (#8444) (@nflaig)
  • add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
  • correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
  • wait for block and all data (#8430) (@twoeths)
  • emit unknownParent event (#8429) (@twoeths)
  • use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
  • stop verifying SECONDS_PER_ETH1_BLOCK on validator startup (#8397) (@nflaig)
  • restore data column sidecars prune log (#8388) (@nflaig)
  • don't log proposer boost reorg logs during sync (#8363) (@nflaig)
  • bump discv5 to 11.0.4 (#8365) (@philknows)
  • properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
  • update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
  • min key for the archive data columns (#8345) (@nazarhussain)
  • deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
  • add bucketId to all db operations (#8347) (@nflaig)
  • correct leveldb metrics (#8355) (@nflaig)
  • add bucketId to abstract_prefixed_repo (#8346) (@twoeths)

Refactoring

  • make commonBlockBodyPromise a required parameter (#8273) (@nflaig)

Dependencies

Tests

Maintenance

Documentation