Release v1.12.0
UPDATE (Dec 1, 2023)
Attn using Lodestar v1.12, we’ve discovered an issue with local block production seen on some validators. We recommend that you downgrade or continue using v1.11.3 until we’ve pushed out a hotfix release to address the issue. Thanks for your understanding!
Hey Lodestar users! We've just released v1.12.0 packed with a bunch of updates! We recommend all users to upgrade when possible and ensure to upgrade both your validator and beacon node clients together. More information below about notable changes:
produceBlockV2 builder/execution race moved from validator to beacon: You will have issues building blocks if you do not upgrade the Lodestar beacon and validator together to v1.12.0. You can continue using the --builder
flag on your validator client, but it will default to --builder.selection maxprofit
. If you do not want to use the builder on a validator that might still be hooked onto a builder enabled beacon, you may provide the --builder.selection executiononly
or skip --builder
. DVTs which are based off on only builder based block production can still continue using --builder.selection builderonly
.
Ephemery Network: v1.12 supports using the --network ephemery
flag to configure Lodestar for the Ephemery network. To see additional details, please see the PR here: #6054
IDs for JWT claims: We've added --jwtId
to allow for auth + id of Lodestar being sent to execution clients. This allows for more flexibility than the 1-1 connection between the consensus and execution clients by using multiplexers such as eleel. It is now compliant with the execution spec identified here: https://github.com/ethereum/execution-apis/blob/main/src/engine/authentication.md#jwt-claims
Swagger UI on root endpoint of REST API: If you would like to enable a REST swagger API, you can now add --rest.swaggerUI
to enable and it will be served under http://localhost:9596/documentation
Validator monitor logs: It is now possible to log validator monitor events on the beacon node as info to get detailed information about validator performance. This can be enabled by setting the --validatorMonitorLogs
flag, please see the PR for details and log examples: #6009
For Rocket Pool users: v1.12 now supports the metric used by Rocket Pool Dashboard v1.3.0 to display the time until the next attestation duty.
Restart aware doppelganger protection: There is now almost no downside to using doppelganger protection while still getting all security benefits. The only time doppelganger detection will run is if validator is imported for the first time or has not been active for more than one epoch due to a longer downtime / maintenance.
Support for q-value weighting in Accept headers: #6014
Some additional support for keymanager-API: Added validator voluntary exit endpoint (https://github.com/ethereum/keymanager-APIs/blob/master/apis/voluntary_exit.yaml) and allow graffiti configuration per validator (ethereum/keymanager-APIs#63)
Changelog
Features
- implement getStateRandao (#6072) (@scorbajio)
- allow keymanager to configure a validator pubkey utf8 graffiti (#6083) (@g11tech)
- load state from Uint8Array (#6057) (@tuyennhv)
- enable builder proposals post deneb with blobs (#5933) (@g11tech)
- add ephemery network (#6054) (@atkinsonholly)
- implement produce block v3 and move builder/execution race to beacon (#5880) (@g11tech)
- add optional id and clv to JWT claims (#6052) (@naviechan)
- add blob_sidecar sse event (#6044) (@g11tech)
- update c-kzg and use official trusted setup (#6055) (@g11tech)
- restart aware doppelganger protection (#6012) (@nflaig)
- support "input" param for verifiable tx (#6019) (@rdvorkin)
- add rated.network score to validator monitor dashboard (#6027) (@nflaig)
- support qvalue weighting in Accept headers (#6014) (@jshufro)
- add option to log validator monitor events as info (#6009) (@nflaig)
- add max activation churn limit and other deneb devnet-9 spec updates (#5958) (@dapplion)
- add logs for builder validator registrations (#5986) (@nflaig)
- improve doppelganger protection logs (#5987) (@nflaig)
- add swagger ui API explorer (#5970) (@wemeetagain)
- always try to fetch optimistic update when starting lc (#5977) (@rdvorkin)
- selectively use nodejs crypto for noise (#5900) (@wemeetagain)
- add metric for slot of next scheduled attestation duty (#5954) (@nflaig)
- simplify bootnode enr initialization (#5945) (@wemeetagain)
- download blocks as ssz (#5923) (@tuyennhv)
- keymanager API to create signed voluntary exit message (#5947) (@nflaig)
- beacon-node: network worker event latency metrics (#5800) (@matthewkeil)
- logger: remove unused trace log level (#5861) (@matthewkeil)
Bug Fixes
- correctly append LodestarError metadata in logs (#6086) (@nflaig)
- handle uncaught exceptions when getting proposer duties (#6073) (@nflaig)
- fix publishing blsToExecutionChange on post capella forks (#6070) (@g11tech)
- wrap libp2p stop call with a timeout (#6062) (@nflaig)
- skip only proofs validation on individually validated gossip blobs (#6066) (@g11tech)
- close REST API server before closing network (#6061) (@nflaig)
- remove extra white space in logs if context is empty (#6046) (@nflaig)
- the unknown block sync timeout (#6031) (@nazarhussain)
- chunkIntoN to chunk correctly (#6035) (@nazarhussain)
- remove duplicate validator registration calls (#5993) (@nflaig)
- update cache with newly discovered attester duties (#6013) (@nflaig)
- more clearly separate log and error message (#5992) (@nflaig)
- improve jsonRPC error UX for eth1 + execution (#5949) (@nazarhussain)
- run sync notifier once every slot pre-genesis (#6002) (@nflaig)
- skip validator monitoring pre-genesis (#6001) (@nflaig)
- only check doppelganger liveness for relevant epochs (#5991) (@nflaig)
- fix the validation of the forkchoice spec test (#6004) (@g11tech)
- update the github workflow to work with multiple events (#6005) (@nazarhussain)
- only concatenate non-empty api error messages (#5988) (@nflaig)
- update engine_getPayloadBodiesByHashV1 params to pass array (#5957) (@matthewkeil)
- correctly persist states based on archive epoch frequency (#5979) (@nflaig)
- update holesky genesis time (#5972) (@nflaig)
- update holesky config for new genesis (#5971) (@nflaig)
- ignore lockfiles when loading keys for voluntary exit (#5950) (@nflaig)
- epoch cache error should be treated with care in gossips validation (#5939) (@nazarhussain)
- network worker not shutting down (#5946) (@nazarhussain)
- fix breaking builder block production (#5928) (@g11tech)
- mesh peers - inclusion and churn sum by reason metrics (#5918) (@tuyennhv)
Refactoring
- shift usage to publishblock v2 endpoint, cleanup v1 post deneb (#6084) (@g11tech)
- repurpose --builder flag to alias maxprofit builder.selection and turn builder off by default (#6081) (@g11tech)
- cleanup some of the deneb todos (#6047) (@g11tech)
- compute validator monitor log level only once (#6010) (@nflaig)
- add type guard to builder pubkey filter (#5985) (@nflaig)
- restructure to tests and CI workflow to reduce CI time (#5951) (@nazarhussain)
- cleanup deneb types and use max blob commitments per block for deneb containers (#5929) (@g11tech)
Dependencies
- update mocha and tests related dependencies (#5997) (@nazarhussain)
- update typescript and lint dependencies (#5995) (@nazarhussain)
Continuous Integration
- set job status of e2e tests to passed after 15m timeout (#6017) (@nflaig)
- enable mixed beacon-validator sim tests (#5940) (@nflaig)
Tests
- move mocha to vitest for beacon-node change (#6028) (@nazarhussain)
Maintenance
- release v1.12.0 (#6091) (@philknows)
- cleanup exchange transition remanents (#6065) (@g11tech)
- fix usage of dependant where should be dependent (#6056) (@kevinheavey)
- fix typos (#6036) (@GoodDaisy)
- bump libp2p deps (#6015) (@wemeetagain)
- update persistent-merkle-tree 0.6.1 (#5969) (@tuyennhv)
- remove unconfigured panels in dashboards (#6025) (@nflaig)
- merge stable to unstable (#5996) (@wemeetagain)
- updating teku mainnet bootnodes enrs (#6003) (@lucassaldanha)
- revert the promise catch for the indices service (#6000) (@nazarhussain)
- unrelated code cleanup (#5989) (@nflaig)
- update holesky bootnode ENRs (#5982) (@nflaig)
- remove reference to sharding (#5975) (@wemeetagain)
- update to ssz 0.13.0 (#5959) (@tuyennhv)
- avoid using bigint for metrics (#5926) (@tuyennhv)
- update ssz for optional type availability (#5948) (@g11tech)
- update testcontainers package to 10.2.1 (#5944) (@nflaig)
- benchmark bls signature deserialization (#5922) (@tuyennhv)
- render eventloop lags metrics as quantiles (#5927) (@dapplion)
- merge stable to unstable (#5931) (@wemeetagain)
- add rate() to batch histogram panel (#5921) (@tuyennhv)
- merge stable to unstable (#5920) (@wemeetagain)
- track time to stable mesh metric in Grafana (#5916) (@tuyennhv)
- deps-dev: bump electron from 26.2.2 to 26.2.4 (#6023) (@dependabot[bot])
- deps-dev: bump electron from 21.4.4 to 22.3.24 (#5983) (@dependabot[bot])
- deps: bump systeminformation from 5.17.12 to 5.21.7 (#5980) (@dependabot[bot])
- docker: security upgrade grafana/grafana from 8.5.25 to 8.5.27 (#5924) (@nazarhussain)
Documentation
- add twitter link to readme (#6051) (@philknows)
- add section about metrics to style guide (#6048) (@nflaig)