Releases: prysmaticlabs/prysm
v4.0.3
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
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
v4.0.1
This is a reissuance of v4.0.0 release
This is exactly the same release as v4.0.0, but reissued to solve a checksum cache issue with golang.org's go get
proxy server.
See #12201 for more details.
💡 If you are using v4.0.0 then you do not need to upgrade.
v4.0.1
We are releasing v4.0.1
for the upcoming Capella/Shanghai ("Shapella") upgrade!
This release is mandatory for all mainnet Prsym beacon nodes and validators. The release enables Capella upgrade, scheduled on April 12, 2023, 10:27:35pm UTC
and epoch 194048. Failure to upgrade will result in your node forking off the chain and the validator losing rewards and getting penalized for being offline.
To recap, you must upgrade your mainnet beacon node and validator client to v4.0.1
before April 12, 2023, 10:27:35pm UTC
.
Please have a look below for the changes and detailed change lists.
⚠️ Breaking changes
Below are the breaking changes from v3.2.2
to v4
Breaking changes: flags removed
http-web3provider
enable-db-backup-webhook
bolt-mmap-initial-size
disable-discv5
enable-reorg-late-blocks
disable-attesting-history-db-cache
enable-vectorized-htr
enable-peer-scorer
enable-forkchoice-doubly-linked-tree
enable-back-pull
enable-duty-count-down
head-sync
enable-gossip-batch-aggregation
enable-larger-gossip-history
fallback-web3provider
disable-native-state
enable-only-blinded-beacon-blocks
ropsten
interop-genesis-state
experimental-enable-boundary-checks
disable-back-pull
disable-forkchoice-doubly-linked-tree
Breaking changes: flags deprecated
disable-peer-scorer
disable-vectorized-htr
disable-gossip-batch-aggregation
📝 All changes
Added
- Config: set mainnet capella epoch #12144
- Validator: enable proposer to reorg late block #12075 #121100
- Metric: bls-to-exec count in the operation pool #12133 #12155
- Metric: pubsub metrics racer #12178
- Metric: add late block metric #12091
- Engine-API: Implement
GetPayloadBodies
#11973 - Beacon-API: Implement
GetPayloadAttribute
SSE #12102 #12154 #12160 #12169 - Prysm CLI: add experimental flags to dev mode #12152
- Prysmctl utility: add eth1data to genesis state #12125
- Spec test: EIP4881 spec compliance tests #11754
- Spec test: forkchoice lock to fix flaskyness #12165
Changed
- Prysm: upgrade
v3
tov4
#12134 - Prysm: apply goimports to generated files #12170
- Validator: lower builder circuit breaker thresholds to 5 missed slots per epoch and updates off by 1 #12076
- Validator: reorg late block by default #12146 #12147
- Forkchoice: cleanups #12078
- Forkchoice: remove bouncing attack fix and strength equivocation discarding #12126
- Forkchoice: call FCU at 4s mark if there's no new head #12159
- Forkchoice: better locking on calls to retrieving ancestor root #12162
- Forkchoice: stricker visibility for blockchain package access #12174
- Block processing: optimizing validator balance retrieval by using epoch boundary cache #12083
- Block processing: reduce FCU calls #12091
- Block processing: increase attempted reorgs at the correct spot #12106
- Block processing: remove duplicated bls to exec message pruning #12085
- Block processing: skip hash tree root state when checking optimistic mode #12143
- Prysm-API: mark GetChainHead deprecated #12128
- Logging: add late block logs #12091
- Logging: enhancements and clean ups #12086
- Build: fix bazel remote cache upload #12108
- Build: update cross compile toolchains #12069
- Build: only build non-test targets in
hack/update-go-pbs.sh
#12101 - Build: update rules_go to v0.38.1 and go_version to 1.19.7 #12055
- Build: replace bazel pkg_tar rule with canonical @rules_pkg pkg_tar #12120
- Build: update bazel to 6.1.0 #12121
- Libp2p: updated to latest version #12096 #12132
- Libp2p: make peer scorer permanent default #12138
- Test: disable e2e slasher test #12150
- CLI: derecate the following flags #12148 #12151
Fixed
- Validator: startup deadline #12049
- Prysmctl: withdrawals fork checking logic #12130
- End-to-end test: fix flakes #12074
- End-to-end test: fix altair transition #12124
- Unit test: fix error message in #12123
Removed
V4.0.0
We are releasing v4.0.0
for the upcoming Capella/Shanghai ("Shapella") upgrade!
This release is mandatory for all mainnet Prsym beacon nodes and validators. The release enables Capella upgrade, scheduled on April 12, 2023, 10:27:35pm UTC
and epoch 194048. Failure to upgrade will result in your node forking off the chain and the validator losing rewards and getting penalized for being offline.
To recap, you must upgrade your mainnet beacon node and validator client to v4.0.0
before April 12, 2023, 10:27:35pm UTC
.
Please have a look below for the changes and detailed change lists.
⚠️ Breaking changes
Below are the breaking changes from v3.2.2
to v4
Breaking changes: flags removed
http-web3provider
enable-db-backup-webhook
bolt-mmap-initial-size
disable-discv5
enable-reorg-late-blocks
disable-attesting-history-db-cache
enable-vectorized-htr
enable-peer-scorer
enable-forkchoice-doubly-linked-tree
enable-back-pull
enable-duty-count-down
head-sync
enable-gossip-batch-aggregation
enable-larger-gossip-history
fallback-web3provider
disable-native-state
enable-only-blinded-beacon-blocks
ropsten
interop-genesis-state
experimental-enable-boundary-checks
disable-back-pull
disable-forkchoice-doubly-linked-tree
Breaking changes: flags deprecated
disable-peer-scorer
disable-vectorized-htr
disable-gossip-batch-aggregation
📝 All changes
Added
- Config: set mainnet capella epoch #12144
- Validator: enable proposer to reorg late block #12075 #121100
- Metric: bls-to-exec count in the operation pool #12133 #12155
- Metric: pubsub metrics racer #12178
- Metric: add late block metric #12091
- Engine-API: Implement
GetPayloadBodies
#11973 - Beacon-API: Implement
GetPayloadAttribute
SSE #12102 #12154 #12160 #12169 - Prysm CLI: add experimental flags to dev mode #12152
- Prysmctl utility: add eth1data to genesis state #12125
- Spec test: EIP4881 spec compliance tests #11754
- Spec test: forkchoice lock to fix flaskyness #12165
Changed
- Prysm: upgrade
v3
tov4
#12134 - Prysm: apply goimports to generated files #12170
- Validator: lower builder circuit breaker thresholds to 5 missed slots per epoch and updates off by 1 #12076
- Validator: reorg late block by default #12146 #12147
- Forkchoice: cleanups #12078
- Forkchoice: remove bouncing attack fix and strength equivocation discarding #12126
- Forkchoice: call FCU at 4s mark if there's no new head #12159
- Forkchoice: better locking on calls to retrieving ancestor root #12162
- Forkchoice: stricker visibility for blockchain package access #12174
- Block processing: optimizing validator balance retrieval by using epoch boundary cache #12083
- Block processing: reduce FCU calls #12091
- Block processing: increase attempted reorgs at the correct spot #12106
- Block processing: remove duplicated bls to exec message pruning #12085
- Block processing: skip hash tree root state when checking optimistic mode #12143
- Prysm-API: mark GetChainHead deprecated #12128
- Logging: add late block logs #12091
- Logging: enhancements and clean ups #12086
- Build: fix bazel remote cache upload #12108
- Build: update cross compile toolchains #12069
- Build: only build non-test targets in
hack/update-go-pbs.sh
#12101 - Build: update rules_go to v0.38.1 and go_version to 1.19.7 #12055
- Build: replace bazel pkg_tar rule with canonical @rules_pkg pkg_tar #12120
- Build: update bazel to 6.1.0 #12121
- Libp2p: updated to latest version #12096 #12132
- Libp2p: make peer scorer permanent default #12138
- Test: disable e2e slasher test #12150
- CLI: derecate the following flags #12148 #12151
Fixed
- Validator: startup deadline #12049
- Prysmctl: withdrawals fork checking logic #12130
- End-to-end test: fix flakes #12074
- End-to-end test: fix altair transition #12124
- Unit test: fix error message in #12123
Removed
v3.2.2
Gm! ☀️ We are excited to announce our release for upgrading Goerli testnet to Shanghai / Capella! 🚀
This release is MANDATORY for Goerli testnet. You must upgrade your Prysm beacon node and validator client to this release before Shapella hard fork time epoch=162304
or UTC=14/03/2023, 10:25:36 pm
.
This release is a low-priority for the mainnet.
This release is the same commit as v3.2.2-rc.3. If you are already running v3.2.2-rc.3, then you do not need to update your client.
Change list
Added
- Capella fork epoch #12073
- Validator client REST implementation
GetFeeRecipientByPubKey
#11991 - New end-to-end test for post-attester duties #11899
Changed
- Storing blind beacon block by default for new Prysm Database #11591
- Raise the max grpc message size to a very large value by default #12072
- Update rules docker to v0.25.0 #12054
- Update distroless base images #12061
- Update protoc-gen-go-cast to suppress tool output #12062
- Update deps for Capella #12067
- Remove gRPC fallback client from validator REST API #12051
- Prysmctl now verifies capella fork for bls to exec message change #12039
- Core block processing cleanup #12046 #12068
- Better locking design around forkchoice store #12036
- Core process sync aggregate function returns reward amount #12047
- Use Epoch boundary cache to retrieve balances #12083
- Misc end-to-end test improvements and fixes #12059
- Add slot number to proposal error log #12071
Removed
v3.2.2-rc.3
Gm! ☀️ We are excited to announce our release for upgrading Goerli testnet to Shanghai / Capella! 🚀
This release is MANDATORY for Goerli testnet. You must upgrade your Prysm beacon node and validator client to this release before Shapella hard fork time epoch=162304
or UTC=14/03/2023, 10:25:36 pm
.
This release is a low-priority for the mainnet.
Change list
Added
Capella fork epoch #12073
Validator client REST implementation GetFeeRecipientByPubKey
#11991
New end-to-end test for post-attester duties #11899
Changed
Storing blind beacon block by default for new Prysm Database #11591
Raise the max grpc message size to a very large value by default #12072
Update rules docker to v0.25.0 #12054
Update distroless base images #12061
Update protoc-gen-go-cast to suppress tool output #12062
Update deps for Capella #12067
Remove gRPC fallback client from validator REST API #12051
Prysmctl now verifies capella fork for bls to exec message change #12039
Core block processing cleanup #12046 #12068
Better locking design around forkchoice store #12036
Core process sync aggregate function returns reward amount #12047
Use Epoch boundary cache to retrieve balances #12083
Misc end-to-end test improvements and fixes #12059
Add slot number to proposal error log #12071
Removed
Remove Ropsten testnet config and feature flag #12058 #12082
Deprecate flag --interop-genesis-state
#12008
v3.2.2-rc.0
We are excited to announce a Sepolia Only Testnet release, v3.2.2-rc.0
🎉
This is a Sepolia Only Testnet release. Please only upgrade your Sepolia beacon node and validator to this release before tomorrow's Shanghai Capella hard fork time 2/28/2023, 4:04:48 AM UTC
. Please DO NOT use this release on Mainnet or any other testnets. Summary:
- This is a mandatory release for Sepolia testnet
- This is not recommended for everything else, including Mainnet and Goerli
Highlight: this release fixes the blind block processing bug when connecting with mev-boost to outsource block constructions and hardens the proposer routine when signing the builder's header.
Added
Validator: picks local vs. mev-boost block based on the highest value #11967
Validator: compare local vs. mev-boost withdrawal roots #11977 #12018
Validator: check unblinded payload root before broadcasting block #12026
Validator: beacon API REST implementations #11971 #11974 #11980
Forkchoice: reorg late block #11981 #12022 (Helpers only. The feature will be ready next release)
Web3Signer: capella support #12001
Metric: gauge for monitoring block arrival delay #11897
Test: capella end to end #11951 #11989 #11993 #12027
Changed
Validator: no longer checking signature when packing BLS changes #12021
Block processor: Prune attestations in mem pool only when head changes #11771
Block processor: state transition hardening #11962 #11968 #11975 #11964 #11992 #
Forkchoice: hardening and clean up #11945 #11961 #12010 #12040
Beacon API: cleanups #12030 #12029
Prysm API: marked old endpoints as deprecated #11997
Fixed
Validator: process blind withdrawal #11995
Validator: use mev-boost for first bellatrix block #12019
Sync: bandwidth limiter panic #11988
Beacon API: correct fork choice endpoint path #11986
Removed
WebUI endpoints #12025
v3.2.1
We are excited to announce the release of Prysm v3.2.1 🎉
This is the first release to support Capella / Shanghai. The Sepolia testnet Capella upgrade time is currently set to 2/28/2023, 4:04:48 AM UTC
. The Goerli testnet and Mainnet upgrade times are still yet to be determined. In Summary:
- This is a mandatory upgrade for Sepolia nodes and validators
- This is a recommended upgrade for Goerli and Mainnet nodes and validators
Known issues
- mev-boost, relayer, and builder support for Capella upgrade are built in but still need to be tested. Given the lack of testing infrastructure, none of the clients could test this for withdrawals testnet. There may be hiccups when using mev-boost on the Capella upgraded testnets
Added
- Capella Withdrawal support #11718 #11751 #11759 #11732 #11796 #11775 #11773 #11760 #11801 #11762 #11822 #11845 #11854 #11848 #11842 #11863 #11862 #11872 #11870 #11878 #11866 #11865 #11883 #11888 #11879 #11896 #11902 #11790 #11904 #11923 #11873 #11936 #11932 #11949 #11906 #11959
- Add Capella fork epoch for Sepolia #11979
- Various Validator client REST implementations (Part of EPF) #11671 #11731 #11757 #11772 #11784 #11785 #11786 #11816 #11827 #11824 #11826 #11812 #11800 #11875 #11835 #11893
- Various Beacon API additions #11788 #11806 #11818 #11849 #11874
- Cache Fork Digest Computation to save compute #11931
- Beacon node can bootstrap from non-genesis state (i.e bellatrix state) #11746
- Refactor bytesutil, add support for go1.20 slice to array conversions #11838
- Add Span information for attestation record save request #11742
- Matric addition #11860
- Identify invalid signature within batch verification #11582 #11741
- Support for getting consensus values from beacon config #11798
- EIP-4881: Spec implementation #11720
- Test helper to generate valid bls-to-exec message #11836
- Spec tests v1.3.0 rc.2 #11929
Changed
- Prysm CLI utility support for exit #11735
- Beacon API improvement #11789 #11947
- Prysm API get block RPC #11834
- Prysm API cleanups #11808 #11829 #11828
- Block processing cleanup #11764, #11763 #11795 #11796 #11833 #11858
- Forkchoice logging improvements #11849
- Syncing logging improvement #11851
- Validator client set event improvement for readability and error handling #11797
- Engine API implementation cleanups #11717
- End to end test improvements #11704 #11730 #11733 #11738 #11734 #11802 #11810 #11811 #11850 #11856 #11867
- Prysm CLI withdrawal ux improvement #11909
- Better log for the block that never became head #11917
Fixed
- Beacon API #11755 #11749 #11723 #11783
- Use the correct attribute if there's a payload ID cache miss #11918
- Call FCU with an attribute on non-head block #11919
- Sparse merkle trie bug fix #11778
- Waiting For Bandwidth Issue While Syncing #11853
- State Fetcher to retrieve correct epoch #11820
- Exit properly with terminal block hash #11892
- PrepareBeaconProposer API duplicating validator indexes when not persisted in DB #11912
- Multiclient end-to-end #11803
- Deep source warnings #11814
Removed
- Remove cache lookup and lock request for database boltdb transaction #11745
v3.2.0
v3.2.0
Happy New Year everyone! We are excited to announce the release of Prysm v3.2.0.
This release contains a number of great features and improvements as well as progress towards the upcoming Capella upgrade. This release also includes some API changes which are reflected in the minor version bump. If you are using mev-boost, you will need to update your prysm client to v3.2.0 before updating your mev-boost instance in the future. See flashbots/mev-boost#404 for more details.
Added
- Support for non-english mnemonic phrases in wallet creation. #11543
- Exit validator without confirmation prompt using
--force-exit
flag #11588 - Progress on Capella and eip-4844 upgrades #11566 #11596 #11601 #11614 #11618 #11624 #11634 #11638 #11644 #11646 #11655 #11647 #11656 #11657 #11661 #11662 #11660 #11658 #11631 #11686 #11688 #11684 #11689 #11690 #11687 #11683 #11713 #11716
- Added randao json endpoint.
/eth/v1/beacon/states/{state_id}/randao
#11609 #11650 #11710 #11708 - Added liveness endpoint
/eth/v1/validator/liveness/{epoch}
#11617 - Progress on adding json-api support for prysm validator #11612 #11633 #11654 #11682 #11679 #11695 #11712
- Prysmctl can now generate genesis.ssz for forks after phase0. #11677
Changed
--chain-config-file
now throws an error if used concurrently with--network
flag. #10863- Added more histogram metrics for block arrival latency times
block_arrival_latency_milliseconds
#11589 - Priority queue RetrieveByKey now uses read lock instead of write lock #11603
- Use custom types for certain ethclient requests. Fixes an issue when using prysm on gnosis chain. #11586
- Updted forkchoice endpoint
/eth/v1/debug/forkchoice
(was/eth/v1/debug/beacon/forkchoice
) #11680 - Include empty fields in builder json client. #11673
- Computing committee assignments for slots older than the oldest historical root in the beacon state is now forbidden #11722
Removed
- Deprecated protoarray tests have been removed #11607
Fixed
- Unlock pending block queue if there is any error on inserting a block #11600
- Prysmctl generate-genesis yaml file now uses the correct format #11635
- ENR serialization now correctly serializes some inputs that did not work previously #11648
- Use finalized block hash if a payload ID cache miss occurs #11653
- prysm.sh now works correctly with Mac M1 chips (it downloads darwin-arm64 binaries) #11675
- Use the correct block root for block events api #11666
- Users running a VPN should be able to make p2p dials. #11599
- Several minor typos and code cleanups #11572 #11594 #11593 #11598 #11602 #11622 #11705 #11670 #11711 #11726
Security
v3.1.2
v3.1.2
Welcome to another patch release for Prysm! This release includes a number of bug fixes and improvements to the beacon node, validator client, and prysmctl. We recommend upgrading to this release at your earliest convenience.
Added
- Timestamp field to forkchoice node json responses #11394 #11403
- Further tests to non-trivial functions of the builder service #11214
- Support for VotedFraction in forkchoice #11421
- Metrics for reorg distance and depths #11435
- Support for optimistic sync spectests #11391
- CLI flag for customizing engine endpoint timeout --engine-endpoint-timeout-seconds #11489
- Support for lodestar identification in p2p monitoring #11536
--enable-full-ssz-data-logging
to display debug ssz data on gossip messages that fail validation #11524- Progress on capella and withdrawals support #11552 #11563 #11141 #11569
- Validator exit can be performed from prysmctl #11515 #11575
- Blinded block support through the json API #11538
Changed
- Refactoring / cleanup of keymanager #11331
- Refactoring / improvements in initial sync #11344
- Forkchoice hardening #11397 #11402
- Improved log warnings when fee recipient is not set #11395
- Changed ready for merge log frequency to 1 minute #11410
- Move log
Unable to cache headers for execution client votes
to debug #11398 - Rename field in invalid pruned blocks log #11411
- Validate checkpoint slot #11396
- Return an error if marshaling invalid Uint256 #11347
- Fallback to uncached getPayload if timeout #11404
- Update bazel to 5.3.0 #11427
- godocs cleanup and other cleanups #11428
- Forkchoice track highest received root #11434
- Metrics updated block arrival time histograms #11424
- Log error and continue when proposer boost roots are missing #11459
- Do not return on error during on_tick #11463
- Do not return on error after update head #11470
- Update default RPC HTTP timeout to 30s #11487
- Improved fee recipient UX. #11307
- Produce block skips mev-boost #11488
- Builder getPayload timeout set to 3s #11413
- Make stategen aware of forkchoice #11439
- Increase verbosity of warning to error when new head cannot be determined when receiving an attestation #11514
- Provide justified balances to forkchoice #11513
- Update head continues without attestations #11503
- Migrate historical states in another goroutine to avoid blocking block execution #11501
- Made API middleware structs public #11547
- Updated web UI to v2.0.2 #11559
- Default value for
--block-batch-limit-burst-factor
changed from 10 to 2. #11546 - Vendored leaky bucket implementation with minor modifications #11560
Deprecated
--disable-native-state
flag and associated feature #11268
Removed
- Unused WithTimeout for builder client #11420
- Optimistic sync candidate check #11453
- Cleans up proto states #11445 #11561
- Protoarray implementation of forkchoice #11455
Fixed
- Block fields to return a fixed sized array rather than slice #11375
- Lost cancel in validator runner #11429
- Release held lock on error #11412
- Properly submit blinded blocks #11483
- Unwanted wrapper of gRPC status errors #11486
- Sync tests fixed and updated spectests to 1.2.0 #11498 #11492
- Prevent timeTillDuty from reporting a negative value #11512
- Don't mark /healthz as unhealthy when mev-boost relayer is down #11506
- Proposer index cache and slot is used for GetProposerDuties #11521
- Properly retrieve values for validator monitoring flag from cli #11537
- Fee recipient fixes and persistence #11540
- Handle panic when rpc client is not yet initialized #11528
- Improved comments and error messages #11550
- SSL support for multiple gRPC endpoints #11556
- Addressed some tool feedback and code complaints #11555
- Handle unaggregated attestations in the event feed #11558
- Prune / expire payload ID cache entries when using beacon json API #11568
- Payload ID cache may have missed on skip slots due to incorrect key computation #11567
Security
- Libp2p updated to v0.22.0 #11309