Changelog
Features
- reject proposer data and validator registrations from gloas (#10341) (@nflaig)
- track validators that submit proposer preferences as attached (#10340) (@nflaig)
- stop depending on prepare_beacon_proposer for custody and gloas payloads (#10336) (@nflaig)
- stop calling
prepareBeaconProposerfrom gloas (#10337) (@nflaig) - support engine api over REST with SSZ encoding (#10204) (@nflaig)
- persist proposer preferences across beacon node restarts (#10327) (@nflaig)
- honor executiononly builder selection post-gloas (#10309) (@lodekeeper)
- disallow new validators with BLS withdrawal credentials in heze (#10316) (@nflaig)
- retrieve proposer preferences on connection opening (#10290) (@markolazic01)
- schedule Gloas fork and 200M gas limit on Hoodi (#10313) (@ensi321)
- persist earliest available slot (#10267) (@twoeths)
- add ptc state endpoint (#10190) (@nflaig)
- add fork choice v2 debug fields (#10297) (@nflaig)
- optionally persist produced execution payload envelopes (#10287) (@wemeetagain)
- add endpoint to get proposer preferences (#10255) (@nflaig)
- emit PTC quorum changes from fork choice (#10274) (@wemeetagain)
payload_attributesevent gloas (#10243) (@markolazic01)- persist pubkey cache across restarts (#10152) (@wemeetagain)
- add
block_hashandbuilder_indexto block event (#9854) (@markolazic01) - add builder pending payments and withdrawals endpoints (#10189) (@nflaig)
- bindings: zig state transition (#9632) (@spiral-ladder)
- builder: coordinate bounded payload build jobs (#9973) (@krisoshea-eth)
- builder: publish stateless payload envelopes (#9982) (@krisoshea-eth)
- builder: assemble stateless payload envelopes (#9981) (@krisoshea-eth)
- builder: match selected local bids (#9980) (@krisoshea-eth)
- builder: publish execution payload bids (#9979) (@krisoshea-eth)
- builder: assemble execution payload bids (#9978) (@krisoshea-eth)
Bug Fixes
- keep proposer boost root for the payload tiebreak when boost is withheld (#10339) (@nflaig)
- handle partial failures when submitting proposal preferences (#10325) (@nflaig)
- cancel req/resp bridge iterators when the consumer returns early (#10304) (@nflaig)
- resubmit proposal preferences after the beacon node resynced (#10326) (@nflaig)
- send a zero commit in engine_getClientVersionV1 when git data is missing (#10324) (@nflaig)
- align beacon api with v5.0.0-beta.0 (#10302) (@nflaig)
- retry proposer preferences submission on error response (#10317) (@nflaig)
- prune shuffling cache by smallest epoch (#10294) (@twoeths)
- recreate the dangling parent payload entry in range sync (#10311) (@nflaig)
- reject range sync envelopes whose block hash does not match the bid (#10251) (@nflaig)
- prevent unknown block sync stall when rate limit backoff expires (#10250) (@nflaig)
- inherit gloas block execution status from the parent variant it builds on (#10268) (@nflaig)
- cache gossip blocks only after proposer signature verification (#10279) (@twoeths)
- handle missing shuffling in block production (#10295) (@twoeths)
- honor group validator statuses when filtering by ids (#10261) (@b0a7)
- align fork choice v2 with beacon api spec (#10191) (@nflaig)
- serve archived genesis state by root (#10277) (@lodekeeper)
- retry rate-limited peers after a sync chain restart (#10252) (@nflaig)
- report builder circuit breaker as block selection reason (#10254) (@nflaig)
- prevent range sync stall when rate limit backoff expires (#10249) (@nflaig)
- discount empty slot support by fork choice node (#10211) (@nazarhussain)
- serve finalized state by root from checkpoint cache (#10273) (@lodekeeper)
- settle builder payment before processing parent execution requests (#10180) (@nflaig)
- optimize builder flows (#10263) (@twoeths)
- request the whole range sync batch again after a processing error (#10266) (@nflaig)
- apply epoch updates before computing attestation rewards (#10224) (@ensi321)
- surface archived envelopes the EL cannot serve (#10248) (@markolazic01)
- replace latest messages by slot from gloas (#10128) (@nflaig)
- ignore messages from FATAL peer (#10239) (@twoeths)
- evict invalid payload envelopes from the seen cache (#10246) (@nflaig)
- do not miss PTC duties in the first Gloas epoch (#10242) (@nflaig)
- reject null slot gossip messages (#10241) (@twoeths)
- fall back to db and check fork for unfinalized checkpoint states (#10230) (@nflaig)
- reject checkpoint sync state with mismatching fork (#10228) (@nflaig)
- track slashing signature domains across forks (#10217) (@nflaig)
- removeAndDownScoreAllDescendants of unknown sync (#10221) (@twoeths)
- init BeaconStateView from state bytes (#10227) (@twoeths)
- prune legacy hot data columns on startup (#10223) (@wemeetagain)
- deduplicate and stream execution payload envelopes by root (#10207) (@nflaig)
- revert fast confirmation to finalized on error (#10220) (@nazarhussain)
- merge attester duties for newly discovered validators (#10213) (@lodekeeper)
- merge PTC duties for newly discovered validators (#10197) (@GrapeBaBa)
- use fork inactivity quotient in rewards (#10183) (@GrapeBaBa)
- use preallocated buffers in
getBlobsV2(#10203) (@nflaig) - floor attestation reward and penalty values (#10182) (@GrapeBaBa)
- initialize earliestAvailableSlot from retained history on startup (#10185) (@lodekeeper)
Performance
- hoist weak-subjectivity staleness check before anchor state load (#10229) (@lodekeeper)
- avoid rescanning pruned state history (#10216) (@nflaig)
Refactoring
- clean up attached validators tracking (#10338) (@nflaig)
- combine proposer and builder preferences services (#10319) (@nflaig)
- remove obsolete builder voluntary exit signatures (#10286) (@wemeetagain)
- avoid ancestor walk when pruning payload envelope inputs (#9326) (@jeffoodchain)
- drop underscore prefix from private fields (#10208) (@spiral-ladder)
- builder: share one beacon event subscription (#10064) (@krisoshea-eth)
- cli: init BeaconState (#10200) (@twoeths)
Dependencies
- bump @chainsafe/libp2p-quic to 2.1.5 (#10276) (@lodekeeper)
Continuous Integration
- add nightly engine API interop run against latest execution client images (#10333) (@nflaig)
- cache ssz and bls spec test vectors in both spec test jobs (#10283) (@spiral-ladder)
- limit Docker SBOMs to Lodestar image (#10179) (@lodekeeper)
Tests
- upgrade geth and nethermind in sim tests (#10308) (@nazarhussain)
- forward progressive list limits in spec type replacement (#10081) (@nflaig)
- follow current head slot in sync waits (#10237) (@krisoshea-eth)
- enable is_one_confirmed deposit vectors (#9917) (@nazarhussain)
- require exact Gloas viable heads in spec runner (#10156) (@nflaig)
- add
initBeaconStateunit tests (#10233) (@nflaig) - isolate remaining beacon db test fixtures (#10219) (@lodekeeper)
- track spec-store block roots in fork-choice runner (#10198) (@ensi321)
Maintenance
- track circuit breaker metrics on Grafana (#10318) (@twoeths)
- update consensus specs to v1.7.0-beta.4 (#10314) (@ensi321)
- bump ssz to 1.8.1 (#10301) (@twoeths)
- log native state transition option on startup (#10281) (@nflaig)
- update consensus specs to v1.7.0-beta.3 (#10280) (@nflaig)
- tag next docker images with commit sha (#10275) (@lodekeeper)
- remove unused getPayloadBodies V1 engine methods (#10258) (@nflaig)
- update stale pruning note in payload envelope seen cache doc (#10253) (@nflaig)
- remove dead
forceGenesisflag (#10231) (@nflaig) - remove experimental label from fast confirmation (#10222) (@nazarhussain)
- track EL engine request/response bytes on Grafana (#10209) (@twoeths)
- payload envelope reconstruction follow-ups from #10089 (#10192) (@markolazic01)
- merge v1.49.0 back to unstable (#10202) (@matthewkeil)
- track engine api request/reponse bytes (#10195) (@twoeths)
- track incoming request served bytes on Grafana (#10196) (@twoeths)
- deps: bump fastify from 5.12.1 to 5.12.5 (#10272) (@dependabot[bot])
- deps: bump anchore/sbom-action from 0.24.2 to 0.24.3 in the actions group (#10270) (@dependabot[bot])
- deps: bump the actions group with 3 updates (#10205) (@dependabot[bot])
- lint: fail on src imports of dev-only dependencies (#10090) (@spiral-ladder)
Documentation
- add note about ai contribution (#10244) (@matthewkeil)