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) (@Ensi 321)
- 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) (@matthew Keil)
- 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)