Releases: prysmaticlabs/prysm
v2.0.6
v2.0.6
Happy New Year Stakers!
v2.0.6 is a small patch release with a few features enabled, improvements to memory usage, JSON API fixes, and many other great changes.
Added
- Bellatrix/Merge progress #10000 #9981 #10026 #10027 #10049 #10039 #10028 #10030 #10054 #10060 #10062 #10014 #10040 #10085 #10077 #10089 #10072
- Light client support merkle proof retrieval for beacon state finalized root and sync committees #10029
- Web3Signer support (work in progress) #10016 #10061 #10084 #10088
- Implement state management with native go structs (work in progress) #10069 #10079 #10080 #10089
- Added static analysis for mutex lock management #10066
- Add endpoint to query eth1 connections #10073 #10103
- Batch gossipsub verification enabled #10111
- Get block optimizations enabled #10106
- Batch decompression for signatures #10105
- Balance trie feature enabled #10112
Changed
- Use build time constants for field lengths. #10007 #10012 #10019 #10042
- Monitoring service logging improvements / cleanup #10013
- Renamed state v3 import alias #10022
- Spec tests passing at tag 1.1.8 #10033 #10071
- Bazel version updated to 4.2.2
- Renamed github.com/eth2-clients -> github.com/eth-clients #10057
- p2p reduce memory allocation in gossip digest calculation #10055
- Allow comma separated formatting for event topics in API requests #10052
- Update builder image from buster to bullseye #10025
- Renaming "merge" to "bellatrix" #10044
- Refactoring / code dedupication / general clean up #10081 #10090 #10074 #10093 #10101 #10065 #10104
- Update libp2p #10082
- Reduce state copy in state upgrades #10102
- Deduplicate sync committee messages from pool before retrieval #10106
Removed
- tools/deployContract: removed k8s specific logic #10075
Fixed
- Sync committee API endpoint can now be queried for future epochs #10015
- Initialize merkle layers and recompute dirty fields in beacon state proofs #10032
- Fixed data race in API calls #10050
Security
- Clean variable filepaths in validator wallet back up commands, e2e tests, and other tooling (gosec G304) #10115
v2.0.5
v2.0.5
This patch release includes several fixes, new functionality, progress on The Merge hardfork implementation, and an update to the Web UI.
Added
- Implement import keystores standard API #9924
- Added more fields to "Processed attestation aggregation" log #9937
- Incremental changes to support The Merge hardfork #9906 #9939 #9944 #9966 #9878 #9986 #9987 #9982
- Implement validator monitoring service in beacon chain node via flag
--monitor-indices
. #9933 - Added validator log to display "aggregated since launch" every 5 epochs. #9943
- Add HTTP client wrapper for interfacing with remote signer #9991 See #9994
- Update web UI to version v1.0.2 #10009.
Changed
- Refactor beacon state to allow for a single cached hasher #9922
- Default config name to "devnet" when not provided in the config yaml. #9949
- Alter erroneously capitalized error messages #9952
- Bump spec tests to version v1.1.6 #9955
- Improvements to Doppelganger check #9964
- Improvements to "grpc client connected" log. #9956
- Update libp2p to v0.15.1 #9960
- Resolve several checks from deepsource #9961
- Update go-ethereum to v1.10.13 #9967
- Update some flags from signed integer flags to unsigned flags. #9959
- Filter errored keys from slashing protection history in standard API. #9968
- Ensure slashing protection exports and key manager api work according to spec #9938
- Improve memory performance by properly allocating slice size #9977
- Typos fix #9980 #9979
- Remove unused imports #9983
- Use cashed finalized state when pruning deposits #9985
- Significant slasher improvements #9833 #9989
- Various code cleanups #9992
- Standard API improvements for keymanager API #9936 #9995
- Use safe sub64 for safer math #9993
- Fix CORS in middleware API #9999
- Add more fields to remote signer request object #10004
- Refactoring to support checkpoint or genesis origin. #9976
Deprecated
Please be advised that Prysm's package path naming will change in the next release. If you are a downstream user of Prysm (i.e. import prysm libraries into your project) then you may be impacted. Please see issue #10006.
Fixed
- Allow API requests for next sync committee. Issue #9940 fixed by #9945
- Check sync status before performing a voluntary exit. Issue #9950 fixed by #9951
- Fixed issue where historical requests for validator balances would time out by removing the 30s timeout limitation. Issue #9973 fixed by #9957.
- Add missing ssz spec tests #10003
Security
- Add justifications to gosec security finding suppression. #10005
Full Changelog: v2.0.4...v2.0.5
v2.0.4
v2.0.4
This is a small patch release to fix a performance regression in release v2.0.3.
Added
- Several changes for The Merge #9915 #9916 #9918 #9928 #9929
- More monitoring functionality for blocks and sync committees #9923 #9910
Changed
- Improvements to block proposal computation when packing deposits. #9806
- Renaming SignatureSet -> SignatureBatch #9926
Fixed
Full Changelog: v2.0.3...v2.0.4
v2.0.3
v2.0.3
This release is recommended for all users. As of October 27, 2021, you MUST run v2 or later to support the Altair hardfork.
This release also includes a major update to the web UI. Please review the v1 web UI notes here
Added
- Web v1 released #9858
- Updated Beacon API to v2.1.0 #9797
- Add validation of keystores via validator client RPC endpoint to support new web UI #9799
- GitHub actions: errcheck and gosimple lint #9729
- Event API support for
contribution_and_proof
andvoluntar_exit
events. #9779 - Validator key management standard API schema and some implementation #9817 #9886 #9863
- Add helpers for The Merge fork epoch calculation #9879
- Add cli overrides for certain constants for The Merge #9891
- Add beacon block and state structs for The Merge #9887 #9888 #9908 #9914
- Validator monitoring improvements #9898 #9899 #9901 #9921
- Cache deposits to improve deposit selection/processing #9885
- Emit warning upon empty validator slashing protection export #9909 #9919
- Add balance field trie cache and optimized hash trie root operations.
--enable-balance-trie-computation
#9793
Changed
- Updated to spectests v1.1.5 #9875
- Refactor web authentication #9740
- Added uint64 overflow protection #9807
- Sync committee pool returns empty slice instead of nil on cache miss #9808
- Improved description of datadir flag #9809
- Simplied web password requirements #9814
- Web JWT tokens no longer expire. #9813
- Updated keymanager protos #9827
- Watch and update jwt secret when auth token file updated on disk. #9810
- Update web based slashing protection export from POST to GET #9838
- Reuse helpers to validate fully populated objects. #9834
- Rename interop-cold-start to deterministic-genesis #9841
- Validate password on RPC create wallet request #9848
- Refactor for weak subjectivity sync implementation #9832
- Update naming for Atlair previous epoch attester #9840
- Remove duplicate MerkleizeTrieLeaves method. #9847
- Add explict error for validator flag checks on out of bound positions #9784
- Simplify method to check if the beacon chain client should update the justified epoch value. #9837
- Rename web UI performance endpoint to "summary" #9855
- Refactor powchain service to be more functional #9856
- Use math.MaxUint64 #9857
- Share / reused finalized state on prysm start up services #9843
- Refactor slashing protection history code packages #9873
- Improve RNG commentary #9892
- Use next slot cache in more areas of the application #9884
- Improve context aware p2p peer scoring loops #9893
- Various code clean up #9903
- Prevent redundant processing of blocks from pending queue #9904
- Enable Altair tests on e2e against prior release client #9920
- Use lazy state balance cache #9822
Deprecated
Fixed
- Allow submitting sync committee subscriptions for next period #9798
- Ignore validators without committee assignment when fetching attester duties #9780
- Return "version" field for ssz blocks in beacon API #9801
- Fixed bazel build transitions for dbg builds. Allows IDEs to hook into debugger again. #9804
- Fixed case where GetDuties RPC endpoint might return a false positive for sync committee selection for validators that have no deposited yet #9811
- Fixed validator exits in v1 method, broadcast correct object #9819
- Fix Altair individual votes endpoint #9825 #9829 #9831
- Validator performance calculations fixed #9828
- Return correct response from key management api service #9846
- Check empty genesis validators root on slashing protection data export #9849
- Fix stategen with genesis state. #9851 #9852 #9866
- Fixed multiple typos #9868
- Fix genesis state registration in interop mode #9900
- Fix network flags in slashing protection export #9905 #9907
Removed
- Prysmatic Labs' go-ethereum fork removed from build tooling. Upstream go-ethereum is now used with familiar go.mod tooling. #9725
- Removed duplicate aggergation validation p2p pipelines. #9830
- Metrics calculation removed extra condition #9836
- Removed superflous errors from peer scoring parameters registration #9894
Security
- Added another encryption key to security.txt. #9896
Full Changelog: v2.0.2...v2.0.3
v2.0.2
v2.0.2
This patch release fixes a few bugs in v2.0.0. Be sure to read the v2.0.0 release notes before updating from v1 to v2.
This release is recommended for all users. You MUST be on version v2 or later before October 27, 2021 for the Altair hardfork.
Added
- Optimizations to block proposals. Enabled with
--enable-get-block-optimizations
. See #8943, #9708 before enabling. - Beacon Standard API: register v1alpha2 endpoints #9768
Changed
- Beacon Standard API: Improved sync error messages #9750
- Beacon Standard API: Omit validators without sync duties #9756
- Beacon Standard API: Return errors for unknown state/block versions #9781
- Spec alignment: Passing spec vectors at v1.1.2 #9755
- Logs: Improved "synced block.." #9760
- Bazel: updated to v4.2.1 #9763
- E2E: more strict participation checks #9718
- Eth1data: Reduce disk i/o saving interval #9764
Deprecated
⚠️ v2 Remote slashing protection server disabled for now⚠️ #9774
Fixed
- Beacon Standard API: fetch sync committee duties for current and next period's epoch #9720 #9728
- Beacon Standard API: remove special treatment to graffiti in block results #9770
- Beacon Standard API: fix epoch calculation in sync committee duties #9767
- Doppelganger: Fix false positives #9748
- UI: Validator gRPC gateway health endpoint fixed #9747
Security
- Spec alignment: Update Eth2FastAggregateVerify to match spec #9742
- Helpers: enforce stronger slice index checks #9758
- Deposit Trie: Handle impossible non-power of 2 trie leaves #9761
- UI: Add security headers #9775
Full Changelog: v2.0.1...v2.0.2
v2.0.1
v2.0.1
This patch release fixes a few bugs in v2.0.0. Be sure to read the v2.0.0 release notes before updating from v1 to v2.
Fixed
- Updated libp2p transport library to stop metrics logging errors on windows. #9733
- Prysm's web UI assets serve properly #9732
- Eth2 api returns full validator balance rather than effective balance #9722
- Slashing protection service registered properly in validator. #9735
Security
We've updated the Prysm base docker images to a more recent build. #9727 #9674
Full Changelog: v2.0.0...v2.0.1
v2.0.0
v2.0.0
This release is the largest release of Prysm to date. v2.0.0 includes support for the upcoming Altair hard fork on the mainnet Ethereum Beacon Chain.
This release consists of 380 changes to support Altair, improve performance of phase0 beacon nodes, and various bug fixes from v1.4.4.
Upgrading From v1
Please update your beacon node to v2.0.0 prior to updating your validator. The beacon node can serve requests to a v1.4.4 validator, however a v2.0.0 validator will not start against a v1.4.4 beacon node. If you're operating a highly available beacon chain service, ensure that all of your beacon nodes are updated to v2.0.0 before starting the upgrade on your validators.
Added
- Full Altair support. Learn more about Altair.
- Added bootnodes from the Nimbus team. #9656
- Revamped slasher implementation. The slasher functionality is no longer a standalone binary. Slasher functionality is available from the beacon node with the
--slasher
flag. Note: Running the slasher has considerably increased resource requirements. Be sure to review the latest documentation before enabling this feature. This feature is experimental. #8331 - Support for standard JSON API in the beacon node. Prysm validators continue to use Prysm's API. #7510
- Configurable subnet peer requirements. Increased minimum desired peers per subnet from 4 to 6. This can be modified with
--minimum-peers-per-subnet
in the beacon node. #9657. - Support for go build on darwin_arm64 devices (Mac M1 chips). Cross compiling for darwin_arm64 is not yet supported. #9600.
- Batch verification of pubsub objects. This should improve pubsub processing performance on multithreaded machines. #9344
- Improved attestation pruning. This feature should improve block proposer performance and overall network attestation inclusion rates. Opt-out with
--disable-correctly-prune-canonical-atts
in the beacon node. #9444 - Active balance cache to improve epoch processing. Opt-out with
--disable-active-balance-cache
#9567 - Experimental database improvements to reduce history state entry space usage in the beaconchain.db. This functionality can be permanently enabled with the flag
--enable-historical-state-representation
. Enabling this feature can realize a 25% improvement in space utilization for the average user , while 70 -80% for power users(archival node operators). Note: once this feature is toggled on, it modifies the structure of the database with a migration and cannot be rolled back. This feature is experimental and should only be used in non-serving beacon nodes in case of database corruption or other critical issue. #8954
New Metrics
Beacon chain node
Metric | Description | References |
---|---|---|
p2p_message_ignored_validation_total |
Count of messages that were ignored in validation | #9538 |
beacon_current_active_validators |
Current total active validators | #9623 |
beacon_processed_deposits_total |
Total number of deposits processed | #9623 |
sync_head_state_miss |
The number of sync head state requests that are not present in the cache | #9422 |
sync_head_state_hit |
The number of sync head state requests that are present in the cache | #9422 |
total_effective_balance_cache_miss |
The number of get requests that are not present in the cache | #9456 |
total_effective_balance_cache_hit |
The number of get requests that are present in the cache | #9456 |
sync_committee_index_cache_miss_total |
The number of committee requests that aren't present in the sync committee index cache | #9317 |
sync_committee_index_cache_hit_total |
The number of committee requests that are present in the sync committee index cache | #9317 |
next_slot_cache_hit |
The number of cache hits on the next slot state cache | #8357 |
next_slot_cache_miss |
The number of cache misses on the next slot state cache | #8357 |
validator_entry_cache_hit_total |
The number of cache hits on the validator entry cache | #9155 #9310 |
validator_entry_cache_miss_total |
The number of cache misses on the validator entry cache | #9155 #9310 |
validator_entry_cache_delete_total |
The number of cache deletes on the validator entry cache | #9310 |
saved_sync_committee_message_total |
The number of saved sync committee message total | #9203 |
saved_sync_committee_contribution_total |
The number of saved sync committee contribution total | #9203 |
libp2p_peers |
Tracks the total number of libp2p peers | #9623 |
p2p_status_message_missing |
The number of attempts the connection handler rejects a peer for a missing status message | #9505 |
p2p_sync_committee_subnet_recovered_broadcasts |
The number of sync committee messages that were attempted to be broadcast with no peers on the subnet | #9390 |
p2p_sync_committee_subnet_attempted_broadcasts |
The number of sync committees that were attempted to be broadcast | #9390 |
p2p_subscribed_topic_peer_total |
The number of peers subscribed to topics that a host node is also subscribed to | #9538 |
saved_orphaned_att_total |
Count the number of times an orphaned attestation is saved | #9442 |
Changed
- Much refactoring of "util" packages into more canonical packages. Please review Prysm package structure and godocs.
- Altair object keys in beacon-chain/db/kv are prefixed with "altair". BeaconBlocks and BeaconStates are the only objects affected by database key changes for Altair. This affects any third party tooling directly querying Prysm's beaconchain.db.
- Updated Teku bootnodes. #9656
- Updated Lighthouse bootnodes. #9656
- End to end testing now collects jaeger spans #9341
- Improvements to experimental peer quality scoring. This feature is only enabled with
--enable-peer-scorer
. #8794 - Validator performance logging behavior has changed in Altair. Post-Altair hardfork has the following changes: Inclusion distance and inclusion slots will no longer be displayed. Correctly voted target will only be true if also included within 32 slots. Correctly voted head will only be true if the attestation was included in the next slot. Correctly voted source will only be true if attestation is included within 5 slots. Inactivity score will be displayed. #9589
- Increased pubsub message queue size from 256 to 600 to support larger networks and higher message volume. #9702
- The default attestation aggregation changed to the improved optimized max cover algorithm. #9684 #8365
- Prysm is passing spectests at v1.1.0 (latest available release). #9680
--subscribe-all-subnets
will subscribe to all attestation subnets and sync subnets in post-altair hard fork #9631.- "eth2" is now an illegal term. If you say it or type it then something bad might happen. #9425
- Improved cache hit ratio for validator entry cache. #9310
- Reduced memory overhead during database migrations. #9298
- Improvements to beacon state writes to database. #9291
Changed Metrics
Beacon chain node
Metric | Old Name | Description | References |
---|---|---|---|
beacon_reorgs_total |
beacon_reorg_total |
Count the number of times a beacon chain has a reorg | #9623 |
Deprecated
These flags are hidden from the help text and no longer modify the behavior of Prysm. These flags should be removed from user runtime configuration as the flags will eventually be removed entirely and Prysm will fail to start if a deleted or unknown flag is provided.
--enable-active-balance-cache
#9567--correctly-prune-canonical-atts
#9576--correctly-insert-orphaned-atts
#9575--enable-next-slot-state-cache
#9602
Removed
Note: Removed flags will block starting up with an error "flag provided but not defined:".
Please check that you are not using any of the removed flags in this section!
- Prysm's standalone slasher application (cmd/slasher) has been fully removed. Use the
--slasher
f...
v2.0.0-rc.2
Pre-release v2.0.0-rc.2
Changes
- Many bug fixes and improvements (full detailed v2 changelog coming soon!)
- Major refactoring and reorganizing of Prysm codebase.
- Further alignment with standard API and standard prometheus metrics
- Implemented Altair spec from: https://github.com/ethereum/eth2.0-specs/tree/dev/specs/altair
- Significant changes relative to the latest production release. Compare this diff for full list of changes.
To learn more about Altair: https://github.com/ethereum/annotated-spec/blob/master/altair/beacon-chain.md
Using this pre-release
- Docker images are available for beacon node and validator with the tag
v2.0.0-rc.2
. - Prysm.sh script will only use v2.0.0-rc.2 if you set the version override environment variable
USE_PRYSM_VERSION=v2.0.0-rc.2
- Build from source at commit 161a13a or tag v2.0.0-rc.2.
Prater Genesis Bootstrapping
If you have not run a Prater Prysm node yet, you will need to download the pre-generated genesis state for prater and provide the beacon node flag --genesis-state=/path/to/prater/genesis.ssz
.
The genesis.ssz state file can be found in the eth2-clients/eth2-networks repo.
Thank you all for the support!
v1.4.4
(2021-09-01)
This release has a few features enabled and a few new features for testing. Updating to this release is encouraged, but not required for mainnet validators.
Notable changes
Enabled features
- Update head timely feature is now on by default. This beacon node feature updates the "head" of the chain in a more timely manner and may result in performance or profitability improvements. If any issues are observed, you may opt out with
--disable-update-head-timely
. See #8412 and #9224. - Optimized balance updates feature is now on by default. This beacon node feature is an improved process of calculating validator balances. This feature improves performance of epoch processing, but may result in higher memory usage. If any issues are observed, you may opt out with
--disable-optimized-balance-update
. See #8743 and #9225.
New features (not enabled)
These new beacon node features are introduced behind "feature flags" as part of our normal feature testing. These flags are low risk to enable and can improve the overall health of the network. We encourage users to opt in to these features early, however, these features will be enabled by default in an upcoming release.
--correctly-insert-orphaned-atts
beacon node flag supports block construction with orphaned attestations. This feature may increase block profitability and general network attestation inclusion efficiency. See #9441 and #9442.--correctly-prune-canonical-atts
beacon node flag reduces attestation pool removal when non-canonical blocks are received. This feature may increase block profitability and general network attestation inclusion efficiency. See #9443.
Other fixes / changes
- Increased cache size for seen attestations #9476
- Limit deposit proof construction to genesis construction only #9289
- Fix initial sync stall when chain experiences extremely long period of non-finalized epochs #9452
Full list of changes below.
1.4.4 (2021-08-31)
- p2p: Return error if no ChainState found for a peer (#9502) (29d48df), closes #9502
- Add Stategen Log (#9460) (ee13040), closes #9460
- Change to Proto Check For Blocks (#9372) (7ef1912), closes #9372
- Feature/UpdateHeadTimely: cache finalized checkpoint when initial sync (#9244) (73c3272), closes #9244
- Fix Spaced Arguments for Subcommands (#9292) (d5f6d94), closes #9292
- Increase seen attestation cache sizes (#9476) (3b31348), closes #9476
- Invert Optimized Balance Update Feature (#9225) (6f4d8a9), closes #9225
- Invert Update Head Timely Flag (#9224) (d6d09a1), closes #9224
- Only Create Deposit Proofs Pre-Genesis (#9289) (485dac0), closes #9289
- Patch Initial Sync For Non Finalized Blocks (#9452) (071e692), closes #9452
- Prevent Reinsertion of Orphaned Attestations Into Pool (#9442) (3d1c83b), closes #9442
- Remove Canonical Attestations From Pool Correctly (#9444) (4b9b55f), closes #9444
- Remove float64 usage for fork choice (#9438) (364d828), closes #9438
- Update Dependencies For Prysm (#9374) (f1bd5d7), closes #9374
- Use Only Checkpoint Cache for Processing Attestations (#9282) (4afa5a8), closes #9282
v2.0.0-rc.1
Pre-release v2.0.0-rc.1
This is a required upgrade for all nodes on the Prater Testnet.
As you may have heard, Prater is upgrading to Altair at 2021-09-02 12:24:00 UTC. We are recommending a pre-release for Prater hard fork to ensure bugs and breakages do not leak into mainnet. Please DO NOT upgrade for your mainnet nodes with this release. We will have a proper release for that after stability has been ensured in the testnet.
Thank you all for the support!
Changes
- Baked in scheduled Altair upgrade on the Prater testnet at epoch 36660 (2021-09-02 12:24:00 UTC)
- Implemented Altair spec from: https://github.com/ethereum/eth2.0-specs/tree/dev/specs/altair
- Significant changes relative to the latest production release. Compare this diff for full list of changes.
To learn more about Altair: https://github.com/ethereum/annotated-spec/blob/master/altair/beacon-chain.md
Using this pre-release
- Docker images are available for beacon node and validator with the tag
v2.0.0-rc.1
. - Prysm.sh script will only use v2.0.0-rc.1 if you set the version override environment variable
USE_PRYSM_VERSION=v2.0.0-rc.1
- Build from source at commit 49dce52 or tag v2.0.0-rc.
Prater Genesis Bootstrapping
If you have not run a Prater Prysm node yet, you will need to download the pre-generated genesis state for prater and provide the beacon node flag --genesis-state=/path/to/prater/genesis.ssz
.
The genesis.ssz state file can be found in the eth2-clients/eth2-networks repo.