Skip to content

Releases: prysmaticlabs/prysm

v5.1.0

20 Aug 18:55
b8cd779
Compare
Choose a tag to compare

This release contains 171 new changes and many of these are related to Electra! Along side the Electra changes, there are nearly 100 changes related to bug fixes, feature additions, and other improvements to Prysm. Updating to this release is recommended at your convenience.

⚠️ Deprecation Notice: Removal of gRPC Gateway and Gateway Flag Renaming ⚠️

In an upcoming release, we will be deprecating the gRPC gateway and renaming several associated flags. This change will result in the removal of access to several internal APIs via REST, though the gRPC endpoints will remain unaffected. We strongly encourage systems to transition to using the beacon API endpoints moving forward. Please refer to PR #14089 for more details.

Review the full diff here:Β v5.0.4...v5.1.0

Added

Changed

  • Refactored slasher operations to their logical order #14322
  • Refactored Gwei and Wei types from math to primitives package. #14026
  • Unwrap payload bid from ExecutionData #14035
  • Change ZeroWei to a func to avoid shared ptr #14043
  • Updated go-libp2p to v0.35.2 and go-libp2p-pubsub to v0.11.0 #14060 #14192
  • Use genesis block root in epoch 1 for attester duties #14059
  • Cleanup validator client code #14048
  • Old attestations log moved to debug. "Attestation is too old to broadcast, discarding it" #14072
  • Modify ProcessEpoch not to return the state as a returned value #14069
  • Updated go-bitfield to latest release #14120
  • Use go ticker instead of timer #14134
  • process_registry_updates no longer makes a full copy of the validator set #14130 #14197
  • Validator client processes sync committee roll separately #13995
  • Use vote pointers in forkchoice to reduce memory churn #14196
  • Avoid Cloning When Creating a New Gossip Message #14201
  • Proposer filters invalid attestation signatures #14225
  • Validator now pushes proposer settings every slot #14155 #14285
  • Get all beacon committees at once #14282 #14284
  • Committee-aware attestation packing #14245

Deprecated

  • --enable-debug-rpc-endpoints is deprecated and debug rpc points are on by default. #14015

Removed

  • Removed fork specific getter functions (i.e. PbCapellaBlock, PbDenebBlock, etc) #13941

Fixed

  • Fixed debug log "upgraded stake to $fork" to only log on upgrades instead of every state transition #14316
  • Fixed nil block panic in API #14063
  • Fixed mockgen script #14068
  • Do not fail to build block when block value is unknown #14111
  • Fix prysmctl TUI when more than 20 validators were listed #14140
  • Revert peer backoff changes from #14137. This was causing some sync committee performance issues. #14148
  • Increased attestation seen cache expiration to two epochs #14156
  • Fixed slasher db disk usage leak #14151
  • fix: Multiple network flags should prevent the BN to start #14169
  • Correctly handle empty payload from GetValidatorPerformance requests #14240
  • Fix Event stream with carriage return support #14250
  • Fix panic on empty block result in REST API #14280
  • engine_getPayloadBodiesByRangeV1 - fix, adding hexutil encoding on request parameters #14314

Security

  • Go version updated to 1.22 #13965

v5.0.4

21 Jun 16:13
Compare
Choose a tag to compare

This release has many wonderful bug fixes and improvements. Some highlights include p2p peer fix for windows users, beacon API fix for retrieving blobs older than the minimum blob retention period, and improvements to initial sync by avoiding redundant blob downloads.

Updating to this release is recommended at your earliest convenience, especially for windows users.

Review the full diff here: v5.0.3...v5.0.4

Added

  • Beacon-api: broadcast blobs in the event of seen block #13830
  • P2P: Add QUIC support #13786 #13872

