Good day Lodestar operators! We've just released v1.41.0 and recommend users upgrade for the latest features and best performance. This is a feature-packed release that brings QUIC transport, ipv6 fixes, js-libp2p v3, faster build times with TSGo and the first pieces of ePBS 🚀.
NOTE: QUIC transport is now available with this release. It is disabled by default but we strongly recommend you enable it with the --quic flag. It is critical to note that you will need to update your existing firewall rules and other infrastructure bits and pieces to allow UDP on port 9001. Check out our docs for more information if you have any questions. You can find them here. It is important to also note that while this change is not mandatory now, we will be turning on QUIC by default in the next minor release and your node connectivity will break if you are not allowing QUIC traffic through your firewall. There will be another reminder next release but the performance improvements alone push us to recommend you turning it on via the flag with this release.
We also made ipv6 configuration seamless so that discovery happens by default. Your ENR will now get automatically updated when setting any IPv6 related flags.
You will also notice some new PeerDas metrics on the dashboards if you are using the ones provided with our repo.
While transparent, we have made big strides towards again with this release and are getting closer towards realizing our zig update for the state-transition. A lot of the plumbing has been merged so that our TS code is ready to accept the Zig wonderfulness that we have in store for you. We anticipate that will be ready in the next few releases and are excited to share our journey along the way.
Changelog
Features
- add QUIC support (#8051) (@wemeetagain)
- schedule Fulu fork for Chiado testnet (#9027) (@dapplion)
- use tsgo for build and type checks (#8992) (@nazarhussain)
- set attestation data index based on payload status (#8982) (@nflaig)
- implement epbs fork choice (#8739) (@ensi321)
- integrate gossip validation spec tests (#8965) (@nflaig)
- add gloas block import pipeline (#8940) (@ensi321)
- libp2p v3 (#8890) (@wemeetagain)
- model BeaconStateView (#8773) (@twoeths)
- create standalone fork-choice dashboard (#8928) (@nazarhussain)
- add execution payload envelope repositories (#8916) (@ensi321)
- implement epbs block production (#8838) (@nflaig)
- support connecting multiple external signers to validator client (#8822) (@KoxyG)
- update to spec v1.7.0-alpha.2 (#8881) (@nflaig)
- add getNodeVersionV2 endpoint (#8772) (@nflaig)
- state-transition: add gloas fields/methods to IBeaconStateView (#8963) (@twoeths)
Bug Fixes
- correct pre-Deneb attestation propagation slot range boundary (#9031) (@nflaig)
- prune serialized cache by block input keys (#9007) (@nflaig)
- cache previous epoch payload timeliness committees (#8991) (@nflaig)
- use inclusive boundary for gossip clock disparity checks (#8968) (@lodekeeper)
- libp2p v3 unknown peers (#8960) (@nflaig)
- bootstrap already-open libp2p connections at PeerManager startup (#8948) (@lodekeeper)
- log payload attestations for gloas block bodies (#8942) (@nflaig)
- yield to event loop between block imports during sync (#8925) (@lodekeeper)
- return available light client updates instead of throwing on missing periods (#8906) (@lodekeeper)
- combine error status and message into single chunk in reqresp response (#8908) (@lodekeeper)
- remove leaked process listener in metrics close() (#8894) (@wemeetagain)
- reqresp: clear composed response timeout signals (#9029) (@lodekeeper)
- fork-choice: make payloadStatus explicit in ancestor traversal APIs (#8996) (@twoeths)
- beacon-node: move serializedCache.clear() to after DB write completes (#8907) (@twoeths)
Performance
- fork-choice: hoist proposerBoostRoot out of applyScoreChanges loop (#9040) (@GrapeBaBa)
Refactoring
- simplify default variant lookup to avoid double hash lookup (#9023) (@GrapeBaBa)
- use BitArray for PTC votes instead of boolean[] (#9021) (@GrapeBaBa)
- clone state in processExecutionPayloadEnvelope (#9015) (@ensi321)
- separate writeBlockInputToDb into parallel block and column writes (#8974) (@twoeths)
- unified pubkey cache (#8945) (@wemeetagain)
Continuous Integration
- add native module CPU portability check (#9044) (@lodekeeper)
- remove bun tests (#8959) (@spiral-ladder)
Tests
- disable flaky E2E tests on slow CI runners (#8936) (@lodekeeper)
- unskip and fix unknownBlock.test.ts (#8897) (@wemeetagain)
- increase prover e2e hook timeout to include genesis delay (#8910) (@lodekeeper)
- enable gloas finality spec tests (#8911) (@lodekeeper)
- fix flaky sim tests (#8909) (@lodekeeper)
- sim: use directPeers for backup eth provider sim test (#8917) (@lodekeeper)
- sim: use directPeers to maintain peer connections during sync (#8912) (@lodekeeper)
Maintenance
- v1.41.0 release (#9038) (@matthewkeil)
- create GitHub releases as draft to support immutable releases (#9056) (@lodekeeper)
- fix peerdas metrics (#8920) (@rnfairchild)
- bump @chainsafe/discv5 to v12.0.1 and @chainsafe/enr to v6.0.1 (#9049) (@lodekeeper)
- update lockfile for @libp2p/utils 7.0.13 (#9037) (@lodekeeper)
- bump libp2p deps to latest published versions (#9035) (@lodekeeper)
- fix seen block input cache metrics (#9020) (@nflaig)
- remove getComputeShuffledIndexFn() (#9011) (@twoeths)
- fix private imports (#8990) (@nazarhussain)
- pin github actions by commit hash (#9017) (@nflaig)
- pin pnpm with sha512 integrity in package.json (#9008) (@nflaig)
- bump fastify to v5.8.1 (#8989) (@lodekeeper)
- bump libp2p deps to latest patch releases (#8984) (@lodekeeper)
- bump libp2p to 3.1.4 (#8973) (@lodekeeper)
- bump libp2p deps and fix peer-collections type mismatch (#8970) (@lodekeeper)
- add .claude project configuration with skills and permissions (#8961) (@lodekeeper)
- track forkchoice update results via metrics (#8895) (@wemeetagain)
- properly await async monitoring requests during shutdown (#8896) (@wemeetagain)
- fix Dockerfile.dev build and improve layer caching (#8922) (@lodekeeper)
- enable corepack in Dockerfile.dev for pnpm support (#8921) (@lodekeeper)
- use grep -F for fixed string matching in docs workflows (#8904) (@lodekeeper)
- merge stable v1.40.0 back to unstable (#8893) (@matthewkeil)
- deps: bump the actions group with 7 updates (#9048) (@dependabot[bot])
- deps: bump the actions group with 13 updates (#9018) (@dependabot[bot])
- deps: bump systeminformation from 5.27.14 to 5.30.8 (#8926) (@dependabot[bot])
- ci: pin ethspecify to 0.3.7 in check-specrefs (#8986) (@lodekeeper)
- deps-dev: bump ajv from 8.17.1 to 8.18.0 (#8927) (@dependabot[bot])
Documentation
- fix prettier formatting in AGENTS.md (#8930) (@lodekeeper)
- improve AGENTS.md with architecture patterns and pitfalls (#8929) (@lodekeeper)
- add documentation versioning support (#8901) (@lodekeeper)
- reqresp: add upstream issue reference to createRespSignal (#9033) (@lodekeeper)