Skip to content

Releases: prysmaticlabs/prysm

v4.0.8

22 Aug 20:35
Compare
Choose a tag to compare

Welcome to Prysm Release v4.0.8! This release is recommended. Highlights:

  • Parallel hashing of validator entries in the beacon state. This results in a faster hash tree root. ~3x reduction #12639
  • Parallel validations of consensus and execution checks. This results in a faster block verification #12590
  • Aggregate parallel is now the default. This results in faster attestation aggregation time if a node is subscribed to multiple beacon attestation subnets. ~3x reduction #12699
  • Better process block epoch boundary cache usages and bug fixes
  • Beacon-API endpoints optimizations and bug fixes

Added

  • Optimization: parallelize hashing for validator entries in beacon state #12639
  • Optimization: parallelize consensus & execution validation when processing beacon block #12590
  • Optimization: integrate LRU cache (above) for validator public keys #12646
  • Cache: threadsafe LRU with non-blocking reads for concurrent readers #12476
  • PCLI: add deserialization time in benchmark #12620
  • PCLI: add allocation data To benchmark #12641
  • Beacon-API: GetSyncCommitteeRewards endpoint #12633
  • Beacon-API: SSZ responses for the Publishblockv2 #12636
  • Beacon-API client: use GetValidatorPerformance #12581
  • Spec tests: mainnet withdrawals and bls spec tests #12655
  • Spec tests: random and fork transition spec tests #12681
  • Spec tests execution payload operation tests #12685
  • Metric: block gossip arrival time #12670
  • Metric: state regen duration #12672
  • Metric: validator is in the next sync committee #12650
  • New data structure: multi-value slice #12616

Changed

  • Build: update Go version to 1.20.6 #12617
  • Build: update hermetic_cc_toolchain #12631
  • Optimization: aggregate parallel is now default #12699
  • Optimization: do not perform full copies for metrics reporting #12628
  • Optimization: use GetPayloadBodies in Execution Engine Client #12630
  • Optimization: better nil check for reading validator #12677
  • Optimization: better cache update at epoch boundary #12679
  • Optimization: improve InnerShuffleList for shuffling #12690
  • Optimization: remove span for converting to indexed attestation #12687`
  • Beacon-API: optimize GetValidatorPerformance as POST #12658
  • Beacon-API: optimize /eth/v1/validator/aggregate_attestation #12643
  • Beacon-API: optimize /eth/v1/validator/contribution_and_proofs #12660
  • Beacon-API: optimize /eth/v1/validator/aggregate_and_proofs #12686
  • Beacon-API: use struct in beacon-chain/rpc/core to store dependencies #12701
  • Beacon-API: set CoreService in beaconv1alpha1.Server #12702
  • Beacon-API: use BlockProcessed event in certain endpoints #12625
  • Syncing: exit sync early with 0 peers to sync #12659
  • Cache: only call epoch boundary processing on canonical blocks #12666
  • Build: update server-side events dependency #12676
  • Refactor: slot tickers with intervals #12440
  • Logging: shift Error Logs To Debug #12739
  • Logging: clean up attestation routine logs #12653

Fixed

  • Cache: update shuffling caches at epoch boundary #12661
  • Cache: committee cache correctly for epoch + 1 #12667 #12668
  • Cache: use the correct context for UpdateCommitteeCache #12691
  • Cache: proposer-settings edge case for activating validators #12671
  • Cache: prevent the public key cache from overwhelming runtime #12697
  • Sync: correctly set optimistic status in the head when syncing #12748
  • Sync: use last optimistic status on batch #12741
  • Flag: adds local boost flag to main/usage #12615
  • Beacon-API: correct header for get block and get blinded block calls #12600
  • Beacon-API: GetValidatorPerformance endpoint #12638
  • Beacon-API: return correct historical roots in Capella state #12642
  • Beacon-API: use the correct root in consensus validation #12657
  • Prysm API: size of SyncCommitteeBits #12586
  • Mev-boost: builder gas limit fix default to 0 in some cases #12647
  • PCLI: benchmark deserialize without clone and init trie #12626
  • PCLI: state trie for HTR duration #12629
  • Metric: adding fix pending validators balance #12665
  • Metric: effective balance for unknown/pending validators #12693
  • Comment: comments when receiving block #12624
  • Comment: cleanups to blockchain pkg #12640

v4.0.7

13 Jul 19:01
58df1f1
Compare
Choose a tag to compare

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