Changed

  • Use slices package for various slice operations #13834 #13837 #13838 #13835 #13839 #13836
  • Initsync skip local blobs #13827 #13871
  • Use read only validators in Beacon API #13873
  • Return syncing status when node is optimistic #13875
  • Upgrade the Beacon API e2e evaluator #13868
  • Don't return error that can be internally handled #13887
  • Allow consistent auth token for validator apis #13747
  • Change example.org DNS record #13904
  • Simplify prune invalid by reusing existing fork choice store call #13878
  • use [32]byte keys in the filesystem cache #13885
  • Update Libp2p Dependencies #13960
  • Parallelize Broadcasting And Processing Each Blob #13959
  • Substantial VC cleanup #13593 #14040
  • Only log error when aggregator check fails #14046
  • Update Libp2p Dependencies #14060
  • Change Attestation Log To Debug #14072
  • update codegen dep and cleanup organization #14127

Deprecated

  • Remove eip4881 flag (--disable-eip-4881) #13826

Removed

  • Remove the Goerli/Prater support #13846
  • Remove unused IsViableForCheckpoint #13879
  • Remove unused validator map copy method #13954

Fixed

  • Various typos and other cosmetic fixes #13833 #13843
  • Send correct state root with finalized event stream #13842
  • Extend Broadcast Window For Attestations #13858
  • Beacon API: Use retention period when fetching blobs #13869 #13874
  • Backfill throttling #13855
  • Use correct port for health check in Beacon API e2e evaluator #13892
  • Do not remove blobs DB in slasher. #13881
  • use time.NewTimer() to avoid possible memory leaks #13800
  • paranoid underflow protection without error handling #14044
  • Fix CommitteeAssignments to not return every validator #14039
  • Fix dependent root retrival genesis case #14053
  • Restrict Dials From Discovery #14052
  • Always close cache warm chan to prevent blocking #14080
  • Keep only the latest value in the health channel #14087

Security

  • Bump golang.org/x/net from 0.21.0 to 0.23.0 #13895

v5.0.3

04 Apr 20:27
38f208d
Compare
Choose a tag to compare

v5.0.3

Prysm v5.0.3 is a small patch release with some nice additions and bug fixes. Updating to this release is recommended for users on v5.0.0 or v5.0.1. There aren't many changes since last week's v5.0.2 so upgrading is not strictly required, but there are still improvements in this release so update if you can!

Added

  • Testing: spec test coverage tool #13718
  • Add bid value metrics #13804
  • prysmctl: Command-line interface for visualizing min/max span bucket #13748
  • Explicit Peering Agreement implementation #13773

Changed

  • Utilize next slot cache in block rewards rpc #13684
  • validator: Call GetGenesis only once when using beacon API #13796
  • Simplify ValidateAttestationTime #13813
  • Various typo / commentary improvements #13792
  • Change goodbye message from rate limited peer to debug verbosity #13819
  • Bump libp2p to v0.33.1 #13784
  • Fill in missing debug logs for blob p2p IGNORE/REJECT #13825

Fixed

  • Remove check for duplicates in pending attestation queue #13814
  • Repair finalized index issue #13831
  • Maximize Peer Capacity When Syncing #13820
  • Reject Empty Bundles #13798

Security

No security updates in this release.

v5.0.2

27 Mar 14:33
Compare
Choose a tag to compare

v5.0.2

This release has many optimizations, UX improvements, and bug fixes. Due to the number of important bug fixes and optimizations, we encourage all operators to update to v5.0.2 at their earliest convenience.

In this release, there is a notable change to the default value of --local-block-value-boost from 0 to 10. This means that the default behavior of using the builder API / mev-boost requires the builder bid to be 10% better than your local block profit. If you want to preserve the existing behavior, set --local-block-value-boost=0.

