Release v1.9.0
Good day Lodestar users! We've just released v1.9.0 after many, many commits. The most notable changes for users are covered here in our Twitter thread: https://twitter.com/lodestar_eth/status/1671757542400073728
This release is recommended to all users of Lodestar and we can't wait to show you what we have in store for the 1.10 release 🔜 . Till then! 🚀
Changelog
Features
- update kzg to the latest decoupled and bigendian version (#5659) (@g11tech)
- add option to force checkpoint sync (#5652) (@nflaig)
- make few improvements to the prover (#5636) (@nazarhussain)
- persist network thread profile (#5628) (@tuyennhv)
- update specs to v1.4.0-alpha.2 (#5630) (@g11tech)
- decrypt keystores imported through API in thread pool (#5624) (@nflaig)
- update deneb types and spec to 1.4.0-alpha.1 (#5605) (@g11tech)
- change the blob txs encoding assumption to be opaque rlp (#5569) (@g11tech)
- add validator monitor metric for missed attestation reason (#5602) (@dapplion)
- set network.useWorker to false by default (#5600) (@wemeetagain)
- prune invalid SSZ objects (#5388) (@acuarica)
- add forkchoice data structures metrics (#5576) (@dapplion)
- add --private flag (#5568) (@dapplion)
- add option to configure REST API server header limit (#5594) (@nflaig)
- add reqresp TTFB metrics (#5589) (@dapplion)
- move to blob_sidecars_by_range/root methods (#5564) (@g11tech)
- add blowfish banner for deneb fork activation (#5578) (@g11tech)
- add forkchoice.hasBlockUnsafe() (#5575) (@tuyennhv)
- add metrics to AsyncIterableBridgeCaller (#5548) (@dapplion)
- add setHeadAfterFirstInterval metric (#5559) (@dapplion)
- trigger block search for unknown block attestations (#5485) (@tuyennhv)
- add support for eth_estimateGas (#5521) (@nazarhussain)
- enable deneb spec tests (#5523) (@g11tech)
- add hot and archive db repositories for blobSidecars (#5522) (@g11tech)
- more metrics for sync committee message validation (#5516) (@tuyennhv)
- decouple the deneb blob and block production (#5492) (@g11tech)
- batch io operations when verifying & importing block (#5473) (@tuyennhv)
- move libp2p to network worker thread (#5229) (@dapplion)
- update gnosis capella preset values (#5503) (@dapplion)
- schedule Gnosis Chiado testnet shapella fork (#5504) (@dapplion)
- worker friendly logger instances (#5490) (@dapplion)
- add call support to verified requests for prover (#5462) (@nazarhussain)
- collect and add proposal stats in grafana metrics (#5448) (@g11tech)
- track block source in BlockInput (#5486) (@tuyennhv)
- add disablePeerScoring flag (#5478) (@tuyennhv)
- add support for
justified
block id in Beacon Node API (#5459) (@acuarica) - skip serializing gossip block when persisting to db (#5426) (@tuyennhv)
- block network processor when processing current slot block (#5458) (@tuyennhv)
- prover: add whitelist unverified methods support to prover (#5614) (@nazarhussain)
- prover: add support for batch request (#5610) (@nazarhussain)
- beacon-node: add block error metric to gossip handlers (#5495) (@matthewkeil)
- cli: export slashing protection as interchange format v5 (#5472) (@nflaig)
Bug Fixes
- unknown block sync to subscribe/unsubscribe to network events (#5654) (@tuyennhv)
- ignore queue aborted errors in prepareForNextSlot (#5658) (@nflaig)
- handle only downloaded blocks in unknown block sync (#5656) (@tuyennhv)
- ignore finalized when processing downloaded unknown block (#5651) (@tuyennhv)
- correct slot and index in getEpochCommittees response (#5634) (@nflaig)
- match beacon APIs URL casing (#5643) (@dapplion)
- fix the blobs side cars by range response (#5640) (@g11tech)
- fix big decimal fomatting of zeros after '.' used for logging block reward (#5637) (@g11tech)
- handle dataGasUsed in engine for deneb payload (#5629) (@g11tech)
- prevent unhandled rejections in racePromisesWithCutoff (#5627) (@nflaig)
- write keystore cache with 600 permissions (#5622) (@nflaig)
- archive state without using batchDelete (#5607) (@tuyennhv)
- adjust decryption worker pool size based on keystore count (#5608) (@nflaig)
- use proper newlines in metrics output (#5595) (@wemeetagain)
- restore discv5 metrics (#5590) (@wemeetagain)
- revert PR-5520 (#5592) (@tuyennhv)
- deduplicate notifier log (#5545) (@tuyennhv)
- ensure benchmark workflow is not cancelled on stable/unstable consecutive pushes (#5535) (@g11tech)
- use proper state to verify attestations (#5500) (@tuyennhv)
- correct seen attestation data count per slot metric (#5509) (@tuyennhv)
- modify minimal preset's field elements per blob to mainnet for dev runs (#5484) (@g11tech)
- update builder mergemock sim with builder block assertions (#5432) (@g11tech)
- cli: consistently support URLs as comma-separated values (#5660) (@nflaig)
- logger: restore previous --logFileDailyRotate behavior (#5598) (@nflaig)
- logger: avoid creating new winston instance for each child (#5597) (@nflaig)
- logger: increase max listeners of file transports to 20 (#5537) (@nflaig)
- beacon-node: cleanly exit process on graceful shutdown (#5330) (@nflaig)
- validator: improve error handling in attestation service (#5511) (@nflaig)
- validator: lock keystores when loading from cache file (#5474) (@nflaig)
- validator: log api errors as
warn
if node is syncing (#5467) (@nflaig) - slashing-protection: resolve
minEpoch
max call stack issue (#5461) (@nflaig) - slashing-protection: filter by db bucket when loading pubkeys (#5437) (@nflaig)
- slashing-protection: limit min-max surround epoch lookback to 4096 (#5454) (@nflaig)
Refactoring
- remove intermediary not-started state from peer discovery (#5618) (@dapplion)
- class BeaconDb as close only (#5587) (@dapplion)
- reusable thread pool to decrypt keystores (#5623) (@nflaig)
- do not expose state caches outside regen (#5599) (@dapplion)
- move state getter from API impl to chain (#5572) (@dapplion)
- drop start stop pattern from Network where possible (#5588) (@dapplion)
- move block getter from API impl to chain (#5570) (@dapplion)
- class MonitoringService as close only (#5585) (@dapplion)
- class HttpMetricsServer as close only (#5586) (@dapplion)
- rename EpochContext and EpochProcess (#5558) (@dapplion)
- improve the attached validator finalized proposal stats log ux (#5538) (@g11tech)
- change archiving strategy to always store last finalized (#5520) (@g11tech)
- revise validator log to output seen instead of exists (#5507) (@philknows)
- update the execution api responses to decoupled blobs spec (#5483) (@g11tech)
- separate peer score implementation to multiple functional files (#5479) (@tuyennhv)
- simplify discv5 initialization (#5456) (@wemeetagain)
- move data availability validation out of state transition to allow optimistic sync in future (#5178) (@g11tech)
- improve jwt.ts type definition (#5464) (@trim21)
- move getNetworkIdentity to network class (#5453) (@dapplion)
- move clock events to clock class (#5446) (@dapplion)
- move network core metrics to separate file (#5445) (@dapplion)
- drop MetadataController dependency on BeaconChain (#5443) (@dapplion)
- network: move unclean disconnect log to debug (#5541) (@nflaig)
- network: add gossip publisher module (#5450) (@wemeetagain)
- network: use StatusCache in PeerManager (#5451) (@wemeetagain)
- db: improve error message if database is already used (#5533) (@nflaig)
- reqresp: support byte based handlers (#5417) (@nazarhussain)
Continuous Integration
- add support for the CI env for e2e tests (#5488) (@nazarhussain)
- assert eslintrc rules are sorted (#5567) (@dapplion)
Tests
- make results of keymanager e2e tests deterministic (#5641) (@nflaig)
- update spec tests target to v1.4.0-alpha.3 (#5635) (@g11tech)
- add fork-choice benchmark for updateHead (#5577) (@dapplion)
- remove chain mocks (#5582) (@dapplion)
- enable metrics for the sim tests (#5583) (@nazarhussain)
- add transfer / copy benchmark (#5470) (@wemeetagain)
- update the sim tests to simplify assertion logic (#5501) (@nazarhussain)
- add capella support to sim multi-fork tests (#5489) (@nazarhussain)
Styles
- fix unnecessary type casting (#5639) (@nazarhussain)
Maintenance
- release 1.9.0 (#5631) (@tuyennhv)
- replace lerna commands with yarn (#5657) (@nflaig)
- fix ens-normalize dependency resolution (#5621) (@nflaig)
- update @chainsafe/blst dependency (#5612) (@wemeetagain)
- fix typos in canonical (#5609) (@nflaig)
- update issue templates (#5606) (@philknows)
- update dashboards to support network worker (#5593) (@dapplion)
- [Snyk] Security upgrade grafana/grafana from 8.5.22 to 8.5.25 (#5571) (@snyk-bot)
- add metrics to unknown block sync panel (#5574) (@tuyennhv)
- fix dashboard job name variables (#5579) (@nflaig)
- move DB Bucket schema to consumer packages (#5560) (@dapplion)
- set graphTooltip to shared crosshair (#5563) (@dapplion)
- add rule @typescript-eslint/restrict-template-expressions (#5562) (@dapplion)
- add geth metrics (#5510) (@tuyennhv)
- add network useWorker flag (#5551) (@tuyennhv)
- remove general issue template and enable blank template (#5544) (@philknows)
- add more panels to Gossip Block Validation row (#5540) (@tuyennhv)
- update issue form templates (#5539) (@philknows)
- namespace getExpectedWithdrawals benchmark (#5530) (@dapplion)
- add script to pull dashboards from remote API (#5525) (@dapplion)
- fix build:watch scripts (#5531) (@nflaig)
- cancel previous workflows on new push to the PRs (#5232) (@g11tech)
- add test style guide for assert messages (#5528) (@dapplion)
- grafana dashboard lint rules for API exports (#5526) (@dapplion)
- update rimraf imports to fix eslint warnings (#5518) (@nflaig)
- add eslint rule to ensure await in try-catch (#5517) (@nflaig)
- fix dashboard panels with outdated metric queries (#5502) (@nflaig)
- generate changelog based on conventional commits (#5487) (@nflaig)
- dynamic year on the chainsafe cli notice (#5476) (@nflaig)
- add note in CONTRIBUTING about external test deps (#5471) (@dapplion)
- remove unmet peer dependencies (#5469) (@nflaig)
- update year on the chainsafe cli notice (#5466) (@nflaig)
- fix incorrect merge conflict resolution (#5468) (@wemeetagain)
- drop unused coreTopicsAtFork (#5452) (@dapplion)
- prover: bump ethers to 6.4.2 (#5625) (@wemeetagain)
- scripts: add clean:nm to root package.json (#5616) (@matthewkeil)