Removed

  • Disable nil payloadid log on relayers flags #12465
  • Remove unneeded helper #12558
  • Remove forkchoice call from notify new payload #12560

V4.0.6

15 Jun 20:52
a75e78d
Compare
Choose a tag to compare

Welcome to v4.0.6 release of Prysm! This recommended release contains many essential optimizations since v4.0.5. Notable highlights:

  • Better handling of state field trie under late block scenario. This improves the next slot proposer's proposed time
  • Better utilization of next slot cache under various conditions

Important read:

1.) We use this opportunity to remind you that two different implementations of the underlying cryptographic library BLST exist.

  • portable: supports every CPU made in the modern era
  • non-portable: more performant but requires your CPU to support special instructions

Most users will want to use the "non-portable" version since most CPUs support these instructions. Our docker builds are now non-portable by default. Most users will benefit from the performance improvements. You can run with the "portable" versions if your CPU is old or unsupported. For binary distributions and to maintain backward compatibility with older versions of prysm.sh or prysm.bat, users that want to benefit from the non-portable performance improvements need to add an environment variable, like so: USE_PRYSM_MODERN=true prysm.sh beacon-chain prefix, or download the "non-portable" version of the binaries from the github repo.

2.) A peering bug that led to nodes losing peers gradually and eventually needing a restart has been patched. Nodes previously affected by it can remove the --disable-resource-manager flag from v4.0.6 onwards.

Added

  • Copy state field tries for late block #12461
  • Utilize next slot cache correctly under late block scenario #12462
  • Epoch boundary uses next slot cache #12515
  • Beacon API broadcast_validation to block publishing #12432
  • Appropriate Size for the P2P Attestation Queue #12485
  • Flag --disable-resource-manager to disable resource manager for libp2p #12438
  • Beacon RPC start and end block building time logs #12452
  • Prysmctl: output proposer settings #12181
  • Libp2p patch #12507
  • Handle trusted peers for libp2p #12492
  • Spec test v1.4.0-alpha.1 #12489

Changed

  • Use fork-choice store to validate sync message faster #12430
  • Proposer RPc unblind block workflow #12240
  • Restore flag disable-peer-scorer #12386
  • Validator import logs improvement #12429
  • Optimize zero hash comparisons in forkchoice #12458
  • Check peer threshold is met before giving up on context deadline #12446
  • Cleanup of proposer payload ID cache #12474
  • Clean up set execution data for proposer RPC #12466
  • Update Libp2p to v0.27.5 #12486
  • Always Favour Yamux for Multiplexing #12502
  • Ignore Phase0 Blocks For Monitor #12503
  • Move hash tree root to after block broadcast #12504
  • Use next slot cache for sync committee #12287
  • Log validation time for blocks #12514
  • Change update duties to handle all validators exited check #12505
  • Ignore late message log #12525

Fixed

Removed

  • SubmitblindBlock context timeout #12453
  • Defer state feed In propose block #12524

v4.0.5

22 May 19:49
Compare
Choose a tag to compare

v4.0.5

Welcome to v4.0.5 release of Prysm! This release contains many important improvements and bug fixes since v4.0.4, including significant improvements to attestation aggregation. See @potuz's notes here. This release is strongly recommended for all users.

Note: The released docker images are using the portable version of the blst cryptography library. The Prysm team will release docker images with the non-portable blst library as the default image. In the meantime, you can compile docker images with blst non-portable locally with the --define=blst_modern=true bazel flag, use the "-modern-" assets attached to releases, or set environment varaible USE_PRYSM_MODERN=true when using prysm.sh.

Added

  • Added epoch and root to "not a checkpt in forkchoice" log message #12400
  • Added cappella support for eth1voting tool #12402
  • Persist validator proposer settings in the validator db. #12354
  • Add flag to disable p2p resource management. This flag is for debugging purposes and should not be used in production for extended periods of time. Use this flag if you are experiencing significant peering issues. --disable-resource-manager #12438

Changed

  • Improved slot ticker for attestation aggregation #12377 #12412 #12417
  • Parallel block production enabled by default. Opt out with --disable-build-block-parallel if issues are suspected with this feature. #12408
  • Improve attestation aggregation by not using max cover on unaggregated attestations and not checking subgroup of previously validated signatures. #12350
  • Improve sync message processing by using forkchoice #12430 #12445

