Releases: ChainSafe/lodestar
Release list
Release v1.44.0
Hey there Lodestar operators!! We've just released v1.44.0 and recommend you upgrade for all testnet and mainnet nodes. This release continues our progress towards the Glamsterdam (ePBS) fork and there has been a lot of development in that direction. We also made some incremental performance improvements and updated our APIs. We have also added a new experimental feature, Fast Confirmation Rule. There are two major notes that we want to highlight for you.
FCR is a relatively new feature for Ethereum, and allows for confirming blocks much, much faster than is traditionally possible. However, there are a couple of small caveats that need to be pointed out. While the spec has been thoroughly tested, the feature is still new. We recommend rigor in testing before relying on it for any substantial economic security. It is pretty good at predicting the canonical chain correctly, but there are still some kinks that are being worked out. We have some performance updates that will follow in a future release. This will help make the guarantees even more secure.
FCR is a fairly performance intensive workload. We do not recommend running this feature on production nodes. As we, and other clients, further optimize for network conditions this stipulation might no longer apply, but for now we recommend experimenting with this on nodes without mainnet validators, as there may be effectiveness degradation.
Breaking Change: The deprecated v1 block-publishing and attestation-submission beacon API endpoints have been removed (#9531, #9532). Standard validator clients already use v2, but if you run custom tooling against these v1 endpoints, migrate to v2 before upgrading Lodestar.
For the full changelog, please see:
Full Changelog
Features
- prune PayloadEnvelopeInput when syncing (#9509) (@twoeths)
- upgrade to v1.7.0-alpha.11 spec (#9541) (@nflaig)
- add standard fast confirmation metrics (#9552) (@nflaig)
- queue execution payload envelope until its block is imported (#9520) (@nflaig)
- emit fast_confirmation SSE event per beacon-APIs (#9439) (@nazarhussain)
- fast confirmation rule (#8837) (@nazarhussain)
- expose EMPTY_BLOCK_HASH constant in config API (#9465) (@markolazic01)
- implement EIP-8045 exclude slashed validators from proposing (#9422) (@nflaig)
- force the proposer to reorg late payloads (#9431) (@nflaig)
- only give proposer boost to canonical proposer (#9313) (@ensi321)
- add gossip bid selection to block production (#9289) (@ensi321)
- force the proposer to reorg unavailable blocks (#9387) (@twoeths)
- check gas limit consistency with the target (#9391) (@wemeetagain)
- upgrade to v1.7.0-alpha.8 spec (#9383) (@twoeths)
- add proposer preferences (#9377) (@wemeetagain)
Bug Fixes
- check for slot > 0 in missedSlotVote (#9556) (@spiral-ladder)
- forward
broadcast_validationinpublishBlindedBlockV2(#9535) (@markolazic01) - reject bids with invalid prev_randao during gossip validation (#9533) (@nflaig)
- clamp pivotSlot calculation to GENESIS_SLOT (#9521) (@spiral-ladder)
- defer using proposer duties v2 to gloas (#9519) (@nflaig)
- add fallback handler for getProposerDuties (#9518) (@twoeths)
- ensure block in forkchoice before validate by_root payload (#9479) (@twoeths)
- remove TOO_MANY_SKIPPED_SLOTS block error (#9484) (@twoeths)
- ignore repeat proposal during block publishing (#9235) (@lodekeeper)
- publish only subscribed columns from reconstruction (#9464) (@lodekeeper)
- return resource_unavailable if requested range is before earliest_available_slot (#9454) (@twoeths)
- prune finalized checkpoint state per processState() (#9463) (@twoeths)
- continue past non-custody column requests in DataColumnSidecarsByRoot (#9456) (@lodekeeper)
- use finalized block slot as envelope by range archive boundary (#9432) (@nflaig)
- gate builder bid lookup on shouldBuildOnFull in produceBlockV4 (#9442) (@ensi321)
- handle post-gloas empty blocks in data columns by range (#9433) (@nflaig)
- validate execution payload bids against parent branch state (#9409) (@nflaig)
- ignore PTC attestations for empty assigned slots (#9427) (@nflaig)
- limit
shouldBuildOnFull()checks to the previous slot (#9428) (@nflaig) - skip casting payload attestation when there is no block at slot (#9406) (@ensi321)
- resolve PTC committee against the referenced block state (#9426) (@nflaig)
- ignore PTC votes whose slot does not match the referenced block (#9425) (@nflaig)
- introduce NativeBeaconStateView and simplify bindings (#9412) (@twoeths)
- use correct regen caller for execution payload import (#9421) (@nflaig)
- include payload_data_availability in shouldExtendPayload (#9416) (@twoeths)
- ensure bids are for a higher slot than their parent (#9414) (@nflaig)
- upgrade playwright to 1.60.0 to unblock browser tests CI (#9420) (@ensi321)
- include ethrex EX client code and restore CL commit suffix in gloas graffiti (#9381) (@barnabasbusa)
- download proposer duties for the next epoch post-fulu (#9380) (@twoeths)
- cache pending deposit signature verifications (#9374) (@twoeths)
- handle ptc votes from same duplicated validators (#9369) (@twoeths)
Performance
- skip equivocation participant set when there are no equivocators (#9553) (@lodekeeper)
- replace O(N) gossip message count getters with maintained counters (#9170) (@lodekeeper)
- use custodyColumnsIndex for O(1) custody lookup in column reqresp (#9457) (@lodekeeper)
Refactoring
- use number representation for Gloas
ExecutionPayloadBid'sgasLimit(#9528) (@markolazic01)
Continuous Integration
- bump codecov-action to v6.0.2 for keybase migration (#9473) (@lodekeeper)
Tests
- reduce blob reconstruction benchmark to small blob counts (#9543) (@lodekeeper)
- fix noise sendData benchmark teardown race (#9515) (@lodekeeper)
- un-ignore churn related fields in gloas (#9514) (@ensi321)
- catch StreamResetError in sendData noise bench (#9497) (@lodekeeper)
- make isAttestation handler work with negative tests (#9466) (@markolazic01)
- add on_payload_attestation_message fork choice test handler (#9384) (@markolazic01)
Maintenance
- v1.44.0 release (#9495) (@matthewkeil)
- surface fast confirmation reset cause in result/log (#9566) (@nazarhussain)
- do not throw if peers request 0 columns for a root (#9544) (@matthewkeil)
- remove v1 block publishing (#9532) (@markolazic01)
- remove v1 attestation endpoints (#9531) (@markolazic01)
- remove stale gloas todo about different state variants (#9485) (@nflaig)
- stabilize fastConfirmation perf bench (#9494) (@nazarhussain)
- fix BlockInputSync metrics and logs (#9481) (@twoeths)
- update gossipsub to v16.0.2 (#9487) (@wemeetagain)
- track payload timing on dashboard (#9482) (@twoeths)
- remove resolved todo about queuing payload envelopes (#9474) (@nflaig)
- remove unused dependencies (#9462) (@wemeetagain)
- remove old deposit mechanism in fulu (#9459) (@nflaig)
- implement forkchoice debug endpoint v2 (#9444) (@twoeths)
- pluralize gloas execution payload endpoint paths (#9440) (@nflaig)
- log missing payload in ExecutionPayloadEnvelopesByRoot (#9435) (@twoeths)
- fix references to light-client/prover repo (#9434) (@nflaig)
- add logs to debug our PTC votes (#9418) (@nflaig)
- fix test current file launch config (#9429) (@nflaig)
- rename ptcVotes to payloadTimelinessVotes (#9424) (@lodekeeper)
- run caxa via locked pnpm dependency (#9413) (@wemeetagain)
- surface same-message BLS retry metrics on dashboard (#9407) (@nazarhussain)
- add logs and metrics for execution payload (#9370) (@twoeths)
- support dev lodestar-z workflow (#9371) (@spiral-ladder)
- move lightclient and prover to external repo (#9346) (@wemeetagain)
- deps: bump actions/cache from 5.0.5 to 6.1.0 in the actions group (#9563) (@dependabot[bot])
- deps: bump the actions group with 3 updates (#9547) (@dependabot[bot])
- deps: bump js-yaml from 4.1.1 to 4.2.0 (#9525) (@dependabot[bot])
- deps: bump tmp from 0.2.6 to 0.2.7 (#9512) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9510) (@dependabot[bot])
- deps: bump github/codeql-action from 4.36.1 to 4.36.2 in the actions group (#9480) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9452) (@dependabot[bot])
- deps: bump the actions group across 1 directory with 7 updates (#9405) (@dependabot[bot])
- deps: bump qs from 6.14.1 to 6.15.2 (#9399) (@dependabot[bot])
- deps: bump tmp from 0.2.4 to 0.2.6 (#9411) (@dependabot[bot])
Documentation
- document targeted spec test commands in AGENTS.md (#9460) (@lodekeeper)
Release v1.44.0-rc.3
Changelog
Features
- prune PayloadEnvelopeInput when syncing (#9509) (@twoeths)
- upgrade to v1.7.0-alpha.11 spec (#9541) (@nflaig)
- add standard fast confirmation metrics (#9552) (@nflaig)
- queue execution payload envelope until its block is imported (#9520) (@nflaig)
- emit fast_confirmation SSE event per beacon-APIs (#9439) (@nazarhussain)
- fast confirmation rule (#8837) (@nazarhussain)
- expose EMPTY_BLOCK_HASH constant in config API (#9465) (@markolazic01)
- implement EIP-8045 exclude slashed validators from proposing (#9422) (@nflaig)
- force the proposer to reorg late payloads (#9431) (@nflaig)
- only give proposer boost to canonical proposer (#9313) (@ensi321)
- add gossip bid selection to block production (#9289) (@ensi321)
- force the proposer to reorg unavailable blocks (#9387) (@twoeths)
- check gas limit consistency with the target (#9391) (@wemeetagain)
- upgrade to v1.7.0-alpha.8 spec (#9383) (@twoeths)
- add proposer preferences (#9377) (@wemeetagain)
Bug Fixes
- check for slot > 0 in missedSlotVote (#9556) (@spiral-ladder)
- forward
broadcast_validationinpublishBlindedBlockV2(#9535) (@markolazic01) - reject bids with invalid prev_randao during gossip validation (#9533) (@nflaig)
- clamp pivotSlot calculation to GENESIS_SLOT (#9521) (@spiral-ladder)
- defer using proposer duties v2 to gloas (#9519) (@nflaig)
- add fallback handler for getProposerDuties (#9518) (@twoeths)
- ensure block in forkchoice before validate by_root payload (#9479) (@twoeths)
- remove TOO_MANY_SKIPPED_SLOTS block error (#9484) (@twoeths)
- ignore repeat proposal during block publishing (#9235) (@lodekeeper)
- publish only subscribed columns from reconstruction (#9464) (@lodekeeper)
- return resource_unavailable if requested range is before earliest_available_slot (#9454) (@twoeths)
- prune finalized checkpoint state per processState() (#9463) (@twoeths)
- continue past non-custody column requests in DataColumnSidecarsByRoot (#9456) (@lodekeeper)
- use finalized block slot as envelope by range archive boundary (#9432) (@nflaig)
- gate builder bid lookup on shouldBuildOnFull in produceBlockV4 (#9442) (@ensi321)
- handle post-gloas empty blocks in data columns by range (#9433) (@nflaig)
- validate execution payload bids against parent branch state (#9409) (@nflaig)
- ignore PTC attestations for empty assigned slots (#9427) (@nflaig)
- limit
shouldBuildOnFull()checks to the previous slot (#9428) (@nflaig) - skip casting payload attestation when there is no block at slot (#9406) (@ensi321)
- resolve PTC committee against the referenced block state (#9426) (@nflaig)
- ignore PTC votes whose slot does not match the referenced block (#9425) (@nflaig)
- introduce NativeBeaconStateView and simplify bindings (#9412) (@twoeths)
- use correct regen caller for execution payload import (#9421) (@nflaig)
- include payload_data_availability in shouldExtendPayload (#9416) (@twoeths)
- ensure bids are for a higher slot than their parent (#9414) (@nflaig)
- upgrade playwright to 1.60.0 to unblock browser tests CI (#9420) (@ensi321)
- include ethrex EX client code and restore CL commit suffix in gloas graffiti (#9381) (@barnabasbusa)
- download proposer duties for the next epoch post-fulu (#9380) (@twoeths)
- cache pending deposit signature verifications (#9374) (@twoeths)
- handle ptc votes from same duplicated validators (#9369) (@twoeths)
Performance
- skip equivocation participant set when there are no equivocators (#9553) (@lodekeeper)
- replace O(N) gossip message count getters with maintained counters (#9170) (@lodekeeper)
- use custodyColumnsIndex for O(1) custody lookup in column reqresp (#9457) (@lodekeeper)
Refactoring
- use number representation for Gloas
ExecutionPayloadBid'sgasLimit(#9528) (@markolazic01)
Continuous Integration
- bump codecov-action to v6.0.2 for keybase migration (#9473) (@lodekeeper)
Tests
- reduce blob reconstruction benchmark to small blob counts (#9543) (@lodekeeper)
- fix noise sendData benchmark teardown race (#9515) (@lodekeeper)
- un-ignore churn related fields in gloas (#9514) (@ensi321)
- catch StreamResetError in sendData noise bench (#9497) (@lodekeeper)
- make isAttestation handler work with negative tests (#9466) (@markolazic01)
- add on_payload_attestation_message fork choice test handler (#9384) (@markolazic01)
Maintenance
- surface fast confirmation reset cause in result/log (#9566) (@nazarhussain)
- do not throw if peers request 0 columns for a root (#9544) (@matthewkeil)
- remove v1 block publishing (#9532) (@markolazic01)
- remove v1 attestation endpoints (#9531) (@markolazic01)
- remove stale gloas todo about different state variants (#9485) (@nflaig)
- stabilize fastConfirmation perf bench (#9494) (@nazarhussain)
- fix BlockInputSync metrics and logs (#9481) (@twoeths)
- update gossipsub to v16.0.2 (#9487) (@wemeetagain)
- track payload timing on dashboard (#9482) (@twoeths)
- remove resolved todo about queuing payload envelopes (#9474) (@nflaig)
- remove unused dependencies (#9462) (@wemeetagain)
- remove old deposit mechanism in fulu (#9459) (@nflaig)
- implement forkchoice debug endpoint v2 (#9444) (@twoeths)
- pluralize gloas execution payload endpoint paths (#9440) (@nflaig)
- log missing payload in ExecutionPayloadEnvelopesByRoot (#9435) (@twoeths)
- fix references to light-client/prover repo (#9434) (@nflaig)
- add logs to debug our PTC votes (#9418) (@nflaig)
- fix test current file launch config (#9429) (@nflaig)
- rename ptcVotes to payloadTimelinessVotes (#9424) (@lodekeeper)
- run caxa via locked pnpm dependency (#9413) (@wemeetagain)
- surface same-message BLS retry metrics on dashboard (#9407) (@nazarhussain)
- add logs and metrics for execution payload (#9370) (@twoeths)
- support dev lodestar-z workflow (#9371) (@spiral-ladder)
- move lightclient and prover to external repo (#9346) (@wemeetagain)
- deps: bump actions/cache from 5.0.5 to 6.1.0 in the actions group (#9563) (@dependabot[bot])
- deps: bump the actions group with 3 updates (#9547) (@dependabot[bot])
- deps: bump js-yaml from 4.1.1 to 4.2.0 (#9525) (@dependabot[bot])
- deps: bump tmp from 0.2.6 to 0.2.7 (#9512) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9510) (@dependabot[bot])
- deps: bump github/codeql-action from 4.36.1 to 4.36.2 in the actions group (#9480) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9452) (@dependabot[bot])
- deps: bump the actions group across 1 directory with 7 updates (#9405) (@dependabot[bot])
- deps: bump qs from 6.14.1 to 6.15.2 (#9399) (@dependabot[bot])
- deps: bump tmp from 0.2.4 to 0.2.6 (#9411) (@dependabot[bot])
Documentation
- document targeted spec test commands in AGENTS.md (#9460) (@lodekeeper)
Release v1.44.0-rc.2
Changelog
Features
- add standard fast confirmation metrics (#9552) (@nflaig)
- queue execution payload envelope until its block is imported (#9520) (@nflaig)
- emit fast_confirmation SSE event per beacon-APIs (#9439) (@nazarhussain)
- fast confirmation rule (#8837) (@nazarhussain)
- expose EMPTY_BLOCK_HASH constant in config API (#9465) (@markolazic01)
- implement EIP-8045 exclude slashed validators from proposing (#9422) (@nflaig)
- force the proposer to reorg late payloads (#9431) (@nflaig)
- only give proposer boost to canonical proposer (#9313) (@ensi321)
- add gossip bid selection to block production (#9289) (@ensi321)
- force the proposer to reorg unavailable blocks (#9387) (@twoeths)
- check gas limit consistency with the target (#9391) (@wemeetagain)
- upgrade to v1.7.0-alpha.8 spec (#9383) (@twoeths)
- add proposer preferences (#9377) (@wemeetagain)
Bug Fixes
- check for slot > 0 in missedSlotVote (#9556) (@spiral-ladder)
- forward
broadcast_validationinpublishBlindedBlockV2(#9535) (@markolazic01) - reject bids with invalid prev_randao during gossip validation (#9533) (@nflaig)
- clamp pivotSlot calculation to GENESIS_SLOT (#9521) (@spiral-ladder)
- defer using proposer duties v2 to gloas (#9519) (@nflaig)
- add fallback handler for getProposerDuties (#9518) (@twoeths)
- ensure block in forkchoice before validate by_root payload (#9479) (@twoeths)
- remove TOO_MANY_SKIPPED_SLOTS block error (#9484) (@twoeths)
- ignore repeat proposal during block publishing (#9235) (@lodekeeper)
- publish only subscribed columns from reconstruction (#9464) (@lodekeeper)
- return resource_unavailable if requested range is before earliest_available_slot (#9454) (@twoeths)
- prune finalized checkpoint state per processState() (#9463) (@twoeths)
- continue past non-custody column requests in DataColumnSidecarsByRoot (#9456) (@lodekeeper)
- use finalized block slot as envelope by range archive boundary (#9432) (@nflaig)
- gate builder bid lookup on shouldBuildOnFull in produceBlockV4 (#9442) (@ensi321)
- handle post-gloas empty blocks in data columns by range (#9433) (@nflaig)
- validate execution payload bids against parent branch state (#9409) (@nflaig)
- ignore PTC attestations for empty assigned slots (#9427) (@nflaig)
- limit
shouldBuildOnFull()checks to the previous slot (#9428) (@nflaig) - skip casting payload attestation when there is no block at slot (#9406) (@ensi321)
- resolve PTC committee against the referenced block state (#9426) (@nflaig)
- ignore PTC votes whose slot does not match the referenced block (#9425) (@nflaig)
- introduce NativeBeaconStateView and simplify bindings (#9412) (@twoeths)
- use correct regen caller for execution payload import (#9421) (@nflaig)
- include payload_data_availability in shouldExtendPayload (#9416) (@twoeths)
- ensure bids are for a higher slot than their parent (#9414) (@nflaig)
- upgrade playwright to 1.60.0 to unblock browser tests CI (#9420) (@ensi321)
- include ethrex EX client code and restore CL commit suffix in gloas graffiti (#9381) (@barnabasbusa)
- download proposer duties for the next epoch post-fulu (#9380) (@twoeths)
- cache pending deposit signature verifications (#9374) (@twoeths)
- handle ptc votes from same duplicated validators (#9369) (@twoeths)
Performance
- skip equivocation participant set when there are no equivocators (#9553) (@lodekeeper)
- replace O(N) gossip message count getters with maintained counters (#9170) (@lodekeeper)
- use custodyColumnsIndex for O(1) custody lookup in column reqresp (#9457) (@lodekeeper)
Refactoring
- use number representation for Gloas
ExecutionPayloadBid'sgasLimit(#9528) (@markolazic01)
Continuous Integration
- bump codecov-action to v6.0.2 for keybase migration (#9473) (@lodekeeper)
Tests
- reduce blob reconstruction benchmark to small blob counts (#9543) (@lodekeeper)
- fix noise sendData benchmark teardown race (#9515) (@lodekeeper)
- un-ignore churn related fields in gloas (#9514) (@ensi321)
- catch StreamResetError in sendData noise bench (#9497) (@lodekeeper)
- make isAttestation handler work with negative tests (#9466) (@markolazic01)
- add on_payload_attestation_message fork choice test handler (#9384) (@markolazic01)
Maintenance
- do not throw if peers request 0 columns for a root (#9544) (@matthewkeil)
- remove v1 block publishing (#9532) (@markolazic01)
- remove v1 attestation endpoints (#9531) (@markolazic01)
- remove stale gloas todo about different state variants (#9485) (@nflaig)
- stabilize fastConfirmation perf bench (#9494) (@nazarhussain)
- fix BlockInputSync metrics and logs (#9481) (@twoeths)
- update gossipsub to v16.0.2 (#9487) (@wemeetagain)
- track payload timing on dashboard (#9482) (@twoeths)
- remove resolved todo about queuing payload envelopes (#9474) (@nflaig)
- remove unused dependencies (#9462) (@wemeetagain)
- remove old deposit mechanism in fulu (#9459) (@nflaig)
- implement forkchoice debug endpoint v2 (#9444) (@twoeths)
- pluralize gloas execution payload endpoint paths (#9440) (@nflaig)
- log missing payload in ExecutionPayloadEnvelopesByRoot (#9435) (@twoeths)
- fix references to light-client/prover repo (#9434) (@nflaig)
- add logs to debug our PTC votes (#9418) (@nflaig)
- fix test current file launch config (#9429) (@nflaig)
- rename ptcVotes to payloadTimelinessVotes (#9424) (@lodekeeper)
- run caxa via locked pnpm dependency (#9413) (@wemeetagain)
- surface same-message BLS retry metrics on dashboard (#9407) (@nazarhussain)
- add logs and metrics for execution payload (#9370) (@twoeths)
- support dev lodestar-z workflow (#9371) (@spiral-ladder)
- move lightclient and prover to external repo (#9346) (@wemeetagain)
- deps: bump the actions group with 3 updates (#9547) (@dependabot[bot])
- deps: bump js-yaml from 4.1.1 to 4.2.0 (#9525) (@dependabot[bot])
- deps: bump tmp from 0.2.6 to 0.2.7 (#9512) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9510) (@dependabot[bot])
- deps: bump github/codeql-action from 4.36.1 to 4.36.2 in the actions group (#9480) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9452) (@dependabot[bot])
- deps: bump the actions group across 1 directory with 7 updates (#9405) (@dependabot[bot])
- deps: bump qs from 6.14.1 to 6.15.2 (#9399) (@dependabot[bot])
- deps: bump tmp from 0.2.4 to 0.2.6 (#9411) (@dependabot[bot])
Documentation
- document targeted spec test commands in AGENTS.md (#9460) (@lodekeeper)
Release v1.44.0-rc.1
Changelog
Features
- emit fast_confirmation SSE event per beacon-APIs (#9439) (@nazarhussain)
- fast confirmation rule (#8837) (@nazarhussain)
- expose EMPTY_BLOCK_HASH constant in config API (#9465) (@markolazic01)
- implement EIP-8045 exclude slashed validators from proposing (#9422) (@nflaig)
- force the proposer to reorg late payloads (#9431) (@nflaig)
- only give proposer boost to canonical proposer (#9313) (@ensi321)
- add gossip bid selection to block production (#9289) (@ensi321)
- force the proposer to reorg unavailable blocks (#9387) (@twoeths)
- check gas limit consistency with the target (#9391) (@wemeetagain)
- upgrade to v1.7.0-alpha.8 spec (#9383) (@twoeths)
- add proposer preferences (#9377) (@wemeetagain)
Bug Fixes
- defer using proposer duties v2 to gloas (#9519) (@nflaig)
- add fallback handler for getProposerDuties (#9518) (@twoeths)
- ensure block in forkchoice before validate by_root payload (#9479) (@twoeths)
- remove TOO_MANY_SKIPPED_SLOTS block error (#9484) (@twoeths)
- ignore repeat proposal during block publishing (#9235) (@lodekeeper)
- publish only subscribed columns from reconstruction (#9464) (@lodekeeper)
- return resource_unavailable if requested range is before earliest_available_slot (#9454) (@twoeths)
- prune finalized checkpoint state per processState() (#9463) (@twoeths)
- continue past non-custody column requests in DataColumnSidecarsByRoot (#9456) (@lodekeeper)
- use finalized block slot as envelope by range archive boundary (#9432) (@nflaig)
- gate builder bid lookup on shouldBuildOnFull in produceBlockV4 (#9442) (@ensi321)
- handle post-gloas empty blocks in data columns by range (#9433) (@nflaig)
- validate execution payload bids against parent branch state (#9409) (@nflaig)
- ignore PTC attestations for empty assigned slots (#9427) (@nflaig)
- limit
shouldBuildOnFull()checks to the previous slot (#9428) (@nflaig) - skip casting payload attestation when there is no block at slot (#9406) (@ensi321)
- resolve PTC committee against the referenced block state (#9426) (@nflaig)
- ignore PTC votes whose slot does not match the referenced block (#9425) (@nflaig)
- introduce NativeBeaconStateView and simplify bindings (#9412) (@twoeths)
- use correct regen caller for execution payload import (#9421) (@nflaig)
- include payload_data_availability in shouldExtendPayload (#9416) (@twoeths)
- ensure bids are for a higher slot than their parent (#9414) (@nflaig)
- upgrade playwright to 1.60.0 to unblock browser tests CI (#9420) (@ensi321)
- include ethrex EX client code and restore CL commit suffix in gloas graffiti (#9381) (@barnabasbusa)
- download proposer duties for the next epoch post-fulu (#9380) (@twoeths)
- cache pending deposit signature verifications (#9374) (@twoeths)
- handle ptc votes from same duplicated validators (#9369) (@twoeths)
Performance
- replace O(N) gossip message count getters with maintained counters (#9170) (@lodekeeper)
- use custodyColumnsIndex for O(1) custody lookup in column reqresp (#9457) (@lodekeeper)
Continuous Integration
- bump codecov-action to v6.0.2 for keybase migration (#9473) (@lodekeeper)
Tests
- un-ignore churn related fields in gloas (#9514) (@ensi321)
- catch StreamResetError in sendData noise bench (#9497) (@lodekeeper)
- make isAttestation handler work with negative tests (#9466) (@markolazic01)
- add on_payload_attestation_message fork choice test handler (#9384) (@markolazic01)
Maintenance
- remove stale gloas todo about different state variants (#9485) (@nflaig)
- stabilize fastConfirmation perf bench (#9494) (@nazarhussain)
- fix BlockInputSync metrics and logs (#9481) (@twoeths)
- update gossipsub to v16.0.2 (#9487) (@wemeetagain)
- track payload timing on dashboard (#9482) (@twoeths)
- remove resolved todo about queuing payload envelopes (#9474) (@nflaig)
- remove unused dependencies (#9462) (@wemeetagain)
- remove old deposit mechanism in fulu (#9459) (@nflaig)
- implement forkchoice debug endpoint v2 (#9444) (@twoeths)
- pluralize gloas execution payload endpoint paths (#9440) (@nflaig)
- log missing payload in ExecutionPayloadEnvelopesByRoot (#9435) (@twoeths)
- fix references to light-client/prover repo (#9434) (@nflaig)
- add logs to debug our PTC votes (#9418) (@nflaig)
- fix test current file launch config (#9429) (@nflaig)
- rename ptcVotes to payloadTimelinessVotes (#9424) (@lodekeeper)
- run caxa via locked pnpm dependency (#9413) (@wemeetagain)
- surface same-message BLS retry metrics on dashboard (#9407) (@nazarhussain)
- add logs and metrics for execution payload (#9370) (@twoeths)
- support dev lodestar-z workflow (#9371) (@spiral-ladder)
- move lightclient and prover to external repo (#9346) (@wemeetagain)
- deps: bump the actions group with 2 updates (#9510) (@dependabot[bot])
- deps: bump github/codeql-action from 4.36.1 to 4.36.2 in the actions group (#9480) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9452) (@dependabot[bot])
- deps: bump the actions group across 1 directory with 7 updates (#9405) (@dependabot[bot])
- deps: bump qs from 6.14.1 to 6.15.2 (#9399) (@dependabot[bot])
- deps: bump tmp from 0.2.4 to 0.2.6 (#9411) (@dependabot[bot])
Documentation
- document targeted spec test commands in AGENTS.md (#9460) (@lodekeeper)
Release v1.44.0-rc.0
Changelog
Features
- emit fast_confirmation SSE event per beacon-APIs (#9439) (@nazarhussain)
- fast confirmation rule (#8837) (@nazarhussain)
- expose EMPTY_BLOCK_HASH constant in config API (#9465) (@markolazic01)
- implement EIP-8045 exclude slashed validators from proposing (#9422) (@nflaig)
- force the proposer to reorg late payloads (#9431) (@nflaig)
- only give proposer boost to canonical proposer (#9313) (@ensi321)
- add gossip bid selection to block production (#9289) (@ensi321)
- force the proposer to reorg unavailable blocks (#9387) (@twoeths)
- check gas limit consistency with the target (#9391) (@wemeetagain)
- upgrade to v1.7.0-alpha.8 spec (#9383) (@twoeths)
- add proposer preferences (#9377) (@wemeetagain)
Bug Fixes
- ensure block in forkchoice before validate by_root payload (#9479) (@twoeths)
- remove TOO_MANY_SKIPPED_SLOTS block error (#9484) (@twoeths)
- ignore repeat proposal during block publishing (#9235) (@lodekeeper)
- publish only subscribed columns from reconstruction (#9464) (@lodekeeper)
- return resource_unavailable if requested range is before earliest_available_slot (#9454) (@twoeths)
- prune finalized checkpoint state per processState() (#9463) (@twoeths)
- continue past non-custody column requests in DataColumnSidecarsByRoot (#9456) (@lodekeeper)
- use finalized block slot as envelope by range archive boundary (#9432) (@nflaig)
- gate builder bid lookup on shouldBuildOnFull in produceBlockV4 (#9442) (@ensi321)
- handle post-gloas empty blocks in data columns by range (#9433) (@nflaig)
- validate execution payload bids against parent branch state (#9409) (@nflaig)
- ignore PTC attestations for empty assigned slots (#9427) (@nflaig)
- limit
shouldBuildOnFull()checks to the previous slot (#9428) (@nflaig) - skip casting payload attestation when there is no block at slot (#9406) (@ensi321)
- resolve PTC committee against the referenced block state (#9426) (@nflaig)
- ignore PTC votes whose slot does not match the referenced block (#9425) (@nflaig)
- introduce NativeBeaconStateView and simplify bindings (#9412) (@twoeths)
- use correct regen caller for execution payload import (#9421) (@nflaig)
- include payload_data_availability in shouldExtendPayload (#9416) (@twoeths)
- ensure bids are for a higher slot than their parent (#9414) (@nflaig)
- upgrade playwright to 1.60.0 to unblock browser tests CI (#9420) (@ensi321)
- include ethrex EX client code and restore CL commit suffix in gloas graffiti (#9381) (@barnabasbusa)
- download proposer duties for the next epoch post-fulu (#9380) (@twoeths)
- cache pending deposit signature verifications (#9374) (@twoeths)
- handle ptc votes from same duplicated validators (#9369) (@twoeths)
Performance
- replace O(N) gossip message count getters with maintained counters (#9170) (@lodekeeper)
- use custodyColumnsIndex for O(1) custody lookup in column reqresp (#9457) (@lodekeeper)
Continuous Integration
- bump codecov-action to v6.0.2 for keybase migration (#9473) (@lodekeeper)
Tests
- make isAttestation handler work with negative tests (#9466) (@markolazic01)
- add on_payload_attestation_message fork choice test handler (#9384) (@markolazic01)
Maintenance
- update gossipsub to v16.0.2 (#9487) (@wemeetagain)
- track payload timing on dashboard (#9482) (@twoeths)
- remove resolved todo about queuing payload envelopes (#9474) (@nflaig)
- remove unused dependencies (#9462) (@wemeetagain)
- remove old deposit mechanism in fulu (#9459) (@nflaig)
- implement forkchoice debug endpoint v2 (#9444) (@twoeths)
- pluralize gloas execution payload endpoint paths (#9440) (@nflaig)
- log missing payload in ExecutionPayloadEnvelopesByRoot (#9435) (@twoeths)
- fix references to light-client/prover repo (#9434) (@nflaig)
- add logs to debug our PTC votes (#9418) (@nflaig)
- fix test current file launch config (#9429) (@nflaig)
- rename ptcVotes to payloadTimelinessVotes (#9424) (@lodekeeper)
- run caxa via locked pnpm dependency (#9413) (@wemeetagain)
- surface same-message BLS retry metrics on dashboard (#9407) (@nazarhussain)
- add logs and metrics for execution payload (#9370) (@twoeths)
- support dev lodestar-z workflow (#9371) (@spiral-ladder)
- move lightclient and prover to external repo (#9346) (@wemeetagain)
- deps: bump github/codeql-action from 4.36.1 to 4.36.2 in the actions group (#9480) (@dependabot[bot])
- deps: bump the actions group with 2 updates (#9452) (@dependabot[bot])
- deps: bump the actions group across 1 directory with 7 updates (#9405) (@dependabot[bot])
- deps: bump qs from 6.14.1 to 6.15.2 (#9399) (@dependabot[bot])
- deps: bump tmp from 0.2.4 to 0.2.6 (#9411) (@dependabot[bot])
Documentation
- document targeted spec test commands in AGENTS.md (#9460) (@lodekeeper)
Release v1.43.0
Good day Lodestar operators! We've just released v1.43.0 and recommend users upgrade for the latest features and best performance. This release has an important fix or self rate-limiting so that we are better peers, and thus have better peering and syncing. We also fixed a bug in block-import performance, as well as another substantial wave of ePBS / Gloas progress.
Operational Note: Internal tooling moved to pnpm v11. There will be no action required for operators running via Docker, however if you are building from source you will need to update your version of pnpm.
Changelog
Features
- assert chain segment in range sync (#9361) (@twoeths)
- add beacon_blocks_by_head reqresp (#9331) (@wemeetagain)
- better self-rate-limit handling (#9335) (@wemeetagain)
- implement EIP-8061 increase exit and consolidation churn (#9305) (@ensi321)
- add dependent root to proposer preferences (#9303) (@nflaig)
- bump spec test version to v1.7.0-alpha.6 (#9304) (@ensi321)
- wire in PTC duties (#9287) (@wemeetagain)
- include payload attestations when producing block (#9283) (@wemeetagain)
- wire up proposer_preferences gossip topic (#9275) (@nflaig)
- add unknown payload envelope sync flow (#9241) (@wemeetagain)
- range sync for gloas (#9269) (@twoeths)
- update sync notifier for gloas (#9272) (@nflaig)
- support nightly spec tests (#9221) (@brech1)
- wire parent execution requests in block production (#9265) (@nflaig)
- cache the last 2 PayloadEnvelopeInputs (#9260) (@twoeths)
- defer payload processing to next block (#9257) (@ensi321)
- implement EIP-7843 and alpha.5 containers (#9254) (@ensi321)
- merge BAL into ePBS (#9226) (@ensi321)
- add cached PTC window to the state (#9211) (@nflaig)
- trigger processExecutionPayload() once (#9223) (@twoeths)
- unskip gloas fork choice spec tests (#9222) (@ensi321)
- ignore index-1 attestation when payload is missing (#9213) (@ensi321)
- add endpoint to craft attester slashings from blocks (#9198) (@markolazic01)
- add endpoint to retrieve signed execution payload envelope (#9186) (@nflaig)
- add execution payload bid event (#9185) (@nflaig)
- fork-aware IBeaconStateView type narrowing (#9105) (@lodekeeper)
- reqresp: track peer rate-limit backoff in SelfRateLimiter (#9034) (@wemeetagain)
Bug Fixes
- improve error handling for invalid execution payloads from gossip (#9363) (@nflaig)
- do not range sync the same peer again (#9360) (@twoeths)
- dedupe persistent-merkle-tree to recover hashtree hasher (#9352) (@twoeths)
- checkpoint sync for skipped slot (#9329) (@twoeths)
- prevent seed state cache poisoning in loadState clone (#9246) (@lodekeeper)
- include latest payload bid in gloas genesis block (#9336) (@nflaig)
- only trigger gloas blobs tracker in gossip (#9322) (@wemeetagain)
- prune PayloadEnvelopeInput on the same branch (#9317) (@twoeths)
- range sync mismarks partial batches as fully downloaded (#9311) (@twoeths)
- gloas checkpoint sync (#9293) (@twoeths)
- remove gloas genesis workarounds (#9308) (@nflaig)
- allow known PayloadEnvelopeInput (#9307) (@twoeths)
- queue payload envelopes in network processor (#9300) (@wemeetagain)
- drop voluntary exits invalidated by parent execution requests (#9292) (@nflaig)
- correct DA status for payload (#9278) (@twoeths)
- call fcu in importExecutionPayload (#9285) (@wemeetagain)
- avoid metrics crash on payload envelope publish (#9279) (@lodekeeper)
- clone block header during payload envelope verification (#9277) (@nflaig)
- properly handle starting from gloas at genesis (#9273) (@nflaig)
- emit
payload_attributesfor local proposals by default (#9258) (@eth2353) - revert anchor block PTC vote override (#9264) (@lodekeeper)
- add check on bid gossip for blob kzg commitment len (#9261) (@nflaig)
- drop payloadStatus from Checkpoint (#9259) (@twoeths)
- gate loadOtherState validators/balances preload behind opt-in (#9245) (@twoeths)
- use fork choice for parent payload status in block production (#9209) (@nflaig)
- correct proposer boost logic and getParentNodeIndex for gloas (#9165) (@twoeths)
- reject same-slot full attestation votes for gloas (#9205) (@nflaig)
- check if pending deposit exists before applying to builder (#9180) (@nflaig)
- validate MIN_EPOCHS for blob/data column by range/root requests (#9173) (@nflaig)
- initialize anchor block PTC votes to all-true (#9188) (@lodekeeper)
- ignore beacon block if parent payload unknown (#9178) (@nflaig)
- use expected withdrawals from state when parent is empty (#9189) (@nflaig)
- skip light client processing for gloas blocks (#9191) (@nflaig)
- only allow attestations for known payload statuses (#9177) (@nflaig)
- ci: set registry-url for OIDC publish under pnpm v11 (#9368) (@lodekeeper)
- ci: install caxa via npx to unblock binary release under pnpm v11 (#9367) (@lodekeeper)
- sync: use rate-limit backoff metadata (#9354) (@wemeetagain)
- docs: allow core-js postinstall scripts under pnpm v11 (#9356) (@lodekeeper)
- cli: skip backtick code spans in docs sanitizer (#9334) (@lodekeeper)
Refactoring
- revert dual-state from regen, block production, and metrics (#9218) (@ensi321)
- revert dual-state cache architecture from ePBS (#9215) (@ensi321)
- use consistent names for state after payload is applied (#9175) (@nflaig)
- align bid filtering with consensus spec (#9182) (@nflaig)
Continuous Integration
- drop redundant pnpm bootstrap on arm64 publish (#9345) (@lodekeeper)
Tests
- fix unknownBlockSync e2e assertions for gloas (#9276) (@nflaig)
- add bellatrix and capella gossip validation spec tests (#9192) (@nflaig)
Maintenance
- v1.43.0 release (#9344) (@matthewkeil)
- remove unused flare package (#9358) (@wemeetagain)
- upgrade pnpm to v11 (#9299) (@nazarhussain)
- index proposer preferences by slot first (#9312) (@markolazic01)
- more logs for range sync (#9302) (@twoeths)
- remove isParentBlockFull (#9280) (@nflaig)
- remove epoch_boundary sanity handler (#9270) (@nflaig)
- fail nightly spec tests workflow if any tests failed (#9271) (@nflaig)
- add workflow to run nightly spec tests (#9268) (@nflaig)
- bump kurtosis-assertoor action to v1.0.1 to fix nightly sim (#9266) (@lodekeeper)
- merge v1.42.0 back to unstable (#9210) (@matthewkeil)
- review import execution payload (#9174) (@nflaig)
- deps: bump systeminformation from 5.30.8 to 5.31.6 (#9366) (@dependabot[bot])
- deps: bump actions group (excluding setup-node and pnpm/action-setup) (#9353) (@lodekeeper)
- deps: bump fastify from 5.8.3 to 5.8.5 (#9250) (@dependabot[bot])
- deps: bump docker/login-action from 4.0.0 to 4.1.0 in the actions group (#9195) (@dependabot[bot])
Documentation
- clarify --serveHistoricalState and --chain.pruneHistory help text (#9328) (@lodekeeper)
- update RELEASE.md (#9172) (@matthewkeil)
- add spec comment for envelope signature validation (#9184) (@nflaig)
Release v1.43.0-rc.5
Changelog
Features
- assert chain segment in range sync (#9361) (@twoeths)
- add beacon_blocks_by_head reqresp (#9331) (@wemeetagain)
- better self-rate-limit handling (#9335) (@wemeetagain)
- implement EIP-8061 increase exit and consolidation churn (#9305) (@ensi321)
- add dependent root to proposer preferences (#9303) (@nflaig)
- bump spec test version to v1.7.0-alpha.6 (#9304) (@ensi321)
- wire in PTC duties (#9287) (@wemeetagain)
- include payload attestations when producing block (#9283) (@wemeetagain)
- wire up proposer_preferences gossip topic (#9275) (@nflaig)
- add unknown payload envelope sync flow (#9241) (@wemeetagain)
- range sync for gloas (#9269) (@twoeths)
- update sync notifier for gloas (#9272) (@nflaig)
- support nightly spec tests (#9221) (@brech1)
- wire parent execution requests in block production (#9265) (@nflaig)
- cache the last 2 PayloadEnvelopeInputs (#9260) (@twoeths)
- defer payload processing to next block (#9257) (@ensi321)
- implement EIP-7843 and alpha.5 containers (#9254) (@ensi321)
- merge BAL into ePBS (#9226) (@ensi321)
- add cached PTC window to the state (#9211) (@nflaig)
- trigger processExecutionPayload() once (#9223) (@twoeths)
- unskip gloas fork choice spec tests (#9222) (@ensi321)
- ignore index-1 attestation when payload is missing (#9213) (@ensi321)
- add endpoint to craft attester slashings from blocks (#9198) (@markolazic01)
- add endpoint to retrieve signed execution payload envelope (#9186) (@nflaig)
- add execution payload bid event (#9185) (@nflaig)
- fork-aware IBeaconStateView type narrowing (#9105) (@lodekeeper)
- reqresp: track peer rate-limit backoff in SelfRateLimiter (#9034) (@wemeetagain)
Bug Fixes
- improve error handling for invalid execution payloads from gossip (#9363) (@nflaig)
- do not range sync the same peer again (#9360) (@twoeths)
- dedupe persistent-merkle-tree to recover hashtree hasher (#9352) (@twoeths)
- checkpoint sync for skipped slot (#9329) (@twoeths)
- prevent seed state cache poisoning in loadState clone (#9246) (@lodekeeper)
- include latest payload bid in gloas genesis block (#9336) (@nflaig)
- only trigger gloas blobs tracker in gossip (#9322) (@wemeetagain)
- prune PayloadEnvelopeInput on the same branch (#9317) (@twoeths)
- range sync mismarks partial batches as fully downloaded (#9311) (@twoeths)
- gloas checkpoint sync (#9293) (@twoeths)
- remove gloas genesis workarounds (#9308) (@nflaig)
- allow known PayloadEnvelopeInput (#9307) (@twoeths)
- queue payload envelopes in network processor (#9300) (@wemeetagain)
- drop voluntary exits invalidated by parent execution requests (#9292) (@nflaig)
- correct DA status for payload (#9278) (@twoeths)
- call fcu in importExecutionPayload (#9285) (@wemeetagain)
- avoid metrics crash on payload envelope publish (#9279) (@lodekeeper)
- clone block header during payload envelope verification (#9277) (@nflaig)
- properly handle starting from gloas at genesis (#9273) (@nflaig)
- emit
payload_attributesfor local proposals by default (#9258) (@eth2353) - revert anchor block PTC vote override (#9264) (@lodekeeper)
- add check on bid gossip for blob kzg commitment len (#9261) (@nflaig)
- drop payloadStatus from Checkpoint (#9259) (@twoeths)
- gate loadOtherState validators/balances preload behind opt-in (#9245) (@twoeths)
- use fork choice for parent payload status in block production (#9209) (@nflaig)
- correct proposer boost logic and getParentNodeIndex for gloas (#9165) (@twoeths)
- reject same-slot full attestation votes for gloas (#9205) (@nflaig)
- check if pending deposit exists before applying to builder (#9180) (@nflaig)
- validate MIN_EPOCHS for blob/data column by range/root requests (#9173) (@nflaig)
- initialize anchor block PTC votes to all-true (#9188) (@lodekeeper)
- ignore beacon block if parent payload unknown (#9178) (@nflaig)
- use expected withdrawals from state when parent is empty (#9189) (@nflaig)
- skip light client processing for gloas blocks (#9191) (@nflaig)
- only allow attestations for known payload statuses (#9177) (@nflaig)
- ci: set registry-url for OIDC publish under pnpm v11 (#9368) (@lodekeeper)
- ci: install caxa via npx to unblock binary release under pnpm v11 (#9367) (@lodekeeper)
- sync: use rate-limit backoff metadata (#9354) (@wemeetagain)
- docs: allow core-js postinstall scripts under pnpm v11 (#9356) (@lodekeeper)
- cli: skip backtick code spans in docs sanitizer (#9334) (@lodekeeper)
Refactoring
- revert dual-state from regen, block production, and metrics (#9218) (@ensi321)
- revert dual-state cache architecture from ePBS (#9215) (@ensi321)
- use consistent names for state after payload is applied (#9175) (@nflaig)
- align bid filtering with consensus spec (#9182) (@nflaig)
Continuous Integration
- drop redundant pnpm bootstrap on arm64 publish (#9345) (@lodekeeper)
Tests
- fix unknownBlockSync e2e assertions for gloas (#9276) (@nflaig)
- add bellatrix and capella gossip validation spec tests (#9192) (@nflaig)
Maintenance
- remove unused flare package (#9358) (@wemeetagain)
- upgrade pnpm to v11 (#9299) (@nazarhussain)
- index proposer preferences by slot first (#9312) (@markolazic01)
- more logs for range sync (#9302) (@twoeths)
- remove isParentBlockFull (#9280) (@nflaig)
- remove epoch_boundary sanity handler (#9270) (@nflaig)
- fail nightly spec tests workflow if any tests failed (#9271) (@nflaig)
- add workflow to run nightly spec tests (#9268) (@nflaig)
- bump kurtosis-assertoor action to v1.0.1 to fix nightly sim (#9266) (@lodekeeper)
- merge v1.42.0 back to unstable (#9210) (@matthewkeil)
- review import execution payload (#9174) (@nflaig)
- deps: bump systeminformation from 5.30.8 to 5.31.6 (#9366) (@dependabot[bot])
- deps: bump actions group (excluding setup-node and pnpm/action-setup) (#9353) (@lodekeeper)
- deps: bump fastify from 5.8.3 to 5.8.5 (#9250) (@dependabot[bot])
- deps: bump docker/login-action from 4.0.0 to 4.1.0 in the actions group (#9195) (@dependabot[bot])
Documentation
- clarify --serveHistoricalState and --chain.pruneHistory help text (#9328) (@lodekeeper)
- update RELEASE.md (#9172) (@matthewkeil)
- add spec comment for envelope signature validation (#9184) (@nflaig)
Release v1.43.0-rc.2
Changelog
Features
- better self-rate-limit handling (#9335) (@wemeetagain)
- implement EIP-8061 increase exit and consolidation churn (#9305) (@ensi321)
- add dependent root to proposer preferences (#9303) (@nflaig)
- bump spec test version to v1.7.0-alpha.6 (#9304) (@ensi321)
- wire in PTC duties (#9287) (@wemeetagain)
- include payload attestations when producing block (#9283) (@wemeetagain)
- wire up proposer_preferences gossip topic (#9275) (@nflaig)
- add unknown payload envelope sync flow (#9241) (@wemeetagain)
- range sync for gloas (#9269) (@twoeths)
- update sync notifier for gloas (#9272) (@nflaig)
- support nightly spec tests (#9221) (@brech1)
- wire parent execution requests in block production (#9265) (@nflaig)
- cache the last 2 PayloadEnvelopeInputs (#9260) (@twoeths)
- defer payload processing to next block (#9257) (@ensi321)
- implement EIP-7843 and alpha.5 containers (#9254) (@ensi321)
- merge BAL into ePBS (#9226) (@ensi321)
- add cached PTC window to the state (#9211) (@nflaig)
- trigger processExecutionPayload() once (#9223) (@twoeths)
- unskip gloas fork choice spec tests (#9222) (@ensi321)
- ignore index-1 attestation when payload is missing (#9213) (@ensi321)
- add endpoint to craft attester slashings from blocks (#9198) (@markolazic01)
- add endpoint to retrieve signed execution payload envelope (#9186) (@nflaig)
- add execution payload bid event (#9185) (@nflaig)
- fork-aware IBeaconStateView type narrowing (#9105) (@lodekeeper)
- reqresp: track peer rate-limit backoff in SelfRateLimiter (#9034) (@wemeetagain)
Bug Fixes
- dedupe persistent-merkle-tree to recover hashtree hasher (#9352) (@twoeths)
- checkpoint sync for skipped slot (#9329) (@twoeths)
- prevent seed state cache poisoning in loadState clone (#9246) (@lodekeeper)
- include latest payload bid in gloas genesis block (#9336) (@nflaig)
- only trigger gloas blobs tracker in gossip (#9322) (@wemeetagain)
- prune PayloadEnvelopeInput on the same branch (#9317) (@twoeths)
- range sync mismarks partial batches as fully downloaded (#9311) (@twoeths)
- gloas checkpoint sync (#9293) (@twoeths)
- remove gloas genesis workarounds (#9308) (@nflaig)
- allow known PayloadEnvelopeInput (#9307) (@twoeths)
- queue payload envelopes in network processor (#9300) (@wemeetagain)
- drop voluntary exits invalidated by parent execution requests (#9292) (@nflaig)
- correct DA status for payload (#9278) (@twoeths)
- call fcu in importExecutionPayload (#9285) (@wemeetagain)
- avoid metrics crash on payload envelope publish (#9279) (@lodekeeper)
- clone block header during payload envelope verification (#9277) (@nflaig)
- properly handle starting from gloas at genesis (#9273) (@nflaig)
- emit
payload_attributesfor local proposals by default (#9258) (@eth2353) - revert anchor block PTC vote override (#9264) (@lodekeeper)
- add check on bid gossip for blob kzg commitment len (#9261) (@nflaig)
- drop payloadStatus from Checkpoint (#9259) (@twoeths)
- gate loadOtherState validators/balances preload behind opt-in (#9245) (@twoeths)
- use fork choice for parent payload status in block production (#9209) (@nflaig)
- correct proposer boost logic and getParentNodeIndex for gloas (#9165) (@twoeths)
- reject same-slot full attestation votes for gloas (#9205) (@nflaig)
- check if pending deposit exists before applying to builder (#9180) (@nflaig)
- validate MIN_EPOCHS for blob/data column by range/root requests (#9173) (@nflaig)
- initialize anchor block PTC votes to all-true (#9188) (@lodekeeper)
- ignore beacon block if parent payload unknown (#9178) (@nflaig)
- use expected withdrawals from state when parent is empty (#9189) (@nflaig)
- skip light client processing for gloas blocks (#9191) (@nflaig)
- only allow attestations for known payload statuses (#9177) (@nflaig)
- cli: skip backtick code spans in docs sanitizer (#9334) (@lodekeeper)
Refactoring
- revert dual-state from regen, block production, and metrics (#9218) (@ensi321)
- revert dual-state cache architecture from ePBS (#9215) (@ensi321)
- use consistent names for state after payload is applied (#9175) (@nflaig)
- align bid filtering with consensus spec (#9182) (@nflaig)
Continuous Integration
- drop redundant pnpm bootstrap on arm64 publish (#9345) (@lodekeeper)
Tests
- fix unknownBlockSync e2e assertions for gloas (#9276) (@nflaig)
- add bellatrix and capella gossip validation spec tests (#9192) (@nflaig)
Maintenance
- index proposer preferences by slot first (#9312) (@markolazic01)
- more logs for range sync (#9302) (@twoeths)
- remove isParentBlockFull (#9280) (@nflaig)
- remove epoch_boundary sanity handler (#9270) (@nflaig)
- fail nightly spec tests workflow if any tests failed (#9271) (@nflaig)
- add workflow to run nightly spec tests (#9268) (@nflaig)
- bump kurtosis-assertoor action to v1.0.1 to fix nightly sim (#9266) (@lodekeeper)
- merge v1.42.0 back to unstable (#9210) (@matthewkeil)
- review import execution payload (#9174) (@nflaig)
- deps: bump fastify from 5.8.3 to 5.8.5 (#9250) (@dependabot[bot])
- deps: bump docker/login-action from 4.0.0 to 4.1.0 in the actions group (#9195) (@dependabot[bot])
Documentation
- clarify --serveHistoricalState and --chain.pruneHistory help text (#9328) (@lodekeeper)
- update RELEASE.md (#9172) (@matthewkeil)
- add spec comment for envelope signature validation (#9184) (@nflaig)
Release v1.43.0-rc.1
Changelog
Features
- better self-rate-limit handling (#9335) (@wemeetagain)
- implement EIP-8061 increase exit and consolidation churn (#9305) (@ensi321)
- add dependent root to proposer preferences (#9303) (@nflaig)
- bump spec test version to v1.7.0-alpha.6 (#9304) (@ensi321)
- wire in PTC duties (#9287) (@wemeetagain)
- include payload attestations when producing block (#9283) (@wemeetagain)
- wire up proposer_preferences gossip topic (#9275) (@nflaig)
- add unknown payload envelope sync flow (#9241) (@wemeetagain)
- range sync for gloas (#9269) (@twoeths)
- update sync notifier for gloas (#9272) (@nflaig)
- support nightly spec tests (#9221) (@brech1)
- wire parent execution requests in block production (#9265) (@nflaig)
- cache the last 2 PayloadEnvelopeInputs (#9260) (@twoeths)
- defer payload processing to next block (#9257) (@ensi321)
- implement EIP-7843 and alpha.5 containers (#9254) (@ensi321)
- merge BAL into ePBS (#9226) (@ensi321)
- add cached PTC window to the state (#9211) (@nflaig)
- trigger processExecutionPayload() once (#9223) (@twoeths)
- unskip gloas fork choice spec tests (#9222) (@ensi321)
- ignore index-1 attestation when payload is missing (#9213) (@ensi321)
- add endpoint to craft attester slashings from blocks (#9198) (@markolazic01)
- add endpoint to retrieve signed execution payload envelope (#9186) (@nflaig)
- add execution payload bid event (#9185) (@nflaig)
- fork-aware IBeaconStateView type narrowing (#9105) (@lodekeeper)
- reqresp: track peer rate-limit backoff in SelfRateLimiter (#9034) (@wemeetagain)
Bug Fixes
- checkpoint sync for skipped slot (#9329) (@twoeths)
- prevent seed state cache poisoning in loadState clone (#9246) (@lodekeeper)
- include latest payload bid in gloas genesis block (#9336) (@nflaig)
- only trigger gloas blobs tracker in gossip (#9322) (@wemeetagain)
- prune PayloadEnvelopeInput on the same branch (#9317) (@twoeths)
- range sync mismarks partial batches as fully downloaded (#9311) (@twoeths)
- gloas checkpoint sync (#9293) (@twoeths)
- remove gloas genesis workarounds (#9308) (@nflaig)
- allow known PayloadEnvelopeInput (#9307) (@twoeths)
- queue payload envelopes in network processor (#9300) (@wemeetagain)
- drop voluntary exits invalidated by parent execution requests (#9292) (@nflaig)
- correct DA status for payload (#9278) (@twoeths)
- call fcu in importExecutionPayload (#9285) (@wemeetagain)
- avoid metrics crash on payload envelope publish (#9279) (@lodekeeper)
- clone block header during payload envelope verification (#9277) (@nflaig)
- properly handle starting from gloas at genesis (#9273) (@nflaig)
- emit
payload_attributesfor local proposals by default (#9258) (@eth2353) - revert anchor block PTC vote override (#9264) (@lodekeeper)
- add check on bid gossip for blob kzg commitment len (#9261) (@nflaig)
- drop payloadStatus from Checkpoint (#9259) (@twoeths)
- gate loadOtherState validators/balances preload behind opt-in (#9245) (@twoeths)
- use fork choice for parent payload status in block production (#9209) (@nflaig)
- correct proposer boost logic and getParentNodeIndex for gloas (#9165) (@twoeths)
- reject same-slot full attestation votes for gloas (#9205) (@nflaig)
- check if pending deposit exists before applying to builder (#9180) (@nflaig)
- validate MIN_EPOCHS for blob/data column by range/root requests (#9173) (@nflaig)
- initialize anchor block PTC votes to all-true (#9188) (@lodekeeper)
- ignore beacon block if parent payload unknown (#9178) (@nflaig)
- use expected withdrawals from state when parent is empty (#9189) (@nflaig)
- skip light client processing for gloas blocks (#9191) (@nflaig)
- only allow attestations for known payload statuses (#9177) (@nflaig)
- cli: skip backtick code spans in docs sanitizer (#9334) (@lodekeeper)
Refactoring
- revert dual-state from regen, block production, and metrics (#9218) (@ensi321)
- revert dual-state cache architecture from ePBS (#9215) (@ensi321)
- use consistent names for state after payload is applied (#9175) (@nflaig)
- align bid filtering with consensus spec (#9182) (@nflaig)
Continuous Integration
- drop redundant pnpm bootstrap on arm64 publish (#9345) (@lodekeeper)
Tests
- fix unknownBlockSync e2e assertions for gloas (#9276) (@nflaig)
- add bellatrix and capella gossip validation spec tests (#9192) (@nflaig)
Maintenance
- index proposer preferences by slot first (#9312) (@markolazic01)
- more logs for range sync (#9302) (@twoeths)
- remove isParentBlockFull (#9280) (@nflaig)
- remove epoch_boundary sanity handler (#9270) (@nflaig)
- fail nightly spec tests workflow if any tests failed (#9271) (@nflaig)
- add workflow to run nightly spec tests (#9268) (@nflaig)
- bump kurtosis-assertoor action to v1.0.1 to fix nightly sim (#9266) (@lodekeeper)
- merge v1.42.0 back to unstable (#9210) (@matthewkeil)
- review import execution payload (#9174) (@nflaig)
- deps: bump fastify from 5.8.3 to 5.8.5 (#9250) (@dependabot[bot])
- deps: bump docker/login-action from 4.0.0 to 4.1.0 in the actions group (#9195) (@dependabot[bot])
Documentation
- clarify --serveHistoricalState and --chain.pruneHistory help text (#9328) (@lodekeeper)
- update RELEASE.md (#9172) (@matthewkeil)
- add spec comment for envelope signature validation (#9184) (@nflaig)
Release v1.42.0
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.
Features
- enhance NetworkProcessor for gloas (#9025) (@twoeths)
- update data column sidecars for gloas (#8938) (@nflaig)
- allow voluntary exit command to write to file rather than publish (#9087) (@markolazic01)
- enable quic transport by default (#9133) (@lodekeeper)
- add execution payload events (#9120) (@nflaig)
- switch from buildjet to warpbuild (#9125) (@matthewkeil)
- introduce nativeStateView feature flag (#9067) (@twoeths)
- add payload envelope reqresp (#9050) (@ensi321)
- add --http.requestTimeout flag to configure vc http request timeout (#9086) (@markolazic01)
- schedule Fulu fork for Gnosis mainnet (#9074) (@dapplion)
- add gloas execution payload envelope import pipeline (#8962) (@ensi321)
- update voluntary exit for gloas (#9039) (@nflaig)
- state cache for ePBS (#8868) (@ensi321)
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
- remove non-null assertions in gloas protoArray test (#9152) (@lodekeeper)
- remove last benchmark cache-clear hack and skip aggregatedAttestationPool by default (#9147) (@lodekeeper)
- scope clearPerfStateCache to loadState only to fix benchmark flakiness (#9143) (@lodekeeper)
- fix benchmark OOM with deterministic fixture teardown (#9140) (@lodekeeper)
- revert clone(true) to fix benchmark memory regression (#9138) (@lodekeeper)
- use singletons for default-vc perf state caching (#9137) (@lodekeeper)
- fix benchmark perf state poisoning (#9136) (@lodekeeper)
- fix benchmark CI stability (#9132) (@lodekeeper)
- fix benchmark failures surfaced by benchmark 2.0.2 (#9131) (@lodekeeper)
- fix updateHead benchmark broken by missing Gloas fields on genesis (#9122) (@GrapeBaBa)
- wire sync committee gossip validation spec tests (#9106) (@nflaig)
Maintenance
- v1.42.0 release (#9169) (@matthewkeil)
- correct testCachePath after move from test/ to src/testUtils/ (#9145) (@lodekeeper)
- merge v1.41.1 back to unstable (#9146) (@matthewkeil)
- bump @chainsafe/benchmark to 2.0.2 (#9128) (@lodekeeper)
- switch arm from buildjet to warpbuild (#9129) (@matthewkeil)
- consume BeaconStateView (#8857) (@twoeths)
- clean up UnknownBlockSync (#9069) (@twoeths)
- enable forceJsExtensions in biome lint config (#9079) (@lodekeeper)
- use permalinks for spec references (#9065) (@markolazic01)
- merge stable 1.41.0 back to unstable (#9066) (@matthewkeil)
- deps: bump the actions group with 2 updates (#9130) (@dependabot[bot])
- deps: bump fastify from 5.8.1 to 5.8.3 (#9114) (@dependabot[bot])
- deps: bump the actions group with 3 updates (#9093) (@dependabot[bot])
Documentation
- remove backticks from port defaultDescription to fix docs rendering (#9139) (@lodekeeper)
- add Google Search Console verification file (#9097) (@lodekeeper)
- add high-res favicon, apple-touch-icon, and og:image metadata (#9095) (@lodekeeper)
- improve AGENTS.md with code quality rules and structural cleanup (#9077) (@lodekeeper)
- update docs favicon to current Lodestar logo (#9058) (@lodekeeper)