Releases: ChainSafe/lodestar
Release v1.35.0-rc.0
Hey everyone! For testnet users of Lodestar, we have a new pre-release which includes configurations for Fusaka on Holesky, Sepolia and Hoodi public testnets. This pre-release is to allow for additional testing and pending the success of the Holesky Fusaka hard fork next week, we will observe and include any additional fixes for a full release.
For testnet node operators, here are the current configurations as of today (subject to change with core dev consensus) which are included with this pre-release:
Holesky Fusaka: Wednesday, 1 October 2025 @ 08:48:00 UTC (epoch 165120)
Holesky BPO 1: Tuesday, 7 October 2025 @ 01:20:00 UTC (epoch 166400)
Holesky BPO 2: Monday, 13 October 2025 @ 21:10:24 UTC (epoch 167936)
Sepolia Fusaka: Tuesday, 14 October 2025 @ 07:36:00 UTC (epoch 272640)
Sepolia BPO 1: Tuesday, 21 October 2025 @ 03:26:24 UTC (epoch 274176)
Sepolia BPO 2: Monday, 27 October 2025 @ 23:16:48 UTC (epoch 275712)
Hoodi Fusaka: Tuesday, 28 October 2025 @ 18:53:12 UTC (epoch 50688)
Hoodi BPO 1: Wednesday, 5 November 2025 @ 18:02:00 UTC (epoch 52480)
Hoodi BPO 2: Wednesday, 12 November 2025 @ 13:52:24 (epoch 54016)
Don't forget to update your execution clients to Fusaka testnet ready releases and any sidecars for Fusaka support! Happy forking 🍴🦓 !
Changelog
Features
- track number of peers per data column subnet topic (#8442) (@twoeths)
- add presets and configs for ePBS (#8440) (@ensi321)
- schedule fulu and BPOs on sepolia and hoodi (#8437) (@philknows)
- add pattern for runtime specific package dependencies (#8320) (@nazarhussain)
- schedule fulu and BPOs on holesky (#8435) (@nflaig)
- publish blobs we retrieve from execution engine to gossip (#8324) (@nflaig)
- use dual-stack by default (#8407) (@nflaig)
- refactor block input (#8200) (@matthewkeil)
Bug Fixes
- untrusted slot in network processor (#8466) (@twoeths)
- sort cell indices before calling
recoverCellsAndKzgProofs(#8450) (@ensi321) - emit blob/data column sidecar events when we receive them by root (#8445) (@nflaig)
- use correct container and bump seq_number when updating syncnets (#8451) (@nflaig)
- emit data column sidecar event when receive them from execution (#8446) (@nflaig)
- pass current time in seconds to
seenTimestampSecof block input (#8444) (@nflaig) - add log and metrics to ColumnReconstructionTracker (#8433) (@twoeths)
- correctly count requested data column sidecars in rate limiter (#8436) (@nflaig)
- wait for block and all data (#8430) (@twoeths)
- emit unknownParent event (#8429) (@twoeths)
- use proper check in computeColumnsForCustodyGroup (#8414) (@wemeetagain)
- stop verifying
SECONDS_PER_ETH1_BLOCKon validator startup (#8397) (@nflaig) - restore data column sidecars prune log (#8388) (@nflaig)
- don't log proposer boost reorg logs during sync (#8363) (@nflaig)
- bump discv5 to 11.0.4 (#8365) (@philknows)
- properly handle fetching data columns from api if block has no blobs (#8336) (@nflaig)
- update logs if block not found while handling unavailable data columns (#8337) (@nflaig)
- min key for the archive data columns (#8345) (@nazarhussain)
- deduplicate slots to delete archived DatacolumnSidecars (#8357) (@twoeths)
- add bucketId to all db operations (#8347) (@nflaig)
- correct leveldb metrics (#8355) (@nflaig)
- add bucketId to abstract_prefixed_repo (#8346) (@twoeths)
Refactoring
Dependencies
- upgrade typescript to 5.9 (#8412) (@nazarhussain)
- update the
ellipticto fix a vulnerability (#8374) (@nazarhussain)
Tests
- finalized sync e2e post electra only (#8340) (@nazarhussain)
Maintenance
- add src to the package to have working source map (#8460) (@nazarhussain)
- move PR comments from #7947 that got closed (#8456) (@matthewkeil)
- use typescript gc-stats import (#8455) (@wemeetagain)
- remove eip7594 from skipped spec tests and rename mekle.test.ts -> merkleProof.test.ts (#8452) (@matthewkeil)
- various bun tweaks (#8449) (@wemeetagain)
- add bun exports to packages (#8448) (@wemeetagain)
- sync PeerDAS dashboard (#8443) (@twoeths)
- enable organize imports for linting (#8410) (@nazarhussain)
- update few type safety rules for linting (#8391) (@nazarhussain)
- add logs and metrics to GetBlobsTracker (#8432) (@twoeths)
- track BlockInputSync metrics (#8431) (@twoeths)
- remove parent beacon block root from execution payload rpc type (#8428) (@nflaig)
- bump @chainsafe/libp2p-gossipsub to v14.1.2 (#8425) (@wemeetagain)
- update gloas boilerplate code (#8427) (@nflaig)
- use latest TS module resolution (#8419) (@nazarhussain)
- remove
getMaxRequestBlobSidecarshelper from config object (#8418) (@nflaig) - move single attestation errors to
verboselog level (#8393) (@nflaig) - merge v1.34.1 stable back to unstable (#8367) (@philknows)
- merge v1.34.0 back to unstable (#8364) (@philknows)
- revise epoch transition metric bucket (#8361) (@twoeths)
Documentation
- clarify ipv6 details in networking page (#8368) (@philknows)
Release v1.34.1
Update for IPv6 users! We've released a v1.34.1 patch to address an issue which didn't allow for dual stack IPv4 and IPv6 using the same port. If you're one of those users, this patch release will fix the issue. Please note that Lodestar's default ports for IPv4 and IPv6 are both port 9000 by default. Previously, IPv6 used port 9090 by default. This will be updated in our documentation.
Changelog
Bug Fixes
- bump discv5 to 11.0.4 (#8365) (@philknows)
Maintenance
- release 1.34.1 patch (#8366) (@philknows)
Release v1.34.1-rc.0
Release v1.34.0
Good day everyone, we've released our latest stable v1.34.0 which includes some notable changes and optimizations that we found from Fusaka devnets which benefit mainnet today. Note that this release is NOT Fusaka ready, but is recommended for installation due to improved peering, syncing and block production. Do not be afraid of the changelog, it includes many changes that concern the Fusaka hard fork. Our summary here will include changes that are important to note for current Pectra mainnet:
-
Default peering is now increased from 100 to 200 peers. In preparation for Fusaka, having a larger group of diverse, connected peers is important and you can benefit today with minimal hardware tradeoffs. If you would like to change the peering limits, you can always do so using the
--targetPeersflag and set a new number. -
We now persist your ENR/Network identity by default. This is important for Fusaka in order to have reliable peering for data custodianship in PeerDAS. Your network identity will no longer change upon restart, but can be set via the
--persistNetworkIdentityflag to false. -
Syncing has been improved with optimizations such as #8166 which avoids being rate limited while syncing.
-
A fix has been included for
getHeadertimeouts in rare cases where the common block body production would delay the call in the slot. A special thanks to celticwarrior from EthStaker and to the solo staker community for helping us find and squash bugs!
The full changelog can be found below, but note that most changes here pertain to merging Fusaka features into our trunk branch.
Changelog
Features
- track libp2p streams (#8304) (@twoeths)
- update blobs endpoint to use versioned_hashes instead of indices as filter (#8264) (@nflaig)
- serve data columns by root for finalized epochs (#8250) (@nflaig)
- add type support for Bun (#8288) (@nazarhussain)
- add panels to track consensus block value (#8286) (@nflaig)
- score attestations for block by profitability (#8016) (@nflaig)
- fromHexInto() api (#8275) (@twoeths)
- track kzg proofs verification time (#8267) (@twoeths)
- increase target peers by default to 200 (#8272) (@philknows)
- unknown block sync e2e post electra only (#8245) (@twoeths)
- print out blob parameters if BPO fork is activated (#8253) (@nflaig)
- add Fulu zebra banner (#8235) (@ClockworkYuzu)
- improve the db storage for data column sidecar (#8206) (@nazarhussain)
- implement PeerBalancer for UnknownBlockSync (#8219) (@twoeths)
- add warning log if slots are skipped by validator client (#8224) (@nflaig)
- add gloas fork definition (#8222) (@ensi321)
- stricter builder circuit breaker (#8205) (@nflaig)
- log when publishing to 0 data column peers (#8195) (@wemeetagain)
- self rate limiter (#8185) (@twoeths)
- clean up fulu peer connected event (#8157) (@matthewkeil)
- avoid rate limit syncing (#8166) (@twoeths)
- bump spec test to
v1.6.0-alpha.4. Add data columns to fork-choice spec test (#8170) (@ensi321) - reduce peer score if they send mismatch DataColumnSidecars (#8167) (@twoeths)
- run
lodestarroot binary from any directory (#8154) (@nazarhussain) - introduce finalProcessEpoch() (#8086) (@twoeths)
- add getBlobs endpoint (#8087) (@nflaig)
- add PeerDAS Grafana dashboard (#7992) (@KatyaRyazantseva)
- broken status get peers (#8063) (@matthewkeil)
- remove advertised custody (#8059) (@matthewkeil)
- ensure enough peers on all subnets (#8057) (@twoeths)
- support status v1 post-fulu (#8041) (@matthewkeil)
- improve range sync in fulu (#7746) (@twoeths)
- earliest available slot (#7959) (@matthewkeil)
- resolve availability using recover_matrix for peerDAS (#7940) (@twoeths)
- data_column_sidecar sse event support (#7953) (@nazarhussain)
- add endpoint to retrieve data column sidecars (#7952) (@nflaig)
- async kzg proof verification (#7936) (@wemeetagain)
- update dataColumnSidecarsByRoot to new spec (#7782) (@dguenther)
- add peerDAS computation metric (#7748) (@KatyaRyazantseva)
- offload cell proof computation from beacon node (#7686) (@hughy)
- support min request epoch in dataColumnSidecarsByRoot (#7743) (@dguenther)
- validate data column sidecars according to spec (#7719) (@dguenther)
- peerDAS - fetch blobs from EL in unknownBlock (#7724) (@dguenther)
- prune expired data column sidecars (#7717) (@hughy)
- peerDAS - implement distributed blob publishing (#7679) (@dguenther)
- peerDAS - initial beacon metrics (#7697) (@dguenther)
- peerDAS - implement validator custody (#7640) (@dguenther)
- add engine_getBlobsV2 execution API (#7675) (@hughy)
- shared CustodyConfig on main thread and network thread (#7632) (@twoeths)
- peerdas - ensure at least n peers per sampling group (#7274) (@twoeths)
Bug Fixes
- log missing columns (#8315) (@matthewkeil)
- use prettyPrintIndices for logging (#8298) (@maishivamhoo123)
- add slot and epoch validation to epoch committees endpoint (#7941) (@bomanaps)
- do not throw error when archive 0-blob block (#8319) (@twoeths)
- do not attempt to reconstruct builder blocks (#8317) (@nflaig)
- invalid bucket id for finalized dataColumnSidecar (#8312) (@nazarhussain)
- deserialization of db repository keys (#8310) (@nazarhussain)
- the data column sidecars behavior for unavailable sidecars (#8251) (@nazarhussain)
- add disconnectThreshold for e2e tests (#8301) (@twoeths)
- defer common block body production until next event loop (#8285) (@nflaig)
- self rate limiter to handle dead requests (#8295) (@twoeths)
- track execution engine getBlobs requests (#8274) (@twoeths)
- do not create data column sidecars if block has no blobs (#8277) (@nflaig)
- move
MAX_REQUEST_BLOCKSconstants to config (#8262) (@nflaig) - select correct ssz type when persisting invalid attestations (#8257) (@nflaig)
- choose more profitable block only based on execution payload value (#8246) (@nflaig)
- apply correct count limit in blob sidecars by range (#8248) (@nflaig)
- use CheckpointBalancesCache to help update cgc (#8243) (@wemeetagain)
- use async variant of verifyCellKzgProofBatch (#8234) (@nflaig)
- return subcommittee assignments from state sync committees endpoint (#8231) (@nflaig)
- handle NullBlockInput full data columns in UnknownBlockPeerBalancer (#8229) (@twoeths)
- use correct self fate limited request error code (#8228) (@wemeetagain)
- move fulu constants to preset/config to be spec compliant (#8217) (@nflaig)
- typo in serializeBlobsBundle() (#8218) (@twoeths)
- correctly parse validator indices when querying state balances (#7951) (@bomanaps)
- correct pending block status in unknownBlockParent event handler (#8211) (@twoeths)
- head sync failed due to retrying with a more up-to-date peer (#8203) (@twoeths)
- do not pick out-of-date peer to retry head sync (#8201) (@twoeths)
- unbreak sim and e2e tests (#8199) (@wemeetagain)
- make the runner script posix compliant (#8197) (@nazarhussain)
- support dual stack on same port (#8190) (@wemeetagain)
- return correct multiaddrs in getNetworkIdentity endpoint (#8189) (@wemeetagain)
- only subscribe to sampled subnets (#8181) (@twoeths)
- split getBlobs into V1 and V2 implementations (#8140) (@matthewkeil)
- misleading comment in MAX_BATCH_PROCESSING_ATTEMPTS (#8180) (@twoeths)
- handle bad response of 0 block from peer (#8150) (@twoeths)
- only start sending StatusV2 requests after fulu (#8169) (@nflaig)
- fulu logs peer manager (#8158) (@matthewkeil)
- revert blob metric changes (#8175) (@matthewkeil)
- skip custody groups computation if all groups are custodied (#8172) (@nflaig)
- peer id check in
initPrivateKeyAndEnr(#8165) (@ensi321) - use minimum custody in log (#8142) (@matthewkeil)
- remove git from Dockerfile (#8160) (@matthewkeil)
- log pre fulu archive (#8137) (@matthewkeil)
- track rate limited errors (#8116) (@twoeths)
- fulu fork guards (#8125) (@matthewkeil)
- update cgc during genesis and use finalized state (#8105) (@nflaig)
- handle case if engine or builder is pending with the other disabled (#8113) (@nflaig)
- restore chain.archiveBlobEpochs cli flag (#8129) (@wemeetagain)
- remove stray event handler on network close (#8127) (@wemeetagain)
- update PeerDAS log level (#8117) (@KatyaRyazantseva)
- update publish block/column order (#8121) (@matthewkeil)
- impl of BlockInputDataColumns type (#8122) (@matthewkeil)
- select status response container based on version (#8119) (@nflaig)
- log peer status error (#8106) (@matthewkeil)
- use state slot instead of clock slot before gathering electra metrics (#8102) (@nflaig)
- remove node custody requirement (#8099) (@nflaig)
- dont reduce cgc (#8096) (@matthewkeil)
- increase MAX_BATCH_PROCESSING_ATTEMPTS (#8037) (@twoeths)
- remove only connect flags (#8046) (@twoeths)
- only process chain segment with a success downloaded batch (#8032) (@twoeths)
- add electra to cached blob data fork check (#8004) (@nflaig)
- validate data_column_sidecar before add to cache (#7955) (@twoeths)
- add peerdas inclusion proof metric (#7898) (@KatyaRyazantseva)
- only announce columns if fulu is scheduled in config (#7964) (@nflaig)
- column announcement before fork transition (#7943) (@matthewkeil)
- update getBlobsV2 request duration metric (#7944) (@KatyaRyazantseva)
- only use proposer lookahead from state if epoch is post fulu (#7939) (@nflaig)
- columns by root request length (#7917) (@matthewkeil)
- erigon getblobsv2 bug in response (#7912) (@matthewkeil)
- correct reference to MIN_EPOCHS for data columns (#7788) (@dguenther)
- genesis sync in peerDAS (#7760) (@twoeths)
- consider NODE_CUSTODY_REQUIREMENT in validator custody computation (#7733) (@hughy)
- increment seq_number on metadata cgc changes (#7752) (@hughy)
- peerDAS - Fix name of
custody_group_countin Fulu metadata (#775...
Release v1.34.0-rc.0
Changelog
Features
- track libp2p streams (#8304) (@twoeths)
- update blobs endpoint to use versioned_hashes instead of indices as filter (#8264) (@nflaig)
- serve data columns by root for finalized epochs (#8250) (@nflaig)
- add type support for Bun (#8288) (@nazarhussain)
- add panels to track consensus block value (#8286) (@nflaig)
- score attestations for block by profitability (#8016) (@nflaig)
- fromHexInto() api (#8275) (@twoeths)
- track kzg proofs verification time (#8267) (@twoeths)
- increase target peers by default to 200 (#8272) (@philknows)
- unknown block sync e2e post electra only (#8245) (@twoeths)
- print out blob parameters if BPO fork is activated (#8253) (@nflaig)
- add Fulu zebra banner (#8235) (@ClockworkYuzu)
- improve the db storage for data column sidecar (#8206) (@nazarhussain)
- implement PeerBalancer for UnknownBlockSync (#8219) (@twoeths)
- add warning log if slots are skipped by validator client (#8224) (@nflaig)
- add gloas fork definition (#8222) (@ensi321)
- stricter builder circuit breaker (#8205) (@nflaig)
- log when publishing to 0 data column peers (#8195) (@wemeetagain)
- self rate limiter (#8185) (@twoeths)
- clean up fulu peer connected event (#8157) (@matthewkeil)
- avoid rate limit syncing (#8166) (@twoeths)
- bump spec test to
v1.6.0-alpha.4. Add data columns to fork-choice spec test (#8170) (@ensi321) - reduce peer score if they send mismatch DataColumnSidecars (#8167) (@twoeths)
- run
lodestarroot binary from any directory (#8154) (@nazarhussain) - introduce finalProcessEpoch() (#8086) (@twoeths)
- add getBlobs endpoint (#8087) (@nflaig)
- add PeerDAS Grafana dashboard (#7992) (@KatyaRyazantseva)
- broken status get peers (#8063) (@matthewkeil)
- remove advertised custody (#8059) (@matthewkeil)
- ensure enough peers on all subnets (#8057) (@twoeths)
- support status v1 post-fulu (#8041) (@matthewkeil)
- improve range sync in fulu (#7746) (@twoeths)
- earliest available slot (#7959) (@matthewkeil)
- resolve availability using recover_matrix for peerDAS (#7940) (@twoeths)
- data_column_sidecar sse event support (#7953) (@nazarhussain)
- add endpoint to retrieve data column sidecars (#7952) (@nflaig)
- async kzg proof verification (#7936) (@wemeetagain)
- update dataColumnSidecarsByRoot to new spec (#7782) (@dguenther)
- add peerDAS computation metric (#7748) (@KatyaRyazantseva)
- offload cell proof computation from beacon node (#7686) (@hughy)
- support min request epoch in dataColumnSidecarsByRoot (#7743) (@dguenther)
- validate data column sidecars according to spec (#7719) (@dguenther)
- peerDAS - fetch blobs from EL in unknownBlock (#7724) (@dguenther)
- prune expired data column sidecars (#7717) (@hughy)
- peerDAS - implement distributed blob publishing (#7679) (@dguenther)
- peerDAS - initial beacon metrics (#7697) (@dguenther)
- peerDAS - implement validator custody (#7640) (@dguenther)
- add engine_getBlobsV2 execution API (#7675) (@hughy)
- shared CustodyConfig on main thread and network thread (#7632) (@twoeths)
- peerdas - ensure at least n peers per sampling group (#7274) (@twoeths)
Bug Fixes
- log missing columns (#8315) (@matthewkeil)
- use prettyPrintIndices for logging (#8298) (@maishivamhoo123)
- add slot and epoch validation to epoch committees endpoint (#7941) (@bomanaps)
- do not throw error when archive 0-blob block (#8319) (@twoeths)
- do not attempt to reconstruct builder blocks (#8317) (@nflaig)
- invalid bucket id for finalized dataColumnSidecar (#8312) (@nazarhussain)
- deserialization of db repository keys (#8310) (@nazarhussain)
- the data column sidecars behavior for unavailable sidecars (#8251) (@nazarhussain)
- add disconnectThreshold for e2e tests (#8301) (@twoeths)
- defer common block body production until next event loop (#8285) (@nflaig)
- self rate limiter to handle dead requests (#8295) (@twoeths)
- track execution engine getBlobs requests (#8274) (@twoeths)
- do not create data column sidecars if block has no blobs (#8277) (@nflaig)
- move
MAX_REQUEST_BLOCKSconstants to config (#8262) (@nflaig) - select correct ssz type when persisting invalid attestations (#8257) (@nflaig)
- choose more profitable block only based on execution payload value (#8246) (@nflaig)
- apply correct count limit in blob sidecars by range (#8248) (@nflaig)
- use CheckpointBalancesCache to help update cgc (#8243) (@wemeetagain)
- use async variant of verifyCellKzgProofBatch (#8234) (@nflaig)
- return subcommittee assignments from state sync committees endpoint (#8231) (@nflaig)
- handle NullBlockInput full data columns in UnknownBlockPeerBalancer (#8229) (@twoeths)
- use correct self fate limited request error code (#8228) (@wemeetagain)
- move fulu constants to preset/config to be spec compliant (#8217) (@nflaig)
- typo in serializeBlobsBundle() (#8218) (@twoeths)
- correctly parse validator indices when querying state balances (#7951) (@bomanaps)
- correct pending block status in unknownBlockParent event handler (#8211) (@twoeths)
- head sync failed due to retrying with a more up-to-date peer (#8203) (@twoeths)
- do not pick out-of-date peer to retry head sync (#8201) (@twoeths)
- unbreak sim and e2e tests (#8199) (@wemeetagain)
- make the runner script posix compliant (#8197) (@nazarhussain)
- support dual stack on same port (#8190) (@wemeetagain)
- return correct multiaddrs in getNetworkIdentity endpoint (#8189) (@wemeetagain)
- only subscribe to sampled subnets (#8181) (@twoeths)
- split getBlobs into V1 and V2 implementations (#8140) (@matthewkeil)
- misleading comment in MAX_BATCH_PROCESSING_ATTEMPTS (#8180) (@twoeths)
- handle bad response of 0 block from peer (#8150) (@twoeths)
- only start sending StatusV2 requests after fulu (#8169) (@nflaig)
- fulu logs peer manager (#8158) (@matthewkeil)
- revert blob metric changes (#8175) (@matthewkeil)
- skip custody groups computation if all groups are custodied (#8172) (@nflaig)
- peer id check in
initPrivateKeyAndEnr(#8165) (@ensi321) - use minimum custody in log (#8142) (@matthewkeil)
- remove git from Dockerfile (#8160) (@matthewkeil)
- log pre fulu archive (#8137) (@matthewkeil)
- track rate limited errors (#8116) (@twoeths)
- fulu fork guards (#8125) (@matthewkeil)
- update cgc during genesis and use finalized state (#8105) (@nflaig)
- handle case if engine or builder is pending with the other disabled (#8113) (@nflaig)
- restore chain.archiveBlobEpochs cli flag (#8129) (@wemeetagain)
- remove stray event handler on network close (#8127) (@wemeetagain)
- update PeerDAS log level (#8117) (@KatyaRyazantseva)
- update publish block/column order (#8121) (@matthewkeil)
- impl of BlockInputDataColumns type (#8122) (@matthewkeil)
- select status response container based on version (#8119) (@nflaig)
- log peer status error (#8106) (@matthewkeil)
- use state slot instead of clock slot before gathering electra metrics (#8102) (@nflaig)
- remove node custody requirement (#8099) (@nflaig)
- dont reduce cgc (#8096) (@matthewkeil)
- increase MAX_BATCH_PROCESSING_ATTEMPTS (#8037) (@twoeths)
- remove only connect flags (#8046) (@twoeths)
- only process chain segment with a success downloaded batch (#8032) (@twoeths)
- add electra to cached blob data fork check (#8004) (@nflaig)
- validate data_column_sidecar before add to cache (#7955) (@twoeths)
- add peerdas inclusion proof metric (#7898) (@KatyaRyazantseva)
- only announce columns if fulu is scheduled in config (#7964) (@nflaig)
- column announcement before fork transition (#7943) (@matthewkeil)
- update getBlobsV2 request duration metric (#7944) (@KatyaRyazantseva)
- only use proposer lookahead from state if epoch is post fulu (#7939) (@nflaig)
- columns by root request length (#7917) (@matthewkeil)
- erigon getblobsv2 bug in response (#7912) (@matthewkeil)
- correct reference to MIN_EPOCHS for data columns (#7788) (@dguenther)
- genesis sync in peerDAS (#7760) (@twoeths)
- consider NODE_CUSTODY_REQUIREMENT in validator custody computation (#7733) (@hughy)
- increment seq_number on metadata cgc changes (#7752) (@hughy)
- peerDAS - Fix name of
custody_group_countin Fulu metadata (#7751) (@dguenther) - disable update to advertised CGC (#7736) (@hughy)
- update ENR with new cgc (#7737) (@dguenther)
- always add CGC to ENR (#7738) (@dguenther)
- peerDAS - fix the loop bound in fetchUnknownBlockRoot (#7466) (@twoeths)
- peer count per sampling group - peerDAS (#7721) (@twoeths)
- handle empty partial download - peerDAS (#7720) (@twoeths)
- use persistent-merkle-tree v1.1.0 for peerDAS (#7705) (@twoeths)
- peerDAS - support MetadataV3 before fulu (#7700) (@dguenther)
- peerdas-devnet-6 (#7696) (@twoeths)
- improve error message when validating blobs len (#7695) (@twoeths)
- import path of networkConfig (#7694) (@twoeths)
- peerDAS - update c-kzg to fix kzg spec test (#7642) (@dguenther)
- peerDAS - update MAX_REQUEST_DATA_COLUMN_SIDECARS (#7625) (@dguenther)
- peerDAS - fix mismatch error when downloading columns at synced time (#7467) (@twoeths)
- bug for skipping download no relevant peers (#7459) (@matthewkeil)
Refactoring
- rename related to sync committee indices (#8313) (@ensi321)
- move fork-choice metrics to fork-choice package (#8265) (@KatyaRyazantseva)
- optimize event listener count checks (#8293) (@nflaig)
- rename variables / functions related to committee vs. validator indices (#7687) (@nflaig)
- remove cpu features direct dependency (#8261) (@nazarhussain)
- block proposal cleanup (#8155) (@wemeetagain)
- clean up fulu fork guards (#8162) (@matthewkeil)
- fulu hex helpers (#8163) (@matthewkeil)
- update enr comment for cgc (#8141) (@matthewkeil)
- clean up ReqRespBeaconNode fulu changes (#8144) (@matthewkeil)
- remove stale peerdas lines and simple renamings (#8128) (@matthewkeil)
- earliestSlotAvailable -> earliestAvailableSlot (#8120) (@matthewkeil)
Tests
Release v1.33.0
Good day everyone! We've released v1.33.0 of Lodestar for all to benefit.
This update is recommended for users with an upgrade to libp2p, enabling proposer boost reorg by default and minor maintenance to the client. If you previously had issues with CPU compatibility (generally older CPUs) with v1.32.0, this upgrade will likely fix it.
Changelog
Features
- add cool down period for reconnection of peers (#8067) (@matthewkeil)
- enable proposer boost reorg by default (#8080) (@nflaig)
- add
submitBlindedBlockV2builder api (#8055) (@ensi321) - add genesis state root integrity validation (#7841) (@vedant-asati)
- add next fork digest (nfd) entry to ENR (#8023) (@nflaig)
Bug Fixes
- don't send validator registrations pre-genesis (#8088) (@nflaig)
- query shuffling from cache to compute proposer lookahead (#7988) (@nflaig)
- detect weak head when predicting proposer head (#8079) (@nflaig)
- only check genesis state root if network is specified (#8074) (@nflaig)
- fix proposer boost reorg by suppressing fcu call during import (#7810) (@ensi321)
- await builder header response before capturing timing metric (#8058) (@nflaig)
Tests
- setup unit tests for bun runtime (#7971) (@nazarhussain)
Maintenance
- v1.33.0 release (#8100) (@philknows)
- update @chainsafe/bls dependency (#8083) (@wemeetagain)
- update peerDAS kzg library to v0.8 (#8075) (@kevaundray)
- bump libp2p (#8049) (@wemeetagain)
- merge v1.32.0 stable back to unstable (#8061) (@philknows)
Release v1.33.0-rc.0
Changelog
Features
- add cool down period for reconnection of peers (#8067) (@matthewkeil)
- enable proposer boost reorg by default (#8080) (@nflaig)
- add
submitBlindedBlockV2builder api (#8055) (@ensi321) - add genesis state root integrity validation (#7841) (@vedant-asati)
- add next fork digest (nfd) entry to ENR (#8023) (@nflaig)
Bug Fixes
- don't send validator registrations pre-genesis (#8088) (@nflaig)
- query shuffling from cache to compute proposer lookahead (#7988) (@nflaig)
- detect weak head when predicting proposer head (#8079) (@nflaig)
- only check genesis state root if network is specified (#8074) (@nflaig)
- fix proposer boost reorg by suppressing fcu call during import (#7810) (@ensi321)
- await builder header response before capturing timing metric (#8058) (@nflaig)
Tests
- setup unit tests for bun runtime (#7971) (@nazarhussain)
Maintenance
- update @chainsafe/bls dependency (#8083) (@wemeetagain)
- update peerDAS kzg library to v0.8 (#8075) (@kevaundray)
- bump libp2p (#8049) (@wemeetagain)
- merge v1.32.0 stable back to unstable (#8061) (@philknows)
Release v1.32.0
Hey everyone! We're happy to release v1.32.0 to Lodestar users!
Firstly, we're happy to announce that all of our packages at Lodestar are now officially under Apache-2.0 licensing and the changes in our repository now reflect this.
Secondly, the release bumps our default gas limit signal to 45M as it was determined to be safe through testing during the protocol interop. You will not need to make any custom/flag changes to enable this.
If you've had any issues with block production, especially local block production, this upgrade is highly recommended as this release parallelizes some block building steps and optimizes our builder/engine race. It also includes additional optimizations to our proof verification.
Changelog
Features
- modify fork digest to distinguish BPO forks (#8022) (@nflaig)
- increase default gas limit to 45M (#8024) (@nflaig)
- track on chain proposer rewards per block (#8018) (@twoeths)
- persist orphaned blocks to disk (#7946) (@mkermani144)
- switch to rust kzg for async proof verification (#7989) (@nflaig)
- add validator activity metrics (#7634) (@KatyaRyazantseva)
- replace fork with boundary in gossip topic (#7975) (@ensi321)
- replace fork with boundary in reqresp's outgoing chunk (#7978) (@ensi321)
- minimal changes to parallelize block building steps (#7814) (@nflaig)
- define
SubscribeBoundary(#7968) (@ensi321) - assert fork digest to match our current fork (#7950) (@ensi321)
- add endpoint to retrieve proposer lookahead from state (#7949) (@nflaig)
- validate blob schedule on startup (#7942) (@ensi321)
- add EIP-7917 deterministic proposer lookahead (#7902) (@ensi321)
- add metric to track consensus block value (#7921) (@nflaig)
Bug Fixes
- emit
blob_sidecarevent as soon as we receive BlobSidecars (#7967) (@nflaig) - ignore
statusesfilter in validators api ifnullis passed (#7976) (@nflaig) - enable attestation grouping for DVs (#7958) (@KaloyanTanev)
- parent slot of produced block (#7927) (@twoeths)
Refactoring
Tests
Maintenance
- v1.32.0 release (#8060) (@philknows)
- make buckets required when defining histograms (#7979) (@nflaig)
- update query for
attestations_per_committeemetric (#7923) (@nflaig) - proposer lookahead follow-up changes (#7948) (@nflaig)
- add panels to validator client dashboard to track aggregate participants (#7929) (@nflaig)
- add panels for IDONTWANT metrics to gossipsub dashboard (#7924) (@nflaig)
- do not create map entry if prev block root does not exist (#7928) (@nflaig)
- add panels for SyncContributionAndProofPool metrics (#7922) (@nflaig)
- add quic panels to libp2p dashboard (#7913) (@nflaig)
- add
Uint8Arraytype check tobytesToBigInt(#7920) (@nflaig) - change remaining package licenses from LGPL-v3 to Apache-2.0 (#7915) (@philknows)
- prepare for spec test v1.6.0-alpha.1 (#7919) (@ensi321)
- add panel to track aggregate cache misses (#7914) (@nflaig)
- remove stale comment about default max blobs limit (#7907) (@nflaig)
- track Packed Attestation metrics on Block Production dashboard (#7911) (@twoeths)
- merge v1.31.0 stable back to unstable (#7908) (@philknows)
Documentation
- add bindings error to common issues (#8038) (@spiral-ladder)
Release v1.32.0-rc.0
Changelog
Features
- modify fork digest to distinguish BPO forks (#8022) (@nflaig)
- increase default gas limit to 45M (#8024) (@nflaig)
- track on chain proposer rewards per block (#8018) (@twoeths)
- persist orphaned blocks to disk (#7946) (@mkermani144)
- switch to rust kzg for async proof verification (#7989) (@nflaig)
- add validator activity metrics (#7634) (@KatyaRyazantseva)
- replace fork with boundary in gossip topic (#7975) (@ensi321)
- replace fork with boundary in reqresp's outgoing chunk (#7978) (@ensi321)
- minimal changes to parallelize block building steps (#7814) (@nflaig)
- define
SubscribeBoundary(#7968) (@ensi321) - assert fork digest to match our current fork (#7950) (@ensi321)
- add endpoint to retrieve proposer lookahead from state (#7949) (@nflaig)
- validate blob schedule on startup (#7942) (@ensi321)
- add EIP-7917 deterministic proposer lookahead (#7902) (@ensi321)
- add metric to track consensus block value (#7921) (@nflaig)
Bug Fixes
- emit
blob_sidecarevent as soon as we receive BlobSidecars (#7967) (@nflaig) - ignore
statusesfilter in validators api ifnullis passed (#7976) (@nflaig) - enable attestation grouping for DVs (#7958) (@KaloyanTanev)
- parent slot of produced block (#7927) (@twoeths)
Refactoring
Tests
Maintenance
- make buckets required when defining histograms (#7979) (@nflaig)
- update query for
attestations_per_committeemetric (#7923) (@nflaig) - proposer lookahead follow-up changes (#7948) (@nflaig)
- add panels to validator client dashboard to track aggregate participants (#7929) (@nflaig)
- add panels for IDONTWANT metrics to gossipsub dashboard (#7924) (@nflaig)
- do not create map entry if prev block root does not exist (#7928) (@nflaig)
- add panels for SyncContributionAndProofPool metrics (#7922) (@nflaig)
- add quic panels to libp2p dashboard (#7913) (@nflaig)
- add
Uint8Arraytype check tobytesToBigInt(#7920) (@nflaig) - change remaining package licenses from LGPL-v3 to Apache-2.0 (#7915) (@philknows)
- prepare for spec test v1.6.0-alpha.1 (#7919) (@ensi321)
- add panel to track aggregate cache misses (#7914) (@nflaig)
- remove stale comment about default max blobs limit (#7907) (@nflaig)
- track Packed Attestation metrics on Block Production dashboard (#7911) (@twoeths)
- merge v1.31.0 stable back to unstable (#7908) (@philknows)
Documentation
- add bindings error to common issues (#8038) (@spiral-ladder)
Release v1.31.0
Good day everyone of our Lodestar users! As we prepare to go on a development sprint towards the Fusaka headliner, PeerDAS - we've released v1.31.0 which addresses some user experience issues and some user incompatibility issues. We recommend users update for the latest upgrades, and highly recommend those who have experienced errors such as "max listeners exceeded" warnings or Lodestar crashing on a VPS due to no AVX support. If you haven't been able to run Lodestar due to compatibility issues, we would be grateful if you gave it another try to see if your incompatibilities have been resolved.
Changelog
Features
- track invalid attestation data reason when producing blocks (#7891) (@twoeths)
- more metrics for SyncContributionAndProofPool (#7852) (@twoeths)
- block input cache (#7845) (@matthewkeil)
- implement BPO EIP-7892 (#7729) (@ensi321)
- update weak subjectivity calculation for electra (#7735) (@ensi321)
- block input additive refactor (#7776) (@wemeetagain)
Bug Fixes
- do not throw error for non-hashtree hashers (#7896) (@twoeths)
- update Beacon api impl to enforce unique array (#7875) (@mkermani144)
- remove arm check (#7897) (@matthewkeil)
- avx check in conditional (#7893) (@matthewkeil)
- default to as-sha256 if no chip support for AVX (#7887) (@matthewkeil)
- cache seen aggregated attestations by committee index (#7890) (@wemeetagain)
- add special handling for blob schedule when asserting equal params (#7859) (@nflaig)
- remove isProcessingCurrentSlotBlock (#7848) (@twoeths)
- review EIP-7045 (#7838) (@ensi321)
- advance pre state's slot used in rewards endpoints (#7842) (@ensi321)
Refactoring
- move historical state metrics to separate module (#7876) (@nazarhussain)
- add method to get ancestor & non-ancestor nodes in single traversal (#7528) (@bomanaps)
- cleanup block production (#7834) (@nazarhussain)
- deduplicate PeerIdStr type (#7824) (@matthewkeil)
- move validator monitor metrics to validator monitor (#7722) (@KatyaRyazantseva)
Tests
Maintenance
- v1.31.0 release (#7906) (@philknows)
- track AggregatedAttestationPool metrics on Grafana (#7900) (@twoeths)
- track gossip AggregateAndProof error on Grafana (#7899) (@twoeths)
- bump ssz to v1.2.1 (#7894) (@wemeetagain)
- remove deneb/electra entries from blob schedule (#7888) (@nflaig)
- restore dashboard variable names and inputs during download (#7872) (@nflaig)
- bump @chainsafe/threads to v1.11.2 (#7877) (@nflaig)
- throw error if ssz types for fork are not defined (#7850) (@nflaig)
- correct labels of gossipsub_iwant_promise_delivery_seconds metrics (#7878) (@twoeths)
- sanity check genesis block root against state latest block root (#7863) (@nflaig)
- upgrade Node.js version in devcontainer configuration (#7865) (@mkermani144)
- track mesh peers by client (#7864) (@twoeths)
- remove node_modules from actions cache (#7820) (@wemeetagain)
- add blob schedule to each network config (#7858) (@nflaig)
- update dashboards for gossip_block_elapsed_time_till_received labels (#7836) (@KatyaRyazantseva)
- fix tsconfig for type check for lightclient bundle (#7830) (@nazarhussain)
- remove axios from spec-test-utils (#7829) (@philknows)
- fix broken panels due to missing historical state worker metrics (#7826) (@nflaig)
- remove now unused tar dependency (#7822) (@nflaig)
- update @actions/cache to latest version (v4) (#7819) (@matthewkeil)
- use native fetch / tar to download / extract spec tests (#7816) (@nflaig)
Documentation
- add python distutils to faqs (#7835) (@philknows)