Fixed

  • Fixed --slasher flag. #12405
  • Fixed state migration for capella / bellatrix #12423
  • Fix deadlock when using --monitor-indices #12427

v4.0.4

15 May 19:27
ad749a4
Compare
Choose a tag to compare

v4.0.4

Welcome to v4.0.4 release of Prysm! This is the first full release following the recent mainnet issues and it is very important that all stakers update to this release as soon as possible.

Aside from the critical fixes for mainnet, this release contains a number of new features and other fixes since v4.0.3.

Added

  • Feature to build consensus and execution blocks in parallel. This feature has shown a noticeable reduction (~200ms) in block proposal times. Enable with --build-block-parallel #12297
  • An in memory cache for validator registration can be enabled with --enable-registration-cache. See PR description before enabling. #12316
  • Added new linters #12273 #12270 #12271
  • Improved tracing data for builder pipeline #12302 #12332
  • Improved withdrawal phrasing in validator withdrawal tooling #12306
  • Improved blinded block error message #12310 #12309
  • Added test for future slot tolerance #12344
  • Pre-populate bls pubkey cache #11482
  • Builder API support in E2E tests #12343

Changed

  • Updated spectests to v1.3 #12300
  • Cleanup duplicated code #12304
  • Updated method signature for UnrealizedJustifiedPayloadBlockHash() #12314
  • Updated k8s.io/client-go to 0.20.0 #11972
  • Removed unused method argument #12327
  • Refactored / moved some errors to different package #12329
  • Update next slot cache at an earlier point in block processing #12321
  • Use next slot cache for payload attribute #12286
  • Cleanup keymanager mock #12341
  • Update to go 1.20 #12333
  • Modify InsertFinalizedDeposits signature to return an error #12342
  • Improved statefeed initialization #12285
  • Use v1alpha1 server in block production #12336
  • Updated go generated files #12359
  • Typo corrections #12385

Fixed

  • Fixed e2e tx fuzzer nilerr lint issue #12313
  • Fixed status for pending validators with multiple deposits #12318
  • Use gwei in builder value evaluation #12291 #12370
  • Return correct error when failing to unmarshal genesis state #12325
  • Avoid double state copy in latestAncestor call #12326
  • Fix mock v1alpha1 server #12319
  • Fix committee race test #12338
  • Fix flaky validator tests #12339
  • Log correctly when the forkchoice head changed #12324
  • Filter inactive keys from mev-boost / builder API validator registration #12322 #12358
  • Save attestation to cache when calling SubmitAttestation in beacon API #12345
  • Avoid panic on nil broadcast object #12369
  • Fix initialization race #12374
  • Properly close subnet iterator #12388
  • ⚠️ Ignore untimely attestations #12387
  • Fix inverted metric #12392
  • ⚠️ Save to checkpoint cache if next state cache hits #12398

Security

This release contains some important fixes that improve the resiliency of Ethereum Consensus Layer. See #12387 and #12398.

Full Changelog: v4.0.3...v4.0.4

v4.0.4-rc.1

