Welcome to the v4.0.7 release of Prysm! This recommended release contains many essential optimizations since v4.0.6.
Highlights:
- The validator proposal time for slot 0 has been reduced by 800ms. Writeup and PR
- The attestation aggregation time has been reduced by 400ms—roughly 75% with all subnets subscribed. Flag
--aggregate-parallel
. PR. This is only useful if running more than a dozen validator keys. The more subnets your node subscribe to, the more useful. - The usage of fork choice lock has been reduced and optimized, significantly reducing block processing time. This results in a higher proposal and attest rate. PR
- The block proposal path has been optimized with more efficient copies and a better pruning algorithm for pending deposits. PR and PR
- Validator Registration cache is enabled by default, this affects users who have used webui along with mevboost. Please review PR for details.
Note: We remind our users that there are two versions of the cryptographic library BLST, one is "portable" and less performant, and another is "non-portable" or "modern" and more performant. Most users would want to use the second one. You can set the environment variable USE_PRYSM_MODERN=true when using prysm.sh. The released docker images are using the non-portable version by default.
Added
- Optimize multiple validator status query #12487
- Track optimistic status on head #12552
- Get attestation rewards API end point #12480
- Expected withdrawals API #12519
- Validator voluntary exit endpoint #12299
- Aggregate atts using fixed pool of go routines #12553
- Use the incoming payload status instead of calling forkchoice #12559
- Add hermetic_cc_toolchain for a hermetic cc toolchain #12135
- Cache next epoch proposers at epoch boundary #12484
- Optimize Validator Roots Computation #12585
- Log Finalized Deposit Insertion #12593
- Move consensus and execution validation outside of onBlock #12589
- Add metric for ReceiveBlock #12597
- Prune Pending Deposits on Finalization #12598
- GetValidatorPerformance http endpoint #12557
- Block proposal copy Bytes Alternatively #12608
- Append Dynamic Adding Trusted Peer Apis #12531
Changed
- Do not validate merge transition block after Capella #12459
- Metric for balance displayed for public keys without validator indexes #12535
- Set blst_modern=true to be the bazel default build #12564
- Rename payloadHash to lastValidHash in setOptimisticToInvalid #12592
- Clarify sync committee message validation #12594
- Checkpoint sync ux #12584
- Registration Cache by default #12456
Fixed
- Late block task wait for initial sync #12526
- Log the right block number #12529
- Fix for keystore field name to align with EIP2335 #12530
- Fix epoch participation parsing for API #12534
- Spec checker, ensure file does not exit or error #12536
- Uint256 parsing for builder API #12540
- Fuzz target for execution payload #12541
- Contribution doc typo #12548
- Unit test
TestFieldTrie_NativeState_fieldConvertersNative
#12550 - Typo on
beacon-chain/node/node.go
#12551 - Remove single bit aggregation for aggregator #12555
- Deflake cloners_test.go #12566
- Use diff context to update proposer cache background #12571
- Update protobuf and protobuf deps #12569
- Run ineffassign for all code #12578
- Increase validator client startup proposer settings deadline #12533
- Correct log level for 'Could not send a chunked response' #12562
- Rrune invalid blocks during initial sync #12591
- Handle Epoch Boundary Misses #12579
- Bump google.golang.org/grpc from 1.40.0 to 1.53.0 #12595
- Fix bls signature batch unit test #12602
- Fix Context Cancellation for insertFinalizedDeposits #12604
- Lock before saving the poststate to db #12612