Added

  • API: Add support for sync committee selections #13633
  • blobs: call fsync between part file write and rename (feature flag --blob-save-fsync) #13652
  • Implement EIP-3076 minimal slashing protection, using a filesystem database (feature flag --enable-minimal-slashing-protection) #13360
  • Save invalid block to temp --save-invalid-block-temp #13722 #13725 #13736
  • Compute unrealized checkpoints with pcli #13692
  • Add gossip blob sidecar verification ms metric #13737
  • Backfill min slot flag (feature flag --backfill-oldest-slot) #13729
  • adds a metric to track blob sig cache lookups #13755
  • Keymanager APIs - get,post,delete graffiti #13474
  • Set default LocalBlockValueBoost to 10 #13772
  • Add bid value metrics #13804
  • REST VC metrics #13588

Changed

  • Normalized checkpoint logsΒ #13643
  • Normalize filesystem/blob logs #13644
  • Updated gomock libraries #13639
  • Use Max Request Limit in Initial Sync #13641
  • Do not Persist Startup State #13637
  • Normalize backfill logs/errors #13642
  • Unify log fields #13654
  • Do Not Compute Block Root Again #13657
  • Optimize Adding Dirty Indices #13660
  • Use a Validator Reader When Computing Unrealized Balances #13656
  • Copy Validator Field Trie #13661
  • Do not log zero sync committee messages #13662
  • small cleanup on functions: use slots.PrevSlot #13666
  • Set the log level for running on <network> as INFO. #13670
  • Employ Dynamic Cache Sizes #13640
  • VC: Improve logging in case of fatal error #13681
  • refactoring how proposer settings load into validator client #13645
  • Spectest: Unskip Merkle Proof test #13704
  • Improve logging. #13708
  • Check Unrealized Justification Balances In Spectests #13710
  • Optimize SubscribeCommitteeSubnets VC action #13702
  • Clean up unreachable code; use new(big.Int) instead of big.NewInt(0) #13715
  • Update bazel, rules_go, gazelle, and go versions #13724
  • replace receive slot with event stream #13563
  • New gossip cache size #13756
  • Use headstate for recent checkpoints #13746
  • Update spec test to official 1.4.0 #13761
  • Additional tests for KZG commitments #13758
  • Enable Configurable Mplex Timeouts #13745
  • Optimize SubmitAggregateSelectionProof VC action #13711
  • Re-design TestStartDiscV5_DiscoverPeersWithSubnets test #13766
  • Add da waited time to sync block log #13775
  • add log message if in da check at slot end #13776
  • Log da block root in hex #13787
  • Log the slot and blockroot when we deadline waiting for blobs #13774
  • Modify the algorithm of updateFinalizedBlockRoots #13486
  • Rename payloadattribute Timestamps to Timestamp #13523
  • Optimize GetDuties VC action #13789
  • docker: Add bazel target for building docker tarball #13790
  • Utilize next slot cache in block rewards rpc #13684
  • Spec test coverage report #13718
  • Refactor batch verifier for sharing across packages #13812

Removed

  • Remove unused bolt buckets #13638
  • config: Remove DOMAIN_BLOB_SIDECAR. #13706
  • Remove unused deneb code #13712
  • Clean up: remove some unused beacon state protos #13735
  • Cleaned up code in the sync package #13636
  • P2P: Simplify code #13719