13 May 15:08
ad749a4
Compare
Choose a tag to compare
v4.0.4-rc.1 Pre-release
Pre-release
Save to checkpoint cache if the nsc hits (#12398)

* Save to checkpoint cache if the nsc hits

Also move the head check before the checkpoint cache check

* add unit test

v4.0.4-rc.0

12 May 18:30
b991780
Compare
Choose a tag to compare
v4.0.4-rc.0 Pre-release
Pre-release
Ignore some untimely attestations (#12387)

* Ignore some untimely attestations

* correct child slot check

* consider tips as viable for checkpoints

* deal with canonical blocks

* forkchoice unit tests

* blockchain readonly beacon state

* Ignore some untimely attestations

* correct child slot check

* consider tips as viable for checkpoints

* deal with canonical blocks

* forkchoice unit tests

* blockchain readonly beacon state

* Fix AttestationTargetState mock

* Fix ineffectual assignment lint

* Fix blockchain tests

* Fix build

* Add Nil check

* add comment on lock

---------

Co-authored-by: terence tsao <terence@prysmaticlabs.com>
Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com>

v4.0.3-hotfix

13 May 03:41
Compare
Choose a tag to compare
v4.0.3-hotfix Pre-release
Pre-release

We are announcing v4.0.3-hotfix. This release contains the necessary optimization to prevent the beacon node from high resource usage during turbulent times (as seen on May 11th and May 12th).

It is highly recommended to upgrade to this release if your node is under high resource usage.

When we receive an attestation for an old target, a node needs to regenerate the beacon state to validate the attestation. Performing several of these replays at the same time is what stresses the nodes' CPUs and bloats memory usage. A node has a cache of seen attestation targets designed to address this situation. With the increase in validator sizes and the number of this untimely attestation, this cache quickly filled and forced us to replay several times in the same state. This release contains a heuristic to filter out unviable checkpoint attestations, a node will ignore attestations if the target of the attestation is known to be old and not have been a checkpoint in any chain known to our node.

If you are running the prysm script:

For using prysm.sh: USE_PRYSM_VERSION=v4.0.3-hotfix ./prysm.sh beacon-chain
For using prysm.bat: set USE_PRYSM_VERSION=v4.0.3-hotfix prysm.bat beacon-chain

We'll have a formal point release 4.0.4 earlier next week that contains more changes from 4.0.3. We are currently testing the changes over the weekend.

v4.0.3

20 Apr 18:32
f4681fd
Compare
Choose a tag to compare

v4.0.3

Welcome to another Prysm release!

This release as a number of important fixes and is a recommended upgrade for all users. Most notably, this release contains fixes for bugs in the external block builder code path and keymanager.

Added

  • Add REST API endpoint for beacon chain client's GetChainHead #12245
  • Add prepare-all-payloads flag #12260
  • support modifying genesis.json for capella #12283
  • Add support for engine_exchangeCapabilities #12224
  • prysmctl: Add support for writing signed validator exits to disk #12262

Changed

  • Enable misspell linter & fix findings #12272

Fixed

  • Fix Panic In Builder Service #12277
  • prysmctl using the same genesis func as e2e #12268
  • Check that Builder Is Configured #12279
  • Correctly use Gwei to compare builder bid value #12290
  • Fix Broken Dependency #12293 #12294
  • Deflake TestWaitForActivation_AccountsChanged #12282
  • Fix Attester Slashing Validation In Gossip #12295
  • Keymanager fixes for bad file writes #12284
  • windows: Fix build after PR 12293 #12296

v4.0.2

13 Apr 04:11
75338dd
Compare
Choose a tag to compare

This release fixes a critical bug on Prysm interacting with mev-boost / relayer. You MUST upgrade to this release if you run Prysm with mev boost and relayer, or you will be missing block proposals during the first days after the Shapella fork while the block has bls-to-exec changes.
Post-mortem that describes this incident will be provided by the end of the week.

One of this release's main optimizations is revamping the next slot cache. It has been upgraded to be more performant across edge case re-org scenarios. This can help with the bad head attestation vote.

Minor fixes in this release address a bug that affected certain large operators querying RPC endpoints. This bug caused unexpected behavior and may have impacted the performance of affected operators. To resolve this issue, we have included a patch that ensures proper functionality when querying RPC endpoints.

Change list:

Added

  • CLI: New beacon node flag local-block-value-boost that allows the local block value to be multiplied by the boost value #12227
  • Smart caching for square root computation #12191
  • Beacon-API: Implemented Block rewards endpoint #12020
  • Beacon-API client: Implemented GetSyncStatus endpoint #12189
  • Beacon-API client: Implemented GetGenesis endpoint #12168
  • Beacon-API client: Implemented ListValidators endpoint #12228

Changed

  • Block processing: Optimize next slot cache #12233 #12247
  • Execution-API: Used unrealized justified block hash for FCU call #12196
  • CLI: Improved voluntary exit confirmation prompt #12205
  • Unit test: Unskip API tests #12222
  • End to end test: Misc improvements #12211 #12207
  • Build: Build tag to exclude mainnet genesis from prysmctl #12244
  • Dependency: Update go-ethereum to v1.11.3 #12204
  • Dependency: Update lighthouse to v4.0.1 #12204

Fixed

  • Builder: Unblind beacon block correctly with bls-to-exec changes #12263
  • Block construction: Default to local payload on error correctly #12243
  • Block construction: Default to local payload on nil value correctly #12236
  • Block processing: Fallback in update head on error #12199
  • Block processing: Add orphaned operations to the appropriate pool #12249
  • Prysm-API: Fix Deadlock in StreamChainHead #12250
  • Beacon-API: Get header error, nil summary returned from the DB #12214
  • Beacon-API: Broadcast correct slashing object #12230