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
lodestar
root 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_BLOCKS
constants 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_count
in 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
- upgrade sim tests to use post-electra images (#8303) (@nazarhussain)
- error from sim test is swallowed in
tableReporter
(#8223) (@ensi321) - disable DEBUG logs by default when running sim tests (#8186) (@nflaig)
- unit tests and e2e tests of peerDAS branch (#8173) (@twoeths)
- peerdas fix interop config (#8145) (@matthewkeil)
Maintenance
- fix lint (#8323) (@matthewkeil)
- update minimal_config to latest spec (#8232) (@barnabasbusa)
- update
payload_attributes
event test data (#8308) (@nflaig) - upgrade @biomejs/biome to newer type aware version (#7982) (@nazarhussain)
- add script to launch up local kurtosis testnet (#8070) (@kevaundray)
- remove error stacktrace from peer disconnected during identify protocol logs (#8289) (@nflaig)
- fix broken types for
datastore-level
(#8287) (@nazarhussain) - track req/resp outgoing request error reason (#8283) (@twoeths)
- remove per committee attestation routine (#8266) (@nflaig)
- track DataColumnSidecar errors on Grafana (#8259) (@twoeths)
- remove skipped fulu constants in config test (#8252) (@nflaig)
- move peer id file error due to file not found to debug (#8230) (@nflaig)
- remove redundant unknownBlockParent event emit (#8213) (@twoeths)
- update the logs during identify (#8188) (@nazarhussain)
- post-merge peerDAS branch review (#8187) (@nflaig)
- fulu nits (#8164) (@matthewkeil)
- clean up block input types and comments (#8161) (@matthewkeil)
- remove else condition and TODO from importBlock for metrics (#8138) (@matthewkeil)
- clean up fulu types (#8146) (@matthewkeil)
- restore
isForkBlobs
fork guard alias forisForkPostDeneb
(#8135) (@nflaig) - refactor custody config initialization (#8126) (@wemeetagain)
- use number for cell indices (#8131) (@wemeetagain)
- make NetworkConfig a simple object (#8124) (@wemeetagain)
- merge v1.33.0 stable back to unstable (#8118) (@philknows)
- run beacon api spec tests against v4.0.0-alpha.0 (#7965) (@nflaig)
- cleanup event handlers for import block (#7956) (@nazarhussain)
- add engine_getBlobsV2 metrics (#7854) (@KatyaRyazantseva)
- add peerDAS custody group count metric (#7938) (@KatyaRyazantseva)
- peer das lint (#7716) (@matthewkeil)
- add nextfork lodestar workflow (#7683) (@chiemerieezechukwu)
- add more logs and comments (#7460) (@twoeths)
- deps: bump cipher-base from 1.0.4 to 1.0.6 (#8241) (@dependabot[bot])
- deps: bump tmp from 0.2.1 to 0.2.4 (#8123) (@dependabot[bot])
Documentation
- add note to
--persistNetworkIdentity
for resetting ENR and cgc (#8159) (@matthewkeil) - update permalink and comment (#8134) (@matthewkeil)