Releases: prysmaticlabs/prysm
Mekong testnet release (v5.1.2)
v5.1.2-mekong
This release is based on v5.1.2 with support for the --mekong
testnet flag.
See the full diff of changes since v5.1.2.
Here are some examples for how to run this pre-release. Note that some flags are not present, see the "How to run Mekong" link below for more accurate instructions.
# Using prysm.sh
USE_PRYSM_VERSION=v5.1.2-mekong ./prysm.sh beacon-chain --mekong
# Using docker
docker run gcr.io/prysmaticlabs/prysm/beacon-chain:v5.1.2-mekong --mekong
# Build and run from source
git checkout v5.1.2-mekong
bazel run //cmd/beacon-chain --config=release -- --mekong
Links:
v5.1.3-rc.0
v5.1.3-rc.0
This is a release candidate for v5.1.3. It has some important bug fix issues from v5.1.1 and v5.1.2 releases.
We want to test the release a bit more to ensure we have fixed any further known issues and we welcome users to test this release candidate, if they desire.
Test via prysm.sh
# Set environment variable `USE_PRYSM_VERSION`
USE_PRYSM_VERSION=v5.1.3-rc.0 ./prysm.sh beacon-chain
Test via docker
# Use image tagged with v5.1.3-rc.0
docker run gcr.io/prysmaticlabs/prysm/beacon-chain:v5.1.3-rc.0
Test via source
git checkout v5.1.3-rc.0
bazel run //cmd/beacon-chain --config=release
Added
- Electra EIP6110: Queue deposit pr
- Add Bellatrix tests for light client functions.
- Add Discovery Rebooter Feature.
- Added GetBlockAttestationsV2 endpoint.
- Light client support: Consensus types for Electra
- Added SubmitPoolAttesterSlashingV2 endpoint.
- Added SubmitAggregateAndProofsRequestV2 endpoint.
- Updated the
beacon-chain/monitor
package to Electra. PR - Added ListAttestationsV2 endpoint.
- Add ability to rollback node's internal state during processing.
- Change how unsafe protobuf state is created to prevent unnecessary copies.
Changed
- Electra EIP6110: Queue deposit requests changes from consensus spec pr #3818
- reversed the boolean return on
BatchVerifyDepositsSignatures
, from need verification, to all keys successfully verified - Fix
engine_exchangeCapabilities
implementation. - Updated the default
scrape-interval
inClient-stats
to 2 minutes to accommodate Beaconcha.in API rate limits. - Switch to compounding when consolidating with source==target.
- Revert block db save when saving state fails.
- Return false from HasBlock if the block is being synced.
- Cleanup forkchoice on failed insertions.
- Use read only validator for core processing to avoid unnecessary copying.
- Use ROBlock across block processing pipeline.
- Added missing Eth-Consensus-Version headers to GetBlockAttestationsV2 and GetAttesterSlashingsV2 endpoints.
- When instantiating new validators, explicit set
Slashed
to false and moveEffectiveBalance
to match struct definition. - Updated pgo profile for beacon chain with holesky data. This improves the profile guided
optimizations in the go compiler. - Use read only state when computing the active validator list.
- Simplified
ExitedValidatorIndices
. - Simplified
EjectedValidatorIndices
. engine_newPayloadV4
,engine_getPayloadV4
are changes due to new execution request serialization decisions, PR- Use ROBlock earlier in block syncing pipeline.
- Changed the signature of
ProcessPayload
. - Only Build the Protobuf state once during serialization.
- Capella blocks are execution.
Deprecated
/eth/v1alpha1/validator/activation/stream
grpc wait for activation stream is deprecated. pr
Removed
- Removed finalized validator index cache, no longer needed.
- Removed validator queue position log on key reload and wait for activation.
Fixed
- Fixed mesh size by appending
gParams.Dhi = gossipSubDhi
- Fix skipping partial withdrawals count.
- wait for the async StreamEvent writer to exit before leaving the http handler, avoiding race condition panics pr
- Certain deb files were returning a 404 which made building new docker images without an existing
cache impossible. This has been fixed with updates to rules_oci and bazel-lib. - Fixed an issue where the length check between block body KZG commitments and the existing cache from the database was incompatible.
- Fix
--backfill-oldest-slot
handling - this flag was totally broken, the code would always backfill to the default slot pr - Fix keymanager API should return corrected error format for malformed tokens
- Fix keymanager API so that get keys returns an empty response instead of a 500 error when using an unsupported keystore.
- Small log imporvement, removing some redundant or duplicate logs
- EIP7521 - Fixes withdrawal bug by accounting for pending partial withdrawals and deducting already withdrawn amounts from the sweep balance. PR
v5.1.2
v5.1.2 hotfix release
Prysm v5.1.1 contains an updated implementation of the beacon api streaming events endpoint. This new implementation contains a bug that can cause a panic in certain conditions. The issue is difficult to reproduce reliably and we are still trying to determine the root cause, but in the meantime we are issuing a patch that recovers from the panic to prevent the node from crashing.
This only impacts the v5.1.1 release beacon api event stream endpoints. This endpoint is used by the prysm REST mode validator (a feature which requires the validator to be configured to use the beacon api intead of prysm's stock grpc endpoints) or accessory software that connects to the events api, like https://github.com/ethpandaops/ethereum-metrics-exporter
Fixed
- Recover from panics when writing the event stream #14545
v5.1.1
This release has a number of features and improvements. Most notably, the feature flag --enable-experimental-state
has been flipped to "opt out" via --disable-experimental-state
. The experimental state management design has shown significant improvements in memory usage at runtime. Updates to libp2p's gossipsub have some bandwidith stability improvements with support for IDONTWANT control messages.
π‘ This is our first release using pull request authors' entries from our CHANGELOG.md file.
β€οΈ Please give feedback in github issues or on discord.
Updating to this release is recommended at your convenience.
Full diff here: v5.1.0...v5.1.1
Added
- Aggregate and proof committee validation for Electra.
- More tests for electra field generation.
- Light client support: Implement
ComputeFieldRootsForBlockBody
. - Light client support: Add light client database changes.
- Light client support: Implement capella and deneb changes.
- Light client support: Implement
BlockToLightClientHeader
function. - Light client support: Consensus types.
- GetBeaconStateV2: add Electra case.
- Implement consensus-specs/3875.
- Tests to ensure sepolia config matches the official upstream yaml.
- HTTP endpoint for PublishBlobs.
- GetBlockV2, GetBlindedBlock, ProduceBlockV2, ProduceBlockV3: add Electra case.
- Add Electra support and tests for light client functions.
- fastssz version bump (better error messages).
- SSE implementation that sheds stuck clients. pr
Changed
- Electra: Updated interop genesis generator to support Electra.
getLocalPayload
has been refactored to enable work in ePBS branch.TestNodeServer_GetPeer
andTestNodeServer_ListPeers
test flakes resolved by iterating the whole peer list to find
a match rather than taking the first peer in the map.- Passing spectests v1.5.0-alpha.4 and v1.5.0-alpha.5.
- Beacon chain now asserts that the external builder block uses the expected gas limit.
- Electra: Add electra objects to beacon API.
- Electra: Updated block publishing beacon APIs to support Electra.
- "Submitted builder validator registration settings for custom builders" log message moved to debug level.
- config: Genesis validator root is now hardcoded in params.BeaconConfig()
grpc-gateway-host
is renamed to http-host. The old name can still be used as an alias.grpc-gateway-port
is renamed to http-port. The old name can still be used as an alias.grpc-gateway-corsdomain
is renamed to http-cors-domain. The old name can still be used as an alias.api-timeout
is changed from int flag to duration flag, default value updated.- Light client support: abstracted out the light client headers with different versions.
ApplyToEveryValidator
has been changed to prevent misuse bugs, it takes a closure that takes aReadOnlyValidator
and returns a raw pointer to aValidator
.- Removed gorilla mux library and replaced it with net/http updates in go 1.22.
- Clean up
ProposeBlock
for validator client to reduce cognitive scoring and enable further changes. - Updated k8s-io/client-go to v0.30.4 and k8s-io/apimachinery to v0.30.4
- Migrated tracing library from opencensus to opentelemetry for both the beacon node and validator.
- Refactored light client code to make it more readable and make future PRs easier.
- Update light client helper functions to reference
dev
branch of CL specs - Updated Libp2p Dependencies to allow prysm to use gossipsub v1.2 .
- Updated Sepolia bootnodes.
- Make committee aware packing the default by deprecating
--enable-committee-aware-packing
. - Moved
ConvertKzgCommitmentToVersionedHash
to theprimitives
package.
Deprecated
--disable-grpc-gateway
flag is deprecated due to grpc gateway removal.--enable-experimental-state
flag is deprecated. This feature is now on by default. Opt-out with--disable-experimental-state
.
Removed
- Removed gRPC Gateway.
- Removed unused blobs bundle cache.
- Removed consolidation signing domain from params. The Electra design changed such that EL handles consolidation signature verification.
Fixed
- Fixed early release of read lock in BeaconState.getValidatorIndex.
- Electra: resolve inconsistencies with validator committee index validation.
- Electra: build blocks with blobs.
- E2E: fixed gas limit at genesis
- Light client support: use LightClientHeader instead of BeaconBlockHeader.
- validator registration log changed to debug, and the frequency of validator registration calls are reduced
- Core: Fix process effective balance update to safe copy validator for Electra.
== nil
checks before callingIsNil()
on interfaces to prevent panics.- Core: Fixed slash processing causing extra hashing.
- Core: Fixed extra allocations when processing slashings.
- remove unneeded container in blob sidecar ssz response
- Light client support: create finalized header based on finalizedBlock's version, not attestedBlock.
- Light client support: fix light client attested header execution fields' wrong version bug.
- Testing: added custom matcher for better push settings testing.
- Registered
GetDepositSnapshot
Beacon API endpoint.
Security
No notable security updates.
v5.1.0
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.
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
- Electra work #13907 #13918 #13905 #13923 #13924 #13937 #13921 #13946 #13933 #13974 #13976 #13937 #13919 #13975 #13984 #13985 #13987 #13991 #13978 #13981 #13982 #13992 #13994 #13993 #13997 #13999 #13983 #14002 #14000 #14029 #14001 #14047 #14003 #14037 #14031 #14055 #14027 #14091 #14085 #14138 #14121 #14139 #14146 #14152 #14010 #13944 #14005 #14164 #14115 #14163 #14177 #14176 #14158 #14200 #14212 #14203 #14211 #14180 #14181 #14213 #14215 #14219 #14221 #14220 #14224 #14209 #14227 #14229 #14235 #14272
- Fork-specific consensus-types interfaces #13937 #14241 #14243 #14238 #14239 #14173 #14257
- Fuzz ssz roundtrip marshalling, cloner fuzzing #14006 #14246 #14254 #14255 #14265 #14294
- Add support for multiple beacon nodes in the REST API #13433
- Add middleware for
Content-Type
andAccept
headers #14075 #14093 - Add debug logs for proposer settings #14016
- Add tracing to beacon api package #14125
- Add support for persistent validator keys when using remote signer.
--validators-external-signer-public-keys
and--validators-external-signer-key-file
See the docs page for more info. #13682 - Add
AggregateKeyFromIndices
to beacon state to reduce memory usage when processing attestations #14178 - Add GetIndividualVotes endpoint #14198
- Implement
is_better_update
for light client #14186 - HTTP endpoint for
GetValidatorParticipation
#14261 - HTTP endpoint for
GetChainHead
#14262 - HTTP endpoint for
GetValidatorActiveSetChanges
#14264 - Check locally for min-bid and min-bid-difference #14205
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
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
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
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
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>
asINFO
. #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
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
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