Releases: prysmaticlabs/prysm
v4.0.5
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
v4.0.4
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
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
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
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
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