Fixed

  • Slasher: Reduce surrounding/surrounded attestations processing timeΒ #13629
  • Fix blob batch verifier pointer receiver #13649
  • db/blobs: Check non-zero data is written to disk #13647
  • avoid part path collisions with mem addr entropy #13648
  • Download checkpoint sync origin blobs in init-sync #13665 #13667
  • bazel: Update aspect-build/bazel-lib to v2.5.0 #13675
  • move setting route handlers to registration from start #13676
  • Downgrade Level DB to Stable Version #13671
  • Fix failed reorg log #13679
  • Fix Data Race in Epoch Boundary #13680
  • exit blob fetching for cp block if outside retention #13686
  • Do not check parent weight on early FCU #13683
  • Fix VC DB conversion when no proposer settings is defined and add Experimental flag in the --enable-minimal-slashing-protection help. #13691
  • keymanager api: lowercase statuses #13696
  • Fix unrealized justification #13688
  • fix race condition when pinging peers #13701
  • Fix/race receive block #13700
  • Blob verification spectest #13707
  • Ignore Pubsub Messages Hitting Context Deadlines #13716
  • Use justified checkpoint from head state to build attestation #13703
  • only update head at 10 seconds when validating #13570
  • Use correct gossip validation time #13740
  • fix 1-worker underflow; lower default batch size #13734
  • handle special case of batch size=1 #13646
  • Always Set Inprogress Boolean In Cache #13750
  • Builder APIs: adding headers to post endpoint #13753
  • Rename mispelled variable #13759
  • allow blob by root within da period #13757
  • Rewrite Pruning Implementation To Handle EIP 7045 #13762
  • Set default fee recipient if tracked val fails #13768
  • validator client on rest mode has an inappropriate context deadline for events #13771
  • validator client should set beacon API endpoint in configurations #13778
  • Fix get validator endpoint for empty query parameters #13780
  • Expand Our TTL for our Message ID Cache #13770
  • fix some typos #13726
  • fix handling of goodbye messages for limited peers #13785
  • create the log file along with its parent directory if not present #12675
  • Call GetGenesis only once #13796

Security

  • Go version has been updated from 1.21.6 to 1.21.8. #13724

v5.0.1

08 Mar 21:09
Compare
Choose a tag to compare

v5.0.1

This minor patch release has some nice improvements over the recent v5.0.0 for Deneb. We have minimized this patch release to include only low risk and valuable fixes or features ahead of the upcoming network upgrade on March 13th.

Deneb is scheduled for mainnet epoch 269568 on March 13, 2024 at 01:55:35pm UTC. All operators MUST update their Prysm software to v5.0.0 or later before the upgrade in order to continue following the blockchain.

Added

  • A new flag to ensure that blobs are flushed to disk via fsync immediately after write. --blob-save-fsync #13652

Changed

  • Enforce a lower maximum batch limit value to prevent annoying peers #13641
  • Download blobs for checkpoint sync block before starting sync #13665 #13667 #13686
  • Set justified epoch to the finalized epoch in Goerli to unstuck some Prysm nodes on Goerli #13695

Fixed

  • Data race in epoch boundary cache #13680
  • "Failed reorg" log was misplaced #13679
  • Do not check parent weights on early fork choice update calls #13683
  • Compute unrealized justification with slashed validators #13688 #13710
  • Missing libxml dependency #13675

Security

Prysm version v5.0.0 or later is required to maintain participation in the network after the Deneb upgrade.

Full diff: v5.0.0...v5.0.1

v5.0.1-rc.3

07 Mar 03:20
Compare
Choose a tag to compare
v5.0.1-rc.3 Pre-release
Pre-release

Release candidate for v5.0.1, including:

  • Various fixes and improvements.

Full notes to come in the final release.
Full diff v5.0.0...v5.0.1-rc.3

v5.0.0

22 Feb 15:35
Compare
Choose a tag to compare

v5.0.0

Behold the Prysm v5 release with official support for Deneb on Ethereum mainnet!

Deneb is scheduled for mainnet epoch 269568 on March 13, 2024 at 01:55:35pm UTC. All operators MUST update their Prysm software to v5.0.0 or later before the upgrade in order to continue following the blockchain.

This release brings improvements to the backfill functionality of the beacon node to support backfilling blobs. If running a beacon node with checkpoint sync, we encourage you to test the backfilling functionality and share your feedback. Run with backfill enabled using the flag --enable-experimental-backfill.

Known Issues

  • --backfill-batch-size with a value of 1 or less breaks backfill. #13646
  • Validator client on v4.2.0 or older uses some API methods that are incompatible with beacon node v5. Ensure that you have updated the beacon node and validator client to v4.2.1 and then upgrade to v5 or update both processes at the same time to minimize downtime.

Added

API

Docker

