Releases: prysmaticlabs/prysm
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.
v2.0.0-rc.0
Pre-release v2.0.0-rc.0
This is a required upgrade for all nodes on the Pyrmont Testnet.
As you may have heard, Pyrmont is upgrading to Altair at 2021-08-19 12:00:07 UTC. We are recommending a pre-release for Pyrmont hard fork to ensure bugs and breakages do not leak into mainnet. Please DO NOT upgrade for nodes other than Pyrmont testnet. 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 Pyrmont testnet at epoch 61650 (2021-08-19 12:00:07 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.0
. - Prysm.sh script will only use v2.0.0-rc.0 if you set the version override environment variable
USE_PRYSM_VERSION=v2.0.0-rc.0
- Build from source at commit 4db77ce or tag v2.0.0-rc.
v1.4.3
(2021-08-03)
Small fix on top of v1.4.2. Please review the v1.4.1 release notes if upgrading from v1.3.x or older.
Notable changes
1.4.3 (2021-07-30)
v1.4.2
v1.4.1
(2021-07-20)
Welcome to another Prysm release! This release has many changes, fixes, and features!
This is a required release for supporting the upcoming London hardfork on Ethereum mainnet. Prysm releases prior to this version may experience warnings or errors when fetching block data from an eth1 endpoint after London is activated. These errors can lead to missed block proposals if your block requires deposits that Prysm was unable to fetch due to new changes in the London hardfork.
Where is v1.4.0?
In the last release, we accidentally pushed the git tag for v1.4.0 when creating v1.3.11. The tag was quickly removed from github and the release was successfully tagged as v1.3.11. Unfortunately, go.mod / godocs has cached the v1.4.0 tag already to point to the same commit as v1.3.11. There really isn't much of an issue here, except that pushing another v1.4.0 may cause some confusion or issues with using go.mod and go get
. So, we are simply skipping 1.4.0 and jumping to 1.4.1.
Notable changes in v1.4
- Ethereum APIs endpoints, except validator endpoints, are ready to use! See #7510 for more details of the implementation statuses.
- Go-ethereum dependency update to support London hardfork. #9157
- Validator Doppelganger verification
--enable-doppelganger
#9120 - Tooling for boltdb bucket analysis #9116
- Strict argument validation when starting Prysm processes #9129
- Improvements to prysm.sh #9072
- Improvements to client-stats #9039 (Docs link)
- Database backup permissions fix #8888
Experimental/new features to test
These features have passed our own internal testing but we'd still like to see some users feedback before we roll them out as default in a stable release.
Validator features
--attest-timely
validator can attest timely after current block processes. See #8185 for more details--enable-doppelganger
Enables the validator to perform a doppelganger check on startup
Beacon node features
--update-head-timely
Improves update head time by updating head right after state transition. Note: This feature is going to flip to "opt-out" in next release.
Prysm slasher binary deprecation
We have been communicating that the slasher is going to be deprecated in the v1.4 release. This effort has been pushed back while we work on various storage optimizations in parallel to Altair development. Expect the Prysm slasher binary will be deprecated and removed in the upcoming Prysm v2 release with Altair support. Follow the v2 tracking issue for more info #9166.
Full list of changes below.
1.4.1 (2021-07-09)
- [Feature] - API Middleware (#8926) (12403d2), closes #8926 #8904 #8922 #8924 #8925 #8942 #8944 #8937 #8938 #8925 #8942 #8944 #8937 #8938 #8960 #8963 #8966 #8984 #8998 #8970 #9007
- Add
Eth2FastAggregateVerify
(#9144) (2ae6452), closes #9144 - Add a test for e2e validator to run against prior release (#9042) (1f6a031), closes #9042
- Add Altair Protobuf Changes to Prysm (#9087) (8607166), closes #9087
- Add Better Zero Key Checks (#9022) (fb08014), closes #9022
- Add Events Streaming Endpoint for Eth2 Standard API (#9001) (4551bb4), closes #9001
- Add goimports check (#9075) (942472f), closes #9075
- add lock (#9068) (6e42f1b), closes #9068
- Add priority queue from
hf1
(#9138) (877cb9f), closes #9138 - Add priority queue tests (#9142) (1ff4605), closes #9142
- Add proposer sync contribution type (#9106) (ea34af4), closes #9106
- Add search for most profitable sync contribution (#9121) (4fb3e05), closes #9121
- Add sync committee
aggregation_bits
tags for minimal and mainnet (#9147) (466546b), closes #9147 - Adding ability to override directory permissions for db backup (#8888) (ae7e276), closes #8888
- Beacon State V2 Interface Definition With Semantic Version Paths (#9125) (b23f63a), closes #9125
- Better comments for aggregator functions (#9053) (4d1b5f4), closes #9053
- Better import alias names (#9149) (6c8fd74), closes #9149
- Block Stream V2 Protos (#9096) (8f5c083), closes #9096
- Create
ValidatorIndexOutOfRangeError
(#9035) (77bf4bd), closes #9035 - Disable No Freelist Sync In Backups (#9069) (9ee086f), closes #9069
- Do not register API Middleware with validator gateway (#9055) (fbed11b), closes #9055
- Double java heap size for buildkite (#9073) (228369e), closes #9073
- exploredb tool to display bucket contents (#9116) (cca4a8c), closes #9116
- Fix a few bugs in the API (#9099) (9eb3ff6), closes #9099
- Fix Small Type Assertion Bug in Slasher (#9061) (a747d15), closes #9061
- fixes 9029 + a few related client-stats fixes/improvements (#9039) (19ff25f)
- Go imports (#9045) (7d4418e), closes #9045
- Handle comma-separated query parameters in API requests (#9102) (43623e1), closes #9102
- Implement Doppelganger Check (#9120) (5d65ace), closes #9120
- Make Eth APIs flag name implementation agnostic (#9112) (940ce0c), closes #9112
- Make the
shared/gateway
package unaware of consuming services (#9050) (4f3c17c), closes #9050 - Move API param handling to separate file (#9101) (dd0ae1b), closes #9101
- Move b...
v1.3.11
(2021-06-16)
This release contains a fix for the validator UI as well as many other improvements/fixes.
Notable changes:
- Update web-ui to beta.4, fixes logs displayed in UI #9047
- Fix json field names to be snake_case instead of camelCase. Fixes UI display issues. #8988
- Support for Graffiti hex strings prefixed with
hex:
#8894 - Client stats graceful failure handling #8976
- Cache eviction policy for committees changed to LRU. #8996 Possibly fixes some resource spikes #8483.
- SSZ variable length bounds enforced in SSZ layer. #8936
- Small improvement to epoch processing by refactoring sqrt() call. #8945
Full list of changes below.
1.3.11 (2021-06-16)
- Add clientstats spec as a README.md (#8977) (693fdf8), closes #8977
- Add Metadata V2 Object and Interface (#8962) (91bd477), closes #8962
- Add missing finality spec tests (#8939) (2e322bd), closes #8939
- Add Nested Nil Checks To Wrapper (#8951) (6bb3cc4), closes #8951
- Block interface clean up (#8947) (276d035), closes #8947
- Capture ChainReorg, FinalizedCheckpoint, and NewHead Events in Beacon Node (#9011) (6eb0061), closes #9011
- Change To LRU from FIFO Cache (#8996) (7a6ce27), closes #8996
- Checkin Generated Protobufs and Proto Files for EthereumAPIs (#8973) (1d2fc60), closes #8973
- Client-stats: Fail gracefully when metrics are missing (#8976) (f2768c1), closes #8976
- Copy to return interface (#8950) (d5f4385), closes #8950
- Do not use proto casing in
v1alpha1
API JSON fields (#8988) (1ea042d), closes #8988 - Enhance att sig set checks (#8978) (8433a31), closes #8978
- ETH2 APIs: Handle invalid validator status as error (#8946) (e97f6cf), closes #8946
- ETH2 APIs: Implement Validator Status support (#8940) (d5ad15e), closes #8940
- ETH2 APIs: Update protos for new ethapis changes (#8920) (aa0fb05), closes #8920
- Feature/debian packages (#8872) (eb1d122), closes #8872
- Fix EthereumAPIs Mirror Script (#8986) (dd10a3a), closes #8986
- Fix Interop Mode (#8961) (8a6e2a3), closes #8961
- Fix repo name in mirror script (#8992) (833ac00), closes #8992
- Graffiti hex support (#8894) (644d5bb), closes #8894
- Improve Mirror Bash Script for EthereumAPIs (#8991) (2ee5bd1), closes #8991
- Improve performance during CheckAttesterDoubleVotes (#8927) (a958dd2), closes #8927
- Invert
attest-timely
flag (#8827) (5fe98ab), closes #8827 - Mirror EthereumAPIs Bash Script (#8980) (8d42860), closes #8980
- Move EthereumAPIs Into Prysm (#8968) (5aac06f), closes #8968
- New Proto Messages Required for Event Streams (#9010) (bb6f00f), closes #9010
- Protobuf Changes for Eth2 APIs EventSource Support (#8999) (a81c4ed), closes #8999
- Refactor attestationDelta to reuse the sqrt value of active current epoch (#8945) (7b55213), closes #8945
- regenerate ssz types w/ variable-len bounds checks (#8936) (8094c1c), closes #8936
- Remove stack trace from eth1 connection errors (#8957) (bb8625e), closes #8957
- Remove unused ClosestPowerOf2 method (#8990) (d4aa4bc), closes #8990
- Remove unused sszgen dependency (#8934) (0cbdce6), closes #8934
- Revert "Invert
attest-timely
flag" (#9044) (f5428a2), closes #9044 - Run go imports (#8995) (aa4c21d), closes #8995
- Sort imports (#8959) (638e76c), closes #8959
- Update deprecated function usages (#8953) (40b4079), closes #8953
- Update jwt-go library to fix CVE-2020-26160 (#9017) (8f90e91), closes #9017
- Update mirror-ethereumapis.sh to include committer name / email (#9009) (0d8dd8d), closes #9009
- Update prysm scripts to support client-stats, deprecate slasher (#8971) (fc898d5), closes #8971
- Update prysm.sh to support Mac M1 chip (#9000) (26c4e7b), closes #9000
- Update web-ui to beta.4 (#9047) (9fd5575), closes #9047
- Use Block Interface Across Prysm (#8918) (caf9bdb), closes #8918
- use urfave defaulting method for correct help text (#8972) (2b6c7e7), closes #8972
- Altair: new protos/state object (#8907) (ef20f2d), closes #8907