Releases: ChainSafe/lodestar
Release v1.36.0
Happy November Lodestar users! We are excited to announce our Fusaka mainnet release with version 1.36.0!
It is mandatory for all node operators to utilize this version or above to be Fusaka fork ready for the scheduled December 3rd hard fork and subsequent BPO forks: BPO1 (December 9th) and BPO2 (January 7th). A reminder for node operators that if you do not run Lodestar or any client with validators and wish to custody all data columns sidecars with your beacon node, you must use the --supernode flag to indicate this, otherwise your node will, by default, custody the minimum amount of 4 or higher depending on your attached validator count.
We have introduced a --semiSupernode flag for more efficient data availability with lower bandwidth and storage requirements. This will custody half the data column sidecar subnets to support blob reconstruction should you need them for other dependents. See #8568 for full details.
This release also increases the default gas limit to signal for 60 million gas blocks, up from the 45 million gas blocks currently on mainnet.
Other optimizations and performance enhancements found on testnets and from the Fusaka bug bounty have also been included with this version.
As usual, ensure you've updated your entire stack to mainnet-ready versions of Fusaka alongside your Lodestar beacon node/validator client. Happy Fusaka fork everyone ! 🍴🦓
Changelog
Features
- log agent, version and peerid for batched gossip errors (#8604) (@matthewkeil)
- include commit hash in network lodestar version (#8605) (@nflaig)
- signature verification for reqresp DA (#8580) (@matthewkeil)
- log clientAgent and clientVersion for gossip errors (#8601) (@matthewkeil)
- increase default gas limit to 60M (#8600) (@philknows)
- update
node-eth-kzgto 0.9.1 (#8594) (@kevaundray) - schedule fulu and BPOs on mainnet (#8590) (@nflaig)
- activate fulu on ephemery (#8587) (@nflaig)
- add option to prune persisted cp states (#8582) (@nflaig)
- enforce earliest available slot for incoming reqresp (#8553) (@matthewkeil)
- use classic-level in bun (#8575) (@wemeetagain)
- add semi supernode flag (#8568) (@nflaig)
- add partial blob reconstruction (#8567) (@nflaig)
- use bytes from lodestar-bun (#8562) (@wemeetagain)
- use snappy from lodestar-bun (#8557) (@wemeetagain)
- sync from unfinalized checkpoint state (#8527) (@nflaig)
- take Bun profile (#8515) (@twoeths)
- track computeDeltas metrics (#8531) (@twoeths)
- track performance of processFinalizedCheckpoint() (#8530) (@twoeths)
- add more specific error codes to voluntary exit error (#8486) (@phertyameen)
- update networking config to match CL spec (#8510) (@nflaig)
Bug Fixes
- prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
- resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
- refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
- update local status fork digest on fork boundary transition (#8561) (@nflaig)
- remove extraneous fields from
/eth/v1/node/peersresponse (#8554) (@nflaig) - ignore already known data column sidecars (#8542) (@nflaig)
- respect
reverseandlimitin bun leveldb controller (#8529) (@wemeetagain) - only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
- ensure data column sidecars respect blob limit (#8534) (@nflaig)
- do not create default cache entry for unknown proposers (#8532) (@nflaig)
- avoid emitting stale light client updates (#8522) (@nflaig)
- avoid Set.has() in computeDeltas() (#8525) (@twoeths)
- improve heap size limit log (#8516) (@twoeths)
Refactoring
Tests
- fix broken spec tests for merkle proofs (#8469) (@nazarhussain)
Maintenance
- release v1.36.0 (#8607) (@philknows)
- include block slot in proposal signature errors (#8603) (@nflaig)
- update gnosis preset (#8593) (@nflaig)
- remove usage of
prettyBytesin errors (#8589) (@nflaig) - migrate to
consensus-specsfor spec tests (#8591) (@ensi321) - downgrade enr without tcp multiaddr log to warning (#8586) (@nflaig)
- new BeaconChain dashboard (#8581) (@twoeths)
- unbreak lodestar dev command (#8577) (@nflaig)
- #8562 cleanup (#8563) (@wemeetagain)
- fix build after merge to unstable (#8558) (@nflaig)
- update execution payload and blobs bundle for fulu (#8556) (@nflaig)
- decompose VoteTracker (#8549) (@twoeths)
- update lodestar-bun (#8555) (@wemeetagain)
- add bunfig.toml (#8551) (@wemeetagain)
- fix type checks in merkle proof test (#8550) (@nflaig)
- unhide prune history option (#8547) (@nflaig)
- cleanup types exports for all packages (#8434) (@nazarhussain)
- more logs for maybeArchiveState() (#8541) (@twoeths)
- track computeDeltas() metrics on Grafana (#8539) (@twoeths)
- simplify start epoch in head chain range sync (#8535) (@nflaig)
- remove listener of blob sidecars chain event on close (#8520) (@nflaig)
- merge v1.35.0 back to unstable (#8514) (@philknows)
Release v1.36.0-rc.4
Changelog
Features
- log agent, version and peerid for batched gossip errors (#8604) (@matthewkeil)
- include commit hash in network lodestar version (#8605) (@nflaig)
- signature verification for reqresp DA (#8580) (@matthewkeil)
- log clientAgent and clientVersion for gossip errors (#8601) (@matthewkeil)
- increase default gas limit to 60M (#8600) (@philknows)
- update
node-eth-kzgto 0.9.1 (#8594) (@kevaundray) - schedule fulu and BPOs on mainnet (#8590) (@nflaig)
- activate fulu on ephemery (#8587) (@nflaig)
- add option to prune persisted cp states (#8582) (@nflaig)
- enforce earliest available slot for incoming reqresp (#8553) (@matthewkeil)
- use classic-level in bun (#8575) (@wemeetagain)
- add semi supernode flag (#8568) (@nflaig)
- add partial blob reconstruction (#8567) (@nflaig)
- use bytes from lodestar-bun (#8562) (@wemeetagain)
- use snappy from lodestar-bun (#8557) (@wemeetagain)
- sync from unfinalized checkpoint state (#8527) (@nflaig)
- take Bun profile (#8515) (@twoeths)
- track computeDeltas metrics (#8531) (@twoeths)
- track performance of processFinalizedCheckpoint() (#8530) (@twoeths)
- add more specific error codes to voluntary exit error (#8486) (@phertyameen)
- update networking config to match CL spec (#8510) (@nflaig)
Bug Fixes
- prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
- resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
- refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
- update local status fork digest on fork boundary transition (#8561) (@nflaig)
- remove extraneous fields from
/eth/v1/node/peersresponse (#8554) (@nflaig) - ignore already known data column sidecars (#8542) (@nflaig)
- respect
reverseandlimitin bun leveldb controller (#8529) (@wemeetagain) - only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
- ensure data column sidecars respect blob limit (#8534) (@nflaig)
- do not create default cache entry for unknown proposers (#8532) (@nflaig)
- avoid emitting stale light client updates (#8522) (@nflaig)
- avoid Set.has() in computeDeltas() (#8525) (@twoeths)
- improve heap size limit log (#8516) (@twoeths)
Refactoring
Tests
- fix broken spec tests for merkle proofs (#8469) (@nazarhussain)
Maintenance
- include block slot in proposal signature errors (#8603) (@nflaig)
- update gnosis preset (#8593) (@nflaig)
- remove usage of
prettyBytesin errors (#8589) (@nflaig) - migrate to
consensus-specsfor spec tests (#8591) (@ensi321) - downgrade enr without tcp multiaddr log to warning (#8586) (@nflaig)
- new BeaconChain dashboard (#8581) (@twoeths)
- unbreak lodestar dev command (#8577) (@nflaig)
- #8562 cleanup (#8563) (@wemeetagain)
- fix build after merge to unstable (#8558) (@nflaig)
- update execution payload and blobs bundle for fulu (#8556) (@nflaig)
- decompose VoteTracker (#8549) (@twoeths)
- update lodestar-bun (#8555) (@wemeetagain)
- add bunfig.toml (#8551) (@wemeetagain)
- fix type checks in merkle proof test (#8550) (@nflaig)
- unhide prune history option (#8547) (@nflaig)
- cleanup types exports for all packages (#8434) (@nazarhussain)
- more logs for maybeArchiveState() (#8541) (@twoeths)
- track computeDeltas() metrics on Grafana (#8539) (@twoeths)
- simplify start epoch in head chain range sync (#8535) (@nflaig)
- remove listener of blob sidecars chain event on close (#8520) (@nflaig)
- merge v1.35.0 back to unstable (#8514) (@philknows)
Release v1.36.0-rc.3
Changelog
Features
- signature verification for reqresp DA (#8580) (@matthewkeil)
- log clientAgent and clientVersion for gossip errors (#8601) (@matthewkeil)
- increase default gas limit to 60M (#8600) (@philknows)
- update
node-eth-kzgto 0.9.1 (#8594) (@kevaundray) - schedule fulu and BPOs on mainnet (#8590) (@nflaig)
- activate fulu on ephemery (#8587) (@nflaig)
- add option to prune persisted cp states (#8582) (@nflaig)
- enforce earliest available slot for incoming reqresp (#8553) (@matthewkeil)
- use classic-level in bun (#8575) (@wemeetagain)
- add semi supernode flag (#8568) (@nflaig)
- add partial blob reconstruction (#8567) (@nflaig)
- use bytes from lodestar-bun (#8562) (@wemeetagain)
- use snappy from lodestar-bun (#8557) (@wemeetagain)
- sync from unfinalized checkpoint state (#8527) (@nflaig)
- take Bun profile (#8515) (@twoeths)
- track computeDeltas metrics (#8531) (@twoeths)
- track performance of processFinalizedCheckpoint() (#8530) (@twoeths)
- add more specific error codes to voluntary exit error (#8486) (@phertyameen)
- update networking config to match CL spec (#8510) (@nflaig)
Bug Fixes
- prevent columns that arrive after block import from getting processed (#8598) (@matthewkeil)
- resubscribe to beacon subnets on current epoch reorg (#8570) (@phertyameen)
- refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
- update local status fork digest on fork boundary transition (#8561) (@nflaig)
- remove extraneous fields from
/eth/v1/node/peersresponse (#8554) (@nflaig) - ignore already known data column sidecars (#8542) (@nflaig)
- respect
reverseandlimitin bun leveldb controller (#8529) (@wemeetagain) - only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
- ensure data column sidecars respect blob limit (#8534) (@nflaig)
- do not create default cache entry for unknown proposers (#8532) (@nflaig)
- avoid emitting stale light client updates (#8522) (@nflaig)
- avoid Set.has() in computeDeltas() (#8525) (@twoeths)
- improve heap size limit log (#8516) (@twoeths)
Refactoring
Tests
- fix broken spec tests for merkle proofs (#8469) (@nazarhussain)
Maintenance
- update gnosis preset (#8593) (@nflaig)
- remove usage of
prettyBytesin errors (#8589) (@nflaig) - migrate to
consensus-specsfor spec tests (#8591) (@ensi321) - downgrade enr without tcp multiaddr log to warning (#8586) (@nflaig)
- new BeaconChain dashboard (#8581) (@twoeths)
- unbreak lodestar dev command (#8577) (@nflaig)
- #8562 cleanup (#8563) (@wemeetagain)
- fix build after merge to unstable (#8558) (@nflaig)
- update execution payload and blobs bundle for fulu (#8556) (@nflaig)
- decompose VoteTracker (#8549) (@twoeths)
- update lodestar-bun (#8555) (@wemeetagain)
- add bunfig.toml (#8551) (@wemeetagain)
- fix type checks in merkle proof test (#8550) (@nflaig)
- unhide prune history option (#8547) (@nflaig)
- cleanup types exports for all packages (#8434) (@nazarhussain)
- more logs for maybeArchiveState() (#8541) (@twoeths)
- track computeDeltas() metrics on Grafana (#8539) (@twoeths)
- simplify start epoch in head chain range sync (#8535) (@nflaig)
- remove listener of blob sidecars chain event on close (#8520) (@nflaig)
- merge v1.35.0 back to unstable (#8514) (@philknows)
Release v1.36.0-rc.2
Changelog
Features
- update
node-eth-kzgto 0.9.1 (#8594) (@kevaundray) - schedule fulu and BPOs on mainnet (#8590) (@nflaig)
- activate fulu on ephemery (#8587) (@nflaig)
- add option to prune persisted cp states (#8582) (@nflaig)
- enforce earliest available slot for incoming reqresp (#8553) (@matthewkeil)
- use classic-level in bun (#8575) (@wemeetagain)
- add semi supernode flag (#8568) (@nflaig)
- add partial blob reconstruction (#8567) (@nflaig)
- use bytes from lodestar-bun (#8562) (@wemeetagain)
- use snappy from lodestar-bun (#8557) (@wemeetagain)
- sync from unfinalized checkpoint state (#8527) (@nflaig)
- take Bun profile (#8515) (@twoeths)
- track computeDeltas metrics (#8531) (@twoeths)
- track performance of processFinalizedCheckpoint() (#8530) (@twoeths)
- add more specific error codes to voluntary exit error (#8486) (@phertyameen)
- update networking config to match CL spec (#8510) (@nflaig)
Bug Fixes
- refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
- update local status fork digest on fork boundary transition (#8561) (@nflaig)
- remove extraneous fields from
/eth/v1/node/peersresponse (#8554) (@nflaig) - ignore already known data column sidecars (#8542) (@nflaig)
- respect
reverseandlimitin bun leveldb controller (#8529) (@wemeetagain) - only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
- ensure data column sidecars respect blob limit (#8534) (@nflaig)
- do not create default cache entry for unknown proposers (#8532) (@nflaig)
- avoid emitting stale light client updates (#8522) (@nflaig)
- avoid Set.has() in computeDeltas() (#8525) (@twoeths)
- improve heap size limit log (#8516) (@twoeths)
Refactoring
Tests
- fix broken spec tests for merkle proofs (#8469) (@nazarhussain)
Maintenance
- migrate to
consensus-specsfor spec tests (#8591) (@ensi321) - downgrade enr without tcp multiaddr log to warning (#8586) (@nflaig)
- new BeaconChain dashboard (#8581) (@twoeths)
- unbreak lodestar dev command (#8577) (@nflaig)
- #8562 cleanup (#8563) (@wemeetagain)
- fix build after merge to unstable (#8558) (@nflaig)
- update execution payload and blobs bundle for fulu (#8556) (@nflaig)
- decompose VoteTracker (#8549) (@twoeths)
- update lodestar-bun (#8555) (@wemeetagain)
- add bunfig.toml (#8551) (@wemeetagain)
- fix type checks in merkle proof test (#8550) (@nflaig)
- unhide prune history option (#8547) (@nflaig)
- cleanup types exports for all packages (#8434) (@nazarhussain)
- more logs for maybeArchiveState() (#8541) (@twoeths)
- track computeDeltas() metrics on Grafana (#8539) (@twoeths)
- simplify start epoch in head chain range sync (#8535) (@nflaig)
- remove listener of blob sidecars chain event on close (#8520) (@nflaig)
- merge v1.35.0 back to unstable (#8514) (@philknows)
Release v1.36.0-rc.1
Changelog
Features
- enforce earliest available slot for incoming reqresp (#8553) (@matthewkeil)
- use classic-level in bun (#8575) (@wemeetagain)
- add semi supernode flag (#8568) (@nflaig)
- add partial blob reconstruction (#8567) (@nflaig)
- use bytes from lodestar-bun (#8562) (@wemeetagain)
- use snappy from lodestar-bun (#8557) (@wemeetagain)
- sync from unfinalized checkpoint state (#8527) (@nflaig)
- take Bun profile (#8515) (@twoeths)
- track computeDeltas metrics (#8531) (@twoeths)
- track performance of processFinalizedCheckpoint() (#8530) (@twoeths)
- add more specific error codes to voluntary exit error (#8486) (@phertyameen)
- update networking config to match CL spec (#8510) (@nflaig)
Bug Fixes
- refactor validateColumnsByRangeResponse (#8482) (@matthewkeil)
- update local status fork digest on fork boundary transition (#8561) (@nflaig)
- remove extraneous fields from
/eth/v1/node/peersresponse (#8554) (@nflaig) - ignore already known data column sidecars (#8542) (@nflaig)
- respect
reverseandlimitin bun leveldb controller (#8529) (@wemeetagain) - only trigger get blobs and data column reconstruction if missing data (#8536) (@nflaig)
- ensure data column sidecars respect blob limit (#8534) (@nflaig)
- do not create default cache entry for unknown proposers (#8532) (@nflaig)
- avoid emitting stale light client updates (#8522) (@nflaig)
- avoid Set.has() in computeDeltas() (#8525) (@twoeths)
- improve heap size limit log (#8516) (@twoeths)
Refactoring
Tests
- fix broken spec tests for merkle proofs (#8469) (@nazarhussain)
Maintenance
- unbreak lodestar dev command (#8577) (@nflaig)
- #8562 cleanup (#8563) (@wemeetagain)
- fix build after merge to unstable (#8558) (@nflaig)
- update execution payload and blobs bundle for fulu (#8556) (@nflaig)
- decompose VoteTracker (#8549) (@twoeths)
- update lodestar-bun (#8555) (@wemeetagain)
- add bunfig.toml (#8551) (@wemeetagain)
- fix type checks in merkle proof test (#8550) (@nflaig)
- unhide prune history option (#8547) (@nflaig)
- cleanup types exports for all packages (#8434) (@nazarhussain)
- more logs for maybeArchiveState() (#8541) (@twoeths)
- track computeDeltas() metrics on Grafana (#8539) (@twoeths)
- simplify start epoch in head chain range sync (#8535) (@nflaig)
- remove listener of blob sidecars chain event on close (#8520) (@nflaig)
- merge v1.35.0 back to unstable (#8514) (@philknows)
Release v1.35.0
Hey Lodestar users! We're happy to release v1.35.0 which includes performance refactors and enhancements! This upgrade is recommended for all mainnet and testnet users.
For node operators, we now support dual stack IPv4 and IPv6 by default serving port 9000. If no listenAddress is specified then we will enable both IPv4 and IPv6. If you want to reconfigure the listening addresses or explicitly enable one stack, you can manually set it for IPv4 only with listenAddress or for IPv6 only with listenAddress6.
This release also supports the Fusaka hard fork on all planned testnets for Holesky, Sepolia and Hoodi. Note that any v1.35.0-rc.X versions are still compatible for the Fusaka testnet forks, but we now recommend using the stable release.
Changelog
Features
- support serving blob sidecars post fulu (#8506) (@nflaig)
- wire in gloas containers (#8485) (@ensi321)
- use lodestar-bun hashtree (#8481) (@wemeetagain)
- add gloas containers (#8464) (@ensi321)
- use bps instead of
INTERVALS_PER_SLOTfor deadlines (#8091) (@ensi321) - add lodestar-bun and bun leveldb binding (#8462) (@wemeetagain)
- 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
- update gnosis slot duration ms to 5000 (#8512) (@nflaig)
- use datastore-level by default (#8503) (@wemeetagain)
- default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
- unsubscribe from
blob_sidecartopics during fulu fork transition (#8497) (@nflaig) - return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
- use previous slot to get sync aggregate for block (#8494) (@nflaig)
- update regen caller for data column (#8487) (@wemeetagain)
- not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
- hasAllData in createFromColumn() api (#8473) (@twoeths)
- 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
- replace * value with other more bash friendly value (#8491) (@guha-rahul)
- make commonBlockBodyPromise a required parameter (#8273) (@nflaig)
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
- v1.35.0 release (#8513) (@philknows)
- ignore local tsbuildinfo files in docker builds (#8492) (@nflaig)
- add gloas fork constants to unscheduled networks (#8484) (@nflaig)
- update error response for validator publish endpoints (#8480) (@nflaig)
- remove remaining usage of
SECONDS_PER_SLOT(#8476) (@nflaig) - add gloas timings to slot time functions (#8474) (@nflaig)
- add git to Dockerfile (#8470) (@nflaig)
- 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
- update contributing.md to include AI disclosure (#8498) (@philknows)
- add comprehensive usage documentation to docker-compose.local.yml (#8441) (@DeVikingMark)
- clarify ipv6 details in networking page (#8368) (@philknows)
Release v1.35.0-rc.4
Changelog
Features
- support serving blob sidecars post fulu (#8506) (@nflaig)
- wire in gloas containers (#8485) (@ensi321)
- use lodestar-bun hashtree (#8481) (@wemeetagain)
- add gloas containers (#8464) (@ensi321)
- use bps instead of
INTERVALS_PER_SLOTfor deadlines (#8091) (@ensi321) - add lodestar-bun and bun leveldb binding (#8462) (@wemeetagain)
- 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
- use datastore-level by default (#8503) (@wemeetagain)
- default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
- unsubscribe from
blob_sidecartopics during fulu fork transition (#8497) (@nflaig) - return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
- use previous slot to get sync aggregate for block (#8494) (@nflaig)
- update regen caller for data column (#8487) (@wemeetagain)
- not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
- hasAllData in createFromColumn() api (#8473) (@twoeths)
- 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
- replace * value with other more bash friendly value (#8491) (@guha-rahul)
- make commonBlockBodyPromise a required parameter (#8273) (@nflaig)
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
- ignore local tsbuildinfo files in docker builds (#8492) (@nflaig)
- add gloas fork constants to unscheduled networks (#8484) (@nflaig)
- update error response for validator publish endpoints (#8480) (@nflaig)
- remove remaining usage of
SECONDS_PER_SLOT(#8476) (@nflaig) - add gloas timings to slot time functions (#8474) (@nflaig)
- add git to Dockerfile (#8470) (@nflaig)
- 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
- update contributing.md to include AI disclosure (#8498) (@philknows)
- add comprehensive usage documentation to docker-compose.local.yml (#8441) (@DeVikingMark)
- clarify ipv6 details in networking page (#8368) (@philknows)
Release v1.35.0-rc.3
Changelog
Features
- wire in gloas containers (#8485) (@ensi321)
- use lodestar-bun hashtree (#8481) (@wemeetagain)
- add gloas containers (#8464) (@ensi321)
- use bps instead of
INTERVALS_PER_SLOTfor deadlines (#8091) (@ensi321) - add lodestar-bun and bun leveldb binding (#8462) (@wemeetagain)
- 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
- use datastore-level by default (#8503) (@wemeetagain)
- default port6 to ipv4 port if set explicitly (#8504) (@nflaig)
- unsubscribe from
blob_sidecartopics during fulu fork transition (#8497) (@nflaig) - return spec constants starting with 0x as hex strings instead of decimal (#8495) (@nflaig)
- use previous slot to get sync aggregate for block (#8494) (@nflaig)
- update regen caller for data column (#8487) (@wemeetagain)
- not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
- hasAllData in createFromColumn() api (#8473) (@twoeths)
- 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
- replace * value with other more bash friendly value (#8491) (@guha-rahul)
- make commonBlockBodyPromise a required parameter (#8273) (@nflaig)
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
- ignore local tsbuildinfo files in docker builds (#8492) (@nflaig)
- add gloas fork constants to unscheduled networks (#8484) (@nflaig)
- update error response for validator publish endpoints (#8480) (@nflaig)
- remove remaining usage of
SECONDS_PER_SLOT(#8476) (@nflaig) - add gloas timings to slot time functions (#8474) (@nflaig)
- add git to Dockerfile (#8470) (@nflaig)
- 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
- update contributing.md to include AI disclosure (#8498) (@philknows)
- add comprehensive usage documentation to docker-compose.local.yml (#8441) (@DeVikingMark)
- clarify ipv6 details in networking page (#8368) (@philknows)
Release v1.35.0-rc.2
Changelog
Features
- wire in gloas containers (#8485) (@ensi321)
- use lodestar-bun hashtree (#8481) (@wemeetagain)
- add gloas containers (#8464) (@ensi321)
- use bps instead of
INTERVALS_PER_SLOTfor deadlines (#8091) (@ensi321) - add lodestar-bun and bun leveldb binding (#8462) (@wemeetagain)
- 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
- use previous slot to get sync aggregate for block (#8494) (@nflaig)
- update regen caller for data column (#8487) (@wemeetagain)
- not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
- hasAllData in createFromColumn() api (#8473) (@twoeths)
- 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
- replace * value with other more bash friendly value (#8491) (@guha-rahul)
- make commonBlockBodyPromise a required parameter (#8273) (@nflaig)
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
- ignore local tsbuildinfo files in docker builds (#8492) (@nflaig)
- add gloas fork constants to unscheduled networks (#8484) (@nflaig)
- update error response for validator publish endpoints (#8480) (@nflaig)
- remove remaining usage of
SECONDS_PER_SLOT(#8476) (@nflaig) - add gloas timings to slot time functions (#8474) (@nflaig)
- add git to Dockerfile (#8470) (@nflaig)
- 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
- add comprehensive usage documentation to docker-compose.local.yml (#8441) (@DeVikingMark)
- clarify ipv6 details in networking page (#8368) (@philknows)
Release v1.35.0-rc.1
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
- use bps instead of
INTERVALS_PER_SLOTfor deadlines (#8091) (@ensi321) - add lodestar-bun and bun leveldb binding (#8462) (@wemeetagain)
- 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
- not throw error in removeEagerlyPersistedBlockInputs (#8472) (@twoeths)
- hasAllData in createFromColumn() api (#8473) (@twoeths)
- 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 gloas timings to slot time functions (#8474) (@nflaig)
- add git to Dockerfile (#8470) (@nflaig)
- 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)