Skip to content

Releases: ChainSafe/lodestar

Release v1.42.0

13 Apr 12:51
Immutable release. Only release title and notes can be modified.
443e0a4

Choose a tag to compare

Hey Lodestar operators! We've just released v1.42.0 and recommend users upgrade for the latest features and best performance.

QUIC transport is now enabled by default. As noted in the v1.41.0 release, this change was coming. If you haven't already, you must allow UDP traffic on port 9001 through your firewall. Without this, your node will have degraded connectivity. If you need to disable QUIC for any reason, you can use --quic=false or --no-quic. Check out our networking docs for more details.

This release also includes a fix for QUIC early adopters from last release. Lodestar now only creates QUIC clients for address families that are actually configured, so QUIC works out of the box regardless of your network setup.

We are making great strides towards the Gloas hard-fork with this release but have added a couple of small things that will make operation user experience more cozy. In particular, the voluntary exit command can now write to file instead of publishing directly for those of you with complex setups.

Full Changelog

Features

Bug Fixes

  • process payload attestations before payload envelope import (#9159) (@nflaig)
  • update attestation data index extraction (#9158) (@nflaig)
  • track PayloadExecutionStatus for forkchoice onExecutionPayload() (#9119) (@twoeths)
  • update stale custody group metric name in summary dashboard (#9121) (@lodekeeper)
  • only create QUIC clients for configured address families (#9101) (@lodekeeper)
  • use IGNORE instead of REJECT for missing payload envelope input (#9094) (@nflaig)
  • improve sync aggregate participation (#9070) (@lodekeeper)
  • override MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS for Gnosis (#9075) (@lodekeeper)

Refactoring

  • generalize NetworkProcessor awaiting-block mechanism for all gossip types (#9059) (@twoeths)
  • simplify protoArray pruning for gloas (#9068) (@GrapeBaBa)
  • avoid falsy zero check in indexed attestation bounds validation (#9089) (@nflaig)

Tests

Maintenance

Documentation

Release v1.42.0-rc.0

03 Apr 13:22
Immutable release. Only release title and notes can be modified.
208c738

Choose a tag to compare

Release v1.42.0-rc.0 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • process payload attestations before payload envelope import (#9159) (@nflaig)
  • update attestation data index extraction (#9158) (@nflaig)
  • track PayloadExecutionStatus for forkchoice onExecutionPayload() (#9119) (@twoeths)
  • update stale custody group metric name in summary dashboard (#9121) (@lodekeeper)
  • only create QUIC clients for configured address families (#9101) (@lodekeeper)
  • use IGNORE instead of REJECT for missing payload envelope input (#9094) (@nflaig)
  • improve sync aggregate participation (#9070) (@lodekeeper)
  • override MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS for Gnosis (#9075) (@lodekeeper)

Refactoring

  • generalize NetworkProcessor awaiting-block mechanism for all gossip types (#9059) (@twoeths)
  • simplify protoArray pruning for gloas (#9068) (@GrapeBaBa)
  • avoid falsy zero check in indexed attestation bounds validation (#9089) (@nflaig)

Tests

Maintenance

Documentation

Release v1.41.1

01 Apr 06:51
Immutable release. Only release title and notes can be modified.
fc6798b

Choose a tag to compare

Attention Gnosis mainnet operators! We've released v1.41.1, a mandatory hotfix to schedule the Fulu fork on Gnosis mainnet. If you're running Lodestar on Gnosis, please upgrade before April 14, 2026. For those of you that are not using Lodestar on Gnosis it is not necessary to upgrade.

The only changes in this release are related to Gnosis fork scheduling and configuration variables.

Changelog

Full Changelog

Features

Bug Fixes

  • override MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS for Gnosis (#9075) (@lodekeeper)

Maintenance

Release v1.41.0

19 Mar 18:10
Immutable release. Only release title and notes can be modified.
13e882a

Choose a tag to compare

Good day Lodestar operators! We've just released v1.41.0 and recommend users upgrade for the latest features and best performance. This is a feature-packed release that brings QUIC transport, ipv6 fixes, js-libp2p v3, faster build times with TSGo and the first pieces of ePBS 🚀.

NOTE: QUIC transport is now available with this release. It is disabled by default but we strongly recommend you enable it with the --quic flag. It is critical to note that you will need to update your existing firewall rules and other infrastructure bits and pieces to allow UDP on port 9001. Check out our docs for more information if you have any questions. You can find them here. It is important to also note that while this change is not mandatory now, we will be turning on QUIC by default in the next minor release and your node connectivity will break if you are not allowing QUIC traffic through your firewall. There will be another reminder next release but the performance improvements alone push us to recommend you turning it on via the flag with this release.

We also made ipv6 configuration seamless so that discovery happens by default. Your ENR will now get automatically updated when setting any IPv6 related flags.

You will also notice some new PeerDas metrics on the dashboards if you are using the ones provided with our repo.

While transparent, we have made big strides towards again with this release and are getting closer towards realizing our zig update for the state-transition. A lot of the plumbing has been merged so that our TS code is ready to accept the Zig wonderfulness that we have in store for you. We anticipate that will be ready in the next few releases and are excited to share our journey along the way.

Changelog

Full Changelog

Features

Bug Fixes

  • correct pre-Deneb attestation propagation slot range boundary (#9031) (@nflaig)
  • prune serialized cache by block input keys (#9007) (@nflaig)
  • cache previous epoch payload timeliness committees (#8991) (@nflaig)
  • use inclusive boundary for gossip clock disparity checks (#8968) (@lodekeeper)
  • libp2p v3 unknown peers (#8960) (@nflaig)
  • bootstrap already-open libp2p connections at PeerManager startup (#8948) (@lodekeeper)
  • log payload attestations for gloas block bodies (#8942) (@nflaig)
  • yield to event loop between block imports during sync (#8925) (@lodekeeper)
  • return available light client updates instead of throwing on missing periods (#8906) (@lodekeeper)
  • combine error status and message into single chunk in reqresp response (#8908) (@lodekeeper)
  • remove leaked process listener in metrics close() (#8894) (@wemeetagain)
  • reqresp: clear composed response timeout signals (#9029) (@lodekeeper)
  • fork-choice: make payloadStatus explicit in ancestor traversal APIs (#8996) (@twoeths)
  • beacon-node: move serializedCache.clear() to after DB write completes (#8907) (@twoeths)

Performance

  • fork-choice: hoist proposerBoostRoot out of applyScoreChanges loop (#9040) (@GrapeBaBa)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.41.0-rc.2

17 Mar 18:23
Immutable release. Only release title and notes can be modified.
e8653ab

Choose a tag to compare

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

Changelog

Full Changelog

Features

Bug Fixes

  • correct pre-Deneb attestation propagation slot range boundary (#9031) (@nflaig)
  • prune serialized cache by block input keys (#9007) (@nflaig)
  • cache previous epoch payload timeliness committees (#8991) (@nflaig)
  • use inclusive boundary for gossip clock disparity checks (#8968) (@lodekeeper)
  • libp2p v3 unknown peers (#8960) (@nflaig)
  • bootstrap already-open libp2p connections at PeerManager startup (#8948) (@lodekeeper)
  • log payload attestations for gloas block bodies (#8942) (@nflaig)
  • yield to event loop between block imports during sync (#8925) (@lodekeeper)
  • return available light client updates instead of throwing on missing periods (#8906) (@lodekeeper)
  • combine error status and message into single chunk in reqresp response (#8908) (@lodekeeper)
  • remove leaked process listener in metrics close() (#8894) (@wemeetagain)
  • reqresp: clear composed response timeout signals (#9029) (@lodekeeper)
  • fork-choice: make payloadStatus explicit in ancestor traversal APIs (#8996) (@twoeths)
  • beacon-node: move serializedCache.clear() to after DB write completes (#8907) (@twoeths)

Performance

  • fork-choice: hoist proposerBoostRoot out of applyScoreChanges loop (#9040) (@GrapeBaBa)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.41.0-rc.0

14 Mar 11:02
Immutable release. Only release title and notes can be modified.
b2f7202

Choose a tag to compare

Release v1.41.0-rc.0 Pre-release
Pre-release

Changelog

Full Changelog

Features

Bug Fixes

  • correct pre-Deneb attestation propagation slot range boundary (#9031) (@nflaig)
  • prune serialized cache by block input keys (#9007) (@nflaig)
  • cache previous epoch payload timeliness committees (#8991) (@nflaig)
  • use inclusive boundary for gossip clock disparity checks (#8968) (@lodekeeper)
  • libp2p v3 unknown peers (#8960) (@nflaig)
  • bootstrap already-open libp2p connections at PeerManager startup (#8948) (@lodekeeper)
  • log payload attestations for gloas block bodies (#8942) (@nflaig)
  • yield to event loop between block imports during sync (#8925) (@lodekeeper)
  • return available light client updates instead of throwing on missing periods (#8906) (@lodekeeper)
  • combine error status and message into single chunk in reqresp response (#8908) (@lodekeeper)
  • remove leaked process listener in metrics close() (#8894) (@wemeetagain)
  • reqresp: clear composed response timeout signals (#9029) (@lodekeeper)
  • fork-choice: make payloadStatus explicit in ancestor traversal APIs (#8996) (@twoeths)
  • beacon-node: move serializedCache.clear() to after DB write completes (#8907) (@twoeths)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.40.0

11 Feb 15:17
66aff77

Choose a tag to compare

Release v1.40.0

Good day Lodestar operators! We're excited to release v1.40.0 and recommend users upgrade for the latest features and best performance. This release brings significant memory and performance improvements, especially for PeerDAS supernodes.

Breaking change: Node.js v22 is no longer supported. If you are building from source, please ensure you are using Node.js v24 (the current LTS). Docker users are not affected.

Supernode stability and overall node health have been greatly improved. You will see drastic reduction in head selection time and much greater head accuracy through an improvement of block processing latency. The underlying changes will also improve sync latency to get your nodes up to head even faster than before.

We have have added a couple of helpful api endpoints with this release. The first is targeted at operators running many validators and will allow api access to see which validator indices are connected to a node. This is also printed in the logs on an epoch basis to help infrastructure management teams with migrations and to avoid slashable incidents because of human or process reasons. We also added a nice to have feature, along with accompanying new flag --directPeers, to allow direct connection to specific peers as well as the ability to drop specific peers at runtime. You can also list the peerIds of all direct connections. You can also now query your peerDAS custody information for a running node.

We also have an exciting announcement that we are please to share with you. We have taken the first steps towards preparing Lodestar for its first Zig modules. We have been working hard on migrating the state-transition to Zig and its nearly complete. This release includes some changes necessary to prep for swapping the TypeScript state transition function over to a Zig module. While this will be a silent change for user we are excited to share that our preliminary results are excellent and node performance will be off the charts in the upcoming months. Stay tuned for more information!!!

For the full changelog, please see: v1.39.1...v1.40.0

Changelog

Features

Bug Fixes

  • add backpressure to unfinalized block write queue (#8885) (@lodekeeper)
  • await processFn to prevent buffer pool race condition (#8877) (@lodekeeper)
  • consistently check block input cache before checking hot db for blocks (#8823) (@nflaig)
  • remove index label from validator_monitor_prev_epoch_on_chain_balance metric (#8824) (@lodekeeper)
  • make column reconstruction delay a function of slot time (#8827) (@lodekeeper)
  • remove docker build stage to rebuild native dependencies (#8819) (@nflaig)
  • revert changes to getPendingBalanceToWithdraw (#8812) (@ensi321)
  • handle slot 0 correctly in data column sidecar RPC handler (#8783) (@qu0b)
  • avoid BeaconState commit() clone() in beacon-node (#8728) (@twoeths)
  • pass fork info used to compute domain to remote signer (#8776) (@nflaig)
  • return reward delta instead of validator balance as sync committee rewards (#8774) (@nflaig)
  • api: allow duplicate columns/blobs in publishBlock for multi-BN setups (#8849) (@lodekeeper)
  • network: handle invalid peer public key in onLibp2pPeerConnect (#8829) (@lodekeeper)
  • docker: reinstall dependencies on target platform (#8816) (@wemeetagain)

Performance

  • optimize byteArrayEquals with hybrid loop/Buffer.compare (#8846) (@lodekeeper)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.40.0-rc.3

11 Feb 00:51
dbc0185

Choose a tag to compare

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

Changelog

Full Changelog

Features

Bug Fixes

  • add backpressure to unfinalized block write queue (#8885) (@lodekeeper)
  • await processFn to prevent buffer pool race condition (#8877) (@lodekeeper)
  • consistently check block input cache before checking hot db for blocks (#8823) (@nflaig)
  • remove index label from validator_monitor_prev_epoch_on_chain_balance metric (#8824) (@lodekeeper)
  • make column reconstruction delay a function of slot time (#8827) (@lodekeeper)
  • remove docker build stage to rebuild native dependencies (#8819) (@nflaig)
  • revert changes to getPendingBalanceToWithdraw (#8812) (@ensi321)
  • handle slot 0 correctly in data column sidecar RPC handler (#8783) (@qu0b)
  • avoid BeaconState commit() clone() in beacon-node (#8728) (@twoeths)
  • pass fork info used to compute domain to remote signer (#8776) (@nflaig)
  • return reward delta instead of validator balance as sync committee rewards (#8774) (@nflaig)
  • api: allow duplicate columns/blobs in publishBlock for multi-BN setups (#8849) (@lodekeeper)
  • network: handle invalid peer public key in onLibp2pPeerConnect (#8829) (@lodekeeper)
  • docker: reinstall dependencies on target platform (#8816) (@wemeetagain)

Performance

  • optimize byteArrayEquals with hybrid loop/Buffer.compare (#8846) (@lodekeeper)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.40.0-rc.2

07 Feb 16:32
af86f8f

Choose a tag to compare

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

Changelog

Full Changelog

Features

Bug Fixes

  • await processFn to prevent buffer pool race condition (#8877) (@lodekeeper)
  • consistently check block input cache before checking hot db for blocks (#8823) (@nflaig)
  • remove index label from validator_monitor_prev_epoch_on_chain_balance metric (#8824) (@lodekeeper)
  • make column reconstruction delay a function of slot time (#8827) (@lodekeeper)
  • remove docker build stage to rebuild native dependencies (#8819) (@nflaig)
  • revert changes to getPendingBalanceToWithdraw (#8812) (@ensi321)
  • handle slot 0 correctly in data column sidecar RPC handler (#8783) (@qu0b)
  • avoid BeaconState commit() clone() in beacon-node (#8728) (@twoeths)
  • pass fork info used to compute domain to remote signer (#8776) (@nflaig)
  • return reward delta instead of validator balance as sync committee rewards (#8774) (@nflaig)
  • api: allow duplicate columns/blobs in publishBlock for multi-BN setups (#8849) (@lodekeeper)
  • network: handle invalid peer public key in onLibp2pPeerConnect (#8829) (@lodekeeper)
  • docker: reinstall dependencies on target platform (#8816) (@wemeetagain)

Performance

  • optimize byteArrayEquals with hybrid loop/Buffer.compare (#8846) (@lodekeeper)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation

Release v1.40.0-rc.1

07 Feb 14:49
d61d54e

Choose a tag to compare

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

Changelog

Full Changelog

Features

Bug Fixes

  • await processFn to prevent buffer pool race condition (#8877) (@lodekeeper)
  • consistently check block input cache before checking hot db for blocks (#8823) (@nflaig)
  • remove index label from validator_monitor_prev_epoch_on_chain_balance metric (#8824) (@lodekeeper)
  • make column reconstruction delay a function of slot time (#8827) (@lodekeeper)
  • remove docker build stage to rebuild native dependencies (#8819) (@nflaig)
  • revert changes to getPendingBalanceToWithdraw (#8812) (@ensi321)
  • handle slot 0 correctly in data column sidecar RPC handler (#8783) (@qu0b)
  • avoid BeaconState commit() clone() in beacon-node (#8728) (@twoeths)
  • pass fork info used to compute domain to remote signer (#8776) (@nflaig)
  • return reward delta instead of validator balance as sync committee rewards (#8774) (@nflaig)
  • api: allow duplicate columns/blobs in publishBlock for multi-BN setups (#8849) (@lodekeeper)
  • network: handle invalid peer public key in onLibp2pPeerConnect (#8829) (@lodekeeper)
  • docker: reinstall dependencies on target platform (#8816) (@wemeetagain)

Performance

  • optimize byteArrayEquals with hybrid loop/Buffer.compare (#8846) (@lodekeeper)

Refactoring

Continuous Integration

Tests

Maintenance

Documentation