Repository navigation
·
15 commits
to unstable
since this release
Immutable
release. Only release title and notes can be modified.
Good day Lodestar operators! We've just released v1.50.0. It is mandatory for Hoodi operators and recommended for mainnet users. Hoodi operators must also upgrade their execution client to a Glamsterdam-ready release before the fork. Building is done differently with Gloas so please read the docs linked below so you can configure your setup correctly
- Hoodi Glamsterdam fork scheduled. Adds the fork epoch and the 200M gas limit schedule
- Validator clients from Gloas. Fee recipient and gas limit come from signed proposer preferences. From the Gloas fork onwards, the beacon node rejects
prepare_beacon_proposerandregister_validatorwith410error response. Upgrade the Lodestar beacon node and validator client together. If you run another validator client against a Lodestar beacon node, make sure it supports proposer preferences - Builders from Gloas. Builder bids arrive in-protocol over p2p. External builders are configured on the validator client (
--builder.urls, or per key in the proposer config) instead of through relays on the beacon node. Pre-Gloas builder settings keep working until the fork. Setup guides: - SSZ engine API. When the execution client advertises the REST/SSZ engine API, Lodestar uses it automatically, otherwise it keeps using JSON-RPC. Override with
--execution.engineApi - Metrics note. The
notifyNewPayloadengine timing metric now reflects execution client time more accurately. Previously it included part of Lodestar's own block processing, so values will read lower after upgrading. This is a measurement change, not a change in block import time.
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
- v1.50.0 release (#10342) (@matthewkeil)
- 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)