Hey Lodestar users! We're happy to release our v1.35.0 release 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 explictly 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_SLOT
for 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_sidecar
topics 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
seenTimestampSec
of 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_BLOCK
on 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
elliptic
to 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
getMaxRequestBlobSidecars
helper from config object (#8418) (@nflaig) - move single attestation errors to
verbose
log 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)