Metrics

  • da_waited_time_milliseconds tracks total time waiting for data availablity check in ReceiveBlock
    #13534
  • blob_written, blob_disk_count, blob_disk_bytes new metrics for tracking blobs on disk #13614

Uncategorized

  • Backfill supports blob backfilling #13595
  • Add mainnet deneb fork epoch config #13601

Changed

Database

  • --clear-db and --force-clear-db flags now remove blobs as well as beaconchain.db #13605

Flags

  • EIP-4881 is now on by default. #13555

Fork Choice

  • Updates filtering logic to match spec #13464

Verbose signature verification is now on by default #13556

Metrics

  • gossip_block_arrival_milliseconds and gossip_block_verification_milliseconds measure in
    milliseconds instead of nanoseconds #13540
  • aggregate_attestations_t1 histogram buckets have been updated #13607

p2p

  • Reduce lookahead period from 8 to 4. This reduces block batch sizes during sync to account for
    larger blocks in deneb. #13599

Uncategorized

Deprecated

Flag removal

The following flags have been removed entirely:

  • --enable-reorg-late-blocks #13536
  • --disable-vectorized-htr #13537
  • --aggregate-parallel #13538
  • --build-block-parallel #13539
  • --enable-registration-cache, disable-gossip-batch-aggregation #13606
  • --safe-slots-to-import-optimistically #13624
  • --show-deposit-data #13618

Removed

API

  • Prysm gRPC slasher endpoints are removed #13594
  • Remove /eth/v1/debug/beacon/states/{state_id} #13619
  • Prysm gRPC endpoints that were marked as deprecated in v4 have been removed #13600
  • Remove /eth/v1/beacon/blocks/{block_id} #13628

Fixed

API

  • Return unaggregated if no aggregated attestations available in GetAggregateAttestation #13533
  • Fix JWT auth checks in certain API endpoints used by the web UI #13565 #13568
  • Return consensus block value in wei units #13575
  • Minor fixes in protobuf files #13512
  • Fix 500 error when requesting blobs from a block without blobs #13585
  • Handle cases were EL client is syncing and unable to provide payloads #13597
  • /eth/v1/beacon/blob_sidecars/{block_id} correctly returns an error when invalid indices are requested #13616

Fork choice

  • Fix head state fetch when proposing a failed reorg #13579
  • Fix data race in background forkchoice update call #13602

p2p

  • Correctly return "unavailable" response to peers requesting batches before the node completes
    backfill. #13587

Slasher

Uncategorized

  • Log warning if attempting to exit more than 5 validators at a time #13542
  • Do not cache inactive public keys #13581
  • Validator exits prints testnet URLs #13610 #13308
  • Fix pending block/blob zero peer edge case #13625
  • Check non-zero blob data is written to disk #13647
  • Avoid blob partial filepath collisions with mem addr entropy #13648

Security

v5.0.0 of Prysm is required to maintain participation in the network after the Deneb upgrade.

Full diff: v4.2.1...v5.0.0

v5.0.0-rc.1

22 Feb 01:53
Compare
Choose a tag to compare
v5.0.0-rc.1 Pre-release
Pre-release

Release candidate for v5.0.0, including:

  • Mainnet deneb fork config
  • Full notes to come in the final release.

Full diff v4.2.1...v5.0.0-rc.1

v5.0.0-rc.0

17 Feb 03:40
04dd60d
Compare
Choose a tag to compare
v5.0.0-rc.0 Pre-release
Pre-release

Release candidate for v5.0.0, including:

  • Mainnet deneb fork config
  • Full notes to come in the final release.

Full diff v4.2.1...v5.0.0-rc.0

v4.2.2-rc.0

06 Feb 14:53
692ebd3
Compare
Choose a tag to compare
v4.2.2-rc.0 Pre-release
Pre-release

Release candidate for v4.2.2, including:

  • Fixed SIGILL issue for older CPUs running on deneb
  • Improvements to initial sync speed

Full notes to come in the final release.

Full diff v4.2.1...v4.2.2-rc.0