Releases: prysmaticlabs/prysm
v4.2.0-rc.1
Release candidate for v4.2.0, including:
- Support for Goerli Dencun fork
- Many dencun improvements from devnets 10, 11, and 12.
Full notes to come in the final release.
Full diff https://github.com/prysmaticlabs/prysm/compare/v4.1.1..v4.2.0-rc.1
v4.2.0-rc.0
Release candidate for v4.2.0, including:
- Support for Goerli Dencun fork
- Many dencun improvements from devnets 10, 11, and 12.
Full notes to come in the final release.
Full diff https://github.com/prysmaticlabs/prysm/compare/v4.1.1..v4.2.0-rc.0
v4.1.1
This patch release includes two cherry-picked changes from the develop branch to resolve critical issues that affect a small set of users.
Fixed
- Fix improperly registered REST API endpoint for validators using Prysm's REST API with an external builder #13071
- Fix deadlock when using
--enable-experimental-state
feature #13087
Full Changelog: v4.1.0...v4.1.1
V4.1.0
Highlights
- Fundamental Deneb Support: This release lays the foundation for Deneb support, although features like backwards syncing and filesystem-based blob storage are planned for Q4 2024.
- Multi-Value Slices for Beacon State: Implemented multi-value slices to reduce the memory footprint and optimize certain processing paths. This data structure allows for storing values shared between state instances more efficiently. This feature is controller by the
--enable-experimental-state
flag. - EIP-4881 Deposit Tree: Integrated the EIP-4881 Deposit Tree into Prysm to optimize runtime block processing and production. This feature is controlled by a flag:
--enable-eip-4881
- BLST version 0.3.11: Introduced a significant improvement to the portable build's performance. The portable build now features runtime detection, automatically enabling optimized code paths if your CPU supports it.
- Multiarch Containers Preview Available: multiarch (:wave: arm64 support :wave:) containers will be offered for preview at the following locations:
- Beacon Chain: gcr.io/prylabs-dev/prysm/beacon-chain:v4.1.0
- Validator: gcr.io/prylabs-dev/prysm/validator:v4.1.0
- Please note that in the next cycle, we will exclusively use these containers at the canonical URLs.
New
EIP-4844:
Core:
- Deneb State & Block Types: New state and block types added specifically for Deneb. (#12375, #12368)
- Deneb Protobufs: Protocol Buffers designed exclusively for Deneb. (#12363)
- Deneb Engine API: Specialized API endpoints for Deneb. (#12384)
- Deneb Config/Params: Deneb-specific configurations and parameters from the deneb-integration branch. (#12783)
Blob Management:
- Blob Retention Epoch Period: Configurable retention periods for blobs. (#12941)
- Blob Arrival Gossip Metric: Metrics for blob arrivals via gossip protocol. (#12888)
- Blob Merge Function: Functionality to merge and validate saved/new blobs. (#12868)
- Blob Channel: A channel dedicated to blob processing. (#12753)
- Save Blobs to DB: Feature to save blobs to the database for subscribers. (#12734)
Logging and Validation:
- Logging for Blob Sidecar: Improved logging functionalities for Blob Sidecar. (#12883)
- Blob Commitment Count Logging: Introduced logging for blob commitment counts. (#12723)
- Blob Validation: A feature to validate blobs. (#12574)
Additional Features and Tests:
- Deneb Changes & Blobs to Builder: Deneb-specific changes and blob functionality added to the builder. (#12477)
- Deneb Blob Sidecar Events: Blob sidecar events added as part of the Deneb release. (#12928)
- KZG Commitments: Functionality to copy KZG commitments when using the builder block. (#12923)
- Deneb Validator Beacon APIs: New REST APIs specifically for the Deneb release. (#12871)
- Deneb Tests: Test cases specific to the Deneb version. (#12680, #12610)
- PublishBlockV2 for Deneb: The
publishblockv2
endpoint implemented specifically for Deneb. (#12662) - Builder Override & Builder Flow for Deneb: An override for the builder and a new RPC to handle the builder flow in Deneb. (#12601, #12554)
- SSZ Detection for Deneb: SSZ detection capabilities added for Deneb. (#12537)
- Validator Signing for Deneb: Validators can now sign Deneb blocks. (#12449)
- Deneb Upgrade Function: A function to handle the upgrade to Deneb. (#12433)
Rest of EIPs
- EIP-4788: Added support for Beacon block root in the EVM (#12570).
- EIP-7044 and EIP-7045: Implemented support for Perpetually Valid Signed Voluntary Exits and increased the max attestation inclusion slot (#12577, #12565).
Beacon API:
Note: All Beacon API work is related with moving endpoints into pure HTTP handlers. This is NOT new functionality.
Endpoints moved to HTTP:
/eth/v1/beacon/blocks
and/eth/v1/beacon/blinded_blocks
(#12827)./eth/v1/beacon/states/{state_id}/committees
(#12879)./eth/v1/config/deposit_contract
(#12872)./eth/v1/beacon/pool/sync_committees
(#12782)./eth/v1/beacon/states/{state_id}/validators
,/eth/v1/beacon/states/{state_id}/validators/{validator_id}
and/eth/v1/beacon/states/{state_id}/validator_balances
(#12887)./eth/v1/validator/duties/attester/{epoch}
,/eth/v1/validator/duties/proposer/{epoch}
and/eth/v1/validator/duties/sync/{epoch}
(#12810)./eth/v1/validator/register_validator
(#12758)./eth/v1/validator/prepare_beacon_proposer
(#12781)./eth/v1/beacon/headers
(#12817)./eth/v1/beacon/blocks/{block_id}/root
(#12716)./eth/v1/validator/attestation_data
(#12634)./eth/v1/validator/sync_committee_contribution
(#12698)./eth/v1/beacon/genesis
and/eth/v1/beacon/states/{state_id}/finality_checkpoints
(#12902)./eth/v1/node/syncing
(#12706)./eth/v1/beacon/pool/voluntary_exits
(#12777)./eth/v1/beacon/headers/{block_id}
and/eth/v1/validator/liveness/{epoch}
(#12916).
Miscellaneous:
- Comma-Separated Query Params: Support for comma-separated query parameters added to Beacon API (#12966).
- Middleware for Query Params: Middleware introduced for handling comma-separated query parameters (#12995).
- Content-Type Header: Compliance improved by adding Content-Type header to VC POST requests (#12942).
- Node Version: REST-based node version endpoint implemented (#12809).
Other additions
Protocol:
- Multi-Value Slice for Beacon State: Enhanced the beacon state by utilizing a multi-value slice. (#12549)
- EIP-4881 Deposit Tree: EIP-4881 Deposit Tree integrated into Prysm, controlled by a feature flag (#11942).
- New Engine Methods: New engine methods set as the default (#12997).
- Light Client Sync Protocol: Initiation of a 5-part light client sync protocol (#12853).
- Block Commitment Checks: Functionality to reject blocks with excessive commitments added (#12863).
State Management:
- Alloc More Items: Modified beacon-node/state to allocate an additional item during appends (#12832).
- GetParentBlockHash Helper: Refactoring of
getLocalPayloadAndBlobs
with a new helper function for fetching parent block hashes (#12951). - RW Lock for Duties: Read-Write lock mechanism introduced for managing validator duties (#12861).
Build and CI/CD Improvements:
- Manual Build Tag: A "manual" build tag introduced to expedite CI build times (#12967).
- Multiarch Docker Containers: Support for multiple architectures in Docker containers added (#12428).
Testing:
- Init-Sync DA Tests: Tests for initial sync Data Availability (DA) included (#12873).
- Fuzz List Timeout: Github workflow for fuzz testing now includes a timeout setting (#12768).
- Go Fuzzing Workflow: New Github workflow for Go fuzzing on a cron schedule (#12756).
Logging and Monitoring:
- FFG-LMD Consistency Logging: Enhanced logging for Finality Gadget LMD (FFG-LMD) consistency (#12763).
- Validator Count Endpoint: New endpoint to count the number of validators (#12752).
User Interface and Web:
- Web UI Release: Prysm Web UI v2.0.4 released with unspecified updates and improvements (#12746).
Testnet support:
- Holesky Support: Support for Holesky decompositions integrated into the codebase (#12821).
Error Handling and Responses:
- Validation Error in ForkchoiceUpdatedResponse: Included validation errors in fork choice update responses (#12828).
- Wrapped Invalid Block Error: Improved error handling for cases where an invalid block error is wrapped. (#12982).
Changed
General:
- Skip MEV-Boost Flag: Updated
GetBlock
RPC to utilizeskip mev-boost
flag (#12969). - Portable Version of BLST: Transitioned to portable BLST version as default (#12720).
- Teku Mainnet Bootnodes: Refreshed Teku mainnet bootnodes ENRs (#12962).
- Geth Version Updates: Elevated geth to version v1.13.1 for additional stability and features (#12911).
- Parallel Block Building: Deprecated sequential block building path (#13008)
Deneb-Specific Changes:
- Deneb Spectests Release: Upgraded to Deneb spectests v1.4.0-beta.2-hotfix (#12959).
- Deneb API and Builder Cleanup: Conducted clean-up activities for Deneb-specific API and builder (#12852, #12921).
- Deneb Block Versioning: Introduced changes related to Deneb produce block version 3 (#12708).
- Deneb Database Methods: Adapted database methods to accommodate Deneb (#12379).
- Unused Code Removal: Eliminated an unused function and pending blobs queue (#12920, #12913).
- Blob Sidecar Syncing: Altered behavior when value is 0 (#12892).
Code Cleanup and Refactor:
- API Types Cleanup: Reorganized API types for improved readability (#12961).
- Geth Client Headers: Simplified code for setting geth client headers (#11748).
- Bug Report Template: Revised requirements for more clarity (#12937, #12891).
Flags and Configuration:
- Safe Slots to Import Flag: Deprecated this flag for standard alignment (#12964).
- Holesky Config: Revised the Holesky configuration for new genesis (#12919).
Logging:
- Genesis State Warning: Will log a warning if the genesis state size is under 1KB (#12897).
- Debug Log Removal: Excised debug logs for cleaner output (#12836).
Miscellaneous:
- First Aggregation Timing: Default setting for first aggregation is 7 seconds post-genesis (#12876).
- Pointer Usage: Modified execution chain to use pointers, reducing copy operations (#12818).
Dependency Updates:
- Go Version Update: Updated to Go version 1.20.7 (#12707).
- Go Version Update: Updated to Go version 1.20.9 for better security. (...
v4.1.0-alpha.1
Pre-release candidate for v4.1.0 includes support for Holesky testnet.
Full Changelog: v4.0.8...v4.1.0-alpha.1
Proper change log notes to come soon...
v4.1.0-alpha.0
Pre-release candidate for v4.1.0 includes support for Holesky testnet.
Full Changelog: v4.0.8...v4.1.0-alpha.0
Proper change log notes to come soon...
v4.0.8
Welcome to Prysm Release v4.0.8! This release is recommended. Highlights:
- Parallel hashing of validator entries in the beacon state. This results in a faster hash tree root. ~3x reduction #12639
- Parallel validations of consensus and execution checks. This results in a faster block verification #12590
- Aggregate parallel is now the default. This results in faster attestation aggregation time if a node is subscribed to multiple beacon attestation subnets. ~3x reduction #12699
- Better process block epoch boundary cache usages and bug fixes
- Beacon-API endpoints optimizations and bug fixes
Added
- Optimization: parallelize hashing for validator entries in beacon state #12639
- Optimization: parallelize consensus & execution validation when processing beacon block #12590
- Optimization: integrate LRU cache (above) for validator public keys #12646
- Cache: threadsafe LRU with non-blocking reads for concurrent readers #12476
- PCLI: add deserialization time in benchmark #12620
- PCLI: add allocation data To benchmark #12641
- Beacon-API:
GetSyncCommitteeRewards
endpoint #12633 - Beacon-API: SSZ responses for the
Publishblockv2
#12636 - Beacon-API client: use
GetValidatorPerformance
#12581 - Spec tests: mainnet withdrawals and bls spec tests #12655
- Spec tests: random and fork transition spec tests #12681
- Spec tests execution payload operation tests #12685
- Metric: block gossip arrival time #12670
- Metric: state regen duration #12672
- Metric: validator is in the next sync committee #12650
- New data structure: multi-value slice #12616
Changed
- Build: update Go version to 1.20.6 #12617
- Build: update
hermetic_cc_toolchain
#12631 - Optimization: aggregate parallel is now default #12699
- Optimization: do not perform full copies for metrics reporting #12628
- Optimization: use
GetPayloadBodies
in Execution Engine Client #12630 - Optimization: better nil check for reading validator #12677
- Optimization: better cache update at epoch boundary #12679
- Optimization: improve
InnerShuffleList
for shuffling #12690 - Optimization: remove span for converting to indexed attestation #12687`
- Beacon-API: optimize
GetValidatorPerformance
as POST #12658 - Beacon-API: optimize
/eth/v1/validator/aggregate_attestation
#12643 - Beacon-API: optimize
/eth/v1/validator/contribution_and_proofs
#12660 - Beacon-API: optimize
/eth/v1/validator/aggregate_and_proofs
#12686 - Beacon-API: use struct in
beacon-chain/rpc/core
to store dependencies #12701 - Beacon-API: set
CoreService
inbeaconv1alpha1.Server
#12702 - Beacon-API: use
BlockProcessed
event in certain endpoints #12625 - Syncing: exit sync early with 0 peers to sync #12659
- Cache: only call epoch boundary processing on canonical blocks #12666
- Build: update server-side events dependency #12676
- Refactor: slot tickers with intervals #12440
- Logging: shift Error Logs To Debug #12739
- Logging: clean up attestation routine logs #12653
Fixed
- Cache: update shuffling caches at epoch boundary #12661
- Cache: committee cache correctly for epoch + 1 #12667 #12668
- Cache: use the correct context for
UpdateCommitteeCache
#12691 - Cache: proposer-settings edge case for activating validators #12671
- Cache: prevent the public key cache from overwhelming runtime #12697
- Sync: correctly set optimistic status in the head when syncing #12748
- Sync: use last optimistic status on batch #12741
- Flag: adds local boost flag to main/usage #12615
- Beacon-API: correct header for get block and get blinded block calls #12600
- Beacon-API:
GetValidatorPerformance
endpoint #12638 - Beacon-API: return correct historical roots in Capella state #12642
- Beacon-API: use the correct root in consensus validation #12657
- Prysm API: size of
SyncCommitteeBits
#12586 - Mev-boost: builder gas limit fix default to 0 in some cases #12647
- PCLI: benchmark deserialize without clone and init trie #12626
- PCLI: state trie for HTR duration #12629
- Metric: adding fix pending validators balance #12665
- Metric: effective balance for unknown/pending validators #12693
- Comment: comments when receiving block #12624
- Comment: cleanups to blockchain pkg #12640
v4.0.7
Welcome to the v4.0.7 release of Prysm! This recommended release contains many essential optimizations since v4.0.6.
Highlights:
- The validator proposal time for slot 0 has been reduced by 800ms. Writeup and PR
- The attestation aggregation time has been reduced by 400ms—roughly 75% with all subnets subscribed. Flag
--aggregate-parallel
. PR. This is only useful if running more than a dozen validator keys. The more subnets your node subscribe to, the more useful. - The usage of fork choice lock has been reduced and optimized, significantly reducing block processing time. This results in a higher proposal and attest rate. PR
- The block proposal path has been optimized with more efficient copies and a better pruning algorithm for pending deposits. PR and PR
- Validator Registration cache is enabled by default, this affects users who have used webui along with mevboost. Please review PR for details.
Note: We remind our users that there are two versions of the cryptographic library BLST, one is "portable" and less performant, and another is "non-portable" or "modern" and more performant. Most users would want to use the second one. You can set the environment variable USE_PRYSM_MODERN=true when using prysm.sh. The released docker images are using the non-portable version by default.
Added
- Optimize multiple validator status query #12487
- Track optimistic status on head #12552
- Get attestation rewards API end point #12480
- Expected withdrawals API #12519
- Validator voluntary exit endpoint #12299
- Aggregate atts using fixed pool of go routines #12553
- Use the incoming payload status instead of calling forkchoice #12559
- Add hermetic_cc_toolchain for a hermetic cc toolchain #12135
- Cache next epoch proposers at epoch boundary #12484
- Optimize Validator Roots Computation #12585
- Log Finalized Deposit Insertion #12593
- Move consensus and execution validation outside of onBlock #12589
- Add metric for ReceiveBlock #12597
- Prune Pending Deposits on Finalization #12598
- GetValidatorPerformance http endpoint #12557
- Block proposal copy Bytes Alternatively #12608
- Append Dynamic Adding Trusted Peer Apis #12531
Changed
- Do not validate merge transition block after Capella #12459
- Metric for balance displayed for public keys without validator indexes #12535
- Set blst_modern=true to be the bazel default build #12564
- Rename payloadHash to lastValidHash in setOptimisticToInvalid #12592
- Clarify sync committee message validation #12594
- Checkpoint sync ux #12584
- Registration Cache by default #12456
Fixed
- Late block task wait for initial sync #12526
- Log the right block number #12529
- Fix for keystore field name to align with EIP2335 #12530
- Fix epoch participation parsing for API #12534
- Spec checker, ensure file does not exit or error #12536
- Uint256 parsing for builder API #12540
- Fuzz target for execution payload #12541
- Contribution doc typo #12548
- Unit test
TestFieldTrie_NativeState_fieldConvertersNative
#12550 - Typo on
beacon-chain/node/node.go
#12551 - Remove single bit aggregation for aggregator #12555
- Deflake cloners_test.go #12566
- Use diff context to update proposer cache background #12571
- Update protobuf and protobuf deps #12569
- Run ineffassign for all code #12578
- Increase validator client startup proposer settings deadline #12533
- Correct log level for 'Could not send a chunked response' #12562
- Rrune invalid blocks during initial sync #12591
- Handle Epoch Boundary Misses #12579
- Bump google.golang.org/grpc from 1.40.0 to 1.53.0 #12595
- Fix bls signature batch unit test #12602
- Fix Context Cancellation for insertFinalizedDeposits #12604
- Lock before saving the poststate to db #12612
Removed
V4.0.6
Welcome to v4.0.6
release of Prysm! This recommended release contains many essential optimizations since v4.0.5
. Notable highlights:
- Better handling of state field trie under late block scenario. This improves the next slot proposer's proposed time
- Better utilization of next slot cache under various conditions
Important read:
1.) We use this opportunity to remind you that two different implementations of the underlying cryptographic library BLST exist.
- portable: supports every CPU made in the modern era
- non-portable: more performant but requires your CPU to support special instructions
Most users will want to use the "non-portable" version since most CPUs support these instructions. Our docker builds are now non-portable by default. Most users will benefit from the performance improvements. You can run with the "portable" versions if your CPU is old or unsupported. For binary distributions and to maintain backward compatibility with older versions of prysm.sh
or prysm.bat
, users that want to benefit from the non-portable performance improvements need to add an environment variable, like so: USE_PRYSM_MODERN=true prysm.sh beacon-chain
prefix, or download the "non-portable" version of the binaries from the github repo.
2.) A peering bug that led to nodes losing peers gradually and eventually needing a restart has been patched. Nodes previously affected by it can remove the --disable-resource-manager
flag from v4.0.6 onwards.
Added
- Copy state field tries for late block #12461
- Utilize next slot cache correctly under late block scenario #12462
- Epoch boundary uses next slot cache #12515
- Beacon API
broadcast_validation
to block publishing #12432 - Appropriate Size for the P2P Attestation Queue #12485
- Flag
--disable-resource-manager
to disable resource manager for libp2p #12438 - Beacon RPC start and end block building time logs #12452
- Prysmctl: output proposer settings #12181
- Libp2p patch #12507
- Handle trusted peers for libp2p #12492
- Spec test v1.4.0-alpha.1 #12489
Changed
- Use fork-choice store to validate sync message faster #12430
- Proposer RPc unblind block workflow #12240
- Restore flag
disable-peer-scorer
#12386 - Validator import logs improvement #12429
- Optimize zero hash comparisons in forkchoice #12458
- Check peer threshold is met before giving up on context deadline #12446
- Cleanup of proposer payload ID cache #12474
- Clean up set execution data for proposer RPC #12466
- Update Libp2p to v0.27.5 #12486
- Always Favour Yamux for Multiplexing #12502
- Ignore Phase0 Blocks For Monitor #12503
- Move hash tree root to after block broadcast #12504
- Use next slot cache for sync committee #12287
- Log validation time for blocks #12514
- Change update duties to handle all validators exited check #12505
- Ignore late message log #12525
Fixed
- Sandwich attack on honest reorgs #12418 #12450
- Missing config yamls for specific domains #12442
- Release lock before panic for feed #12464
- Return 500 in ``/eth/v1/node/peers` interface #12483
- Checkpoint sync uses correct slot #12447
Removed
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