github OffchainLabs/prysm v7.1.4

9 hours ago

v7.1.4 - 2026-05-22

This is a maintenance release with significant progress on the Gloas implementation alongside important production fixes and performance improvements. There are no known security issues in this release. Operators may update at their convenience.

Release highlights:

  • Gloas fork progress: PTC (payload timeliness committee) duties, payload attestation pool and gossip, proposer preferences, execution payload bid processing, builder voluntary exit handling, data column sidecar validation, observability metrics, and block proposing with P2P bids are all wired up in preparation for upcoming devnet testing.
  • Memory optimization: Validator state representation compacted from ~264 to ~128 bytes per validator, saving ~300–450 MB of heap on mainnet (~2.2M validators). This also reduces GC pressure.
  • Sync committee duties fix: Eliminated expensive state replays when computing sync committee members for the current period, which previously caused periodic CPU spikes (#16686).
  • Missed attestation fix: Newly-activated validators no longer miss their first attestation when using --enable-beacon-rest-api (#16723).
  • Monitor indices fix: Corrected head, source, and target reporting when using the --monitor-indices flag (#16801).
  • Crash fix: Resolved a nil panic in fetchOriginSidecars when the origin checkpoint block has been pruned from the DB (#16824).
  • State diffs (experimental): --enable-state-diff now supports reconstructing caches from DB via hdiff nodes. This feature is experimental and not yet recommended for production use.

Added

  • added gloas support for updated index in attestation data for gRPC and rest endpoints. [PR]
  • Add payload timeliness committee (PTC) attestation pool. [PR]
  • Add gRPC endpoints for PTC payload attestation: PayloadAttestationData and SubmitPayloadAttestation. [PR]
  • support for calling getBeaconStateV2 using pre-payload state root. [PR]
  • Added PTC duty support in DutiesV2 (ptc_slot) end-to-end, including assignment computation, role wiring, logging, and tests. [PR]
  • Validator client PTC duty actions such as signing, and publishing ptc attestations, APIs are stubbed out in this PR. [PR]
  • Add a handler for missing payloads. [PR]
  • Various modification to UpdateHead and Execution Engine paths to adapt them to Gloas. [PR]
  • replaces stub with call to grpc payload attestation apis. [PR]
  • payload_attestation_message event triggered on grpc and gossip message received. [PR]
  • Add initial Gloas observability metrics across forkchoice, blockchain, sync, payload attestation pool, validator RPC, validator client, core/gloas, and state-native. [PR]
  • gRPC endpoints for attester, proposer, and sync duties. [PR]
  • Add Gloas signed proposer preferences gossip topic, verification, cache, and P2P subscription. [PR]
  • Gloas builder voluntary exit handling logic. [PR]
  • Add gRPC endpoint SubmitSignedProposerPreferences for validators to broadcast proposer preferences. [PR]
  • Add Gloas execution payload bid gossip topic, verification, caches, and P2P subscription. [PR]
  • proposer preferences call from validator client for gloas. [PR]
  • Added support for hdiff nodes to reconstruct caches from db. Use --enable-state-diff to test this feature. [PR]
  • Use highest execution payload bid cache to select P2P bid over self-build when proposing Gloas blocks. [PR]
  • Add --disable-log-colors flag to beacon-chain and validator to suppress ANSI color codes in log output, useful when redirecting logs to a file or pipe. [PR]

Changed

  • Use InitializeFromProtoUnsafeXXX instead of InitializeFromProtoXXX when possible. [PR]
  • Performance improvement in state (MarshalSSZ): use copy() instead of byte-by-byte loop in BlockRoots, RandaoMixes, and HistoricalRoots. [PR]
  • Wire payload attestation pool into sync service and improve gossip subscriber with nil checks, structured logging, and pool insertion. [PR]
  • Implement payload attestation packing in block proposer: retrieve from pool, filter by parent slot and block root, sort deterministically, and include in Gloas blocks. [PR]
  • Remove unnecessary memory allocation while encoding in JSON at GetBeaconStateV2. [PR]
  • Removed next epoch lookahead from PTC duties. [PR]
  • Refactor Gloas data_column_sidecar gossip validation into dedicated sync and verification paths, verify against bid.blob_kzg_commitments, and dedupe by (beacon_block_root, index). [PR]
  • Return nil error when ignoring already-seen data column sidecars during gossip validation to reduce log noise. [PR]
  • Replace multi_value_slice.Slice[*ethpb.Validator] by multi_value_slice.Slice[stateutil.CompactValidator] to reduce memory usage. [PR]
  • Correct log in VerifyBlobKZGProofBatch. [PR]
  • StateByRootIfCachedNoCopy now also checks the epoch boundary state cache. [PR]
  • Use state.ReadOnlyBeaconState instead of state.BeaconState when possible. [PR]
  • gRPC for proposer preferences takes in an array in the request instead of just 1 item. [PR]
  • Include git commit hash in /eth/v1/node/version response. [PR]
  • Fix ExecutionPayloadEnvelopesByRange to only serve canonical payloads by walking the ParentBlockHash chain backward from a successor block. [PR]
  • Add ParentBlockHash field to BlindedExecutionPayloadEnvelope proto to enable the backward walk without loading full blocks. [PR]
  • Add block hash indexing for BlindedExecutionPayloadEnvelope in DB. [PR]
  • Pre-allocate validatorKeys slice in insertValidatorHashes. [PR]
  • changed grpc GetDutiesV2 to return proposer duties post fulu via the endpoint. [PR]
  • GetSyncCommitteeDuties now fetches the state at the current epoch for current and next-period requests to avoid expensive state replays. [PR]
  • getFCUArgs: skip payload attribute computation when not in regular sync, since the FCU is never sent to the engine in that case. [PR]
  • Update go-ethereum to v1.17.3. [PR]
  • pingHandler: Use service context instead of background context. [PR]
  • monitor: Move the Processed aggregated attestation log to debug. [PR]
  • Lower log level from Error to Debug when the committee cache cannot be updated in ActiveValidatorIndices. [PR]

Fixed

  • Fix file descriptor leaks in CopyFile: close both source and destination files with deferred close. [PR]
  • Fix unclosed HTTP response bodies and file descriptors in E2E test infrastructure. [PR]
  • Allow GET /eth/v1/beacon/execution_payload_envelope/{block_root} to resolve standard beacon block IDs such as slots and head, instead of requiring only a hex block root. [PR]
  • payload attestation should only need to consume on insert. [PR]
  • Fix spurious "Head changed due to attestations" log firing every tick for pre-Gloas (Fulu) blocks. [PR]
  • changed /eth/v1/beacon/execution_payload_envelope/{block_root} to /eth/v1/beacon/execution_payload_envelope/{block_id} defined in beacon apis. [PR]
  • Fix TestProcessPendingDepositsMultiplesSameDeposits to properly test that duplicate pending deposits for the same key top up a single validator instead of creating duplicates. [PR]
  • Fix forkchoice balance underflow when attestation slot changes across epochs for the same head block. [PR]
  • Use read-only validator accessor in IsPayloadTimelyCommittee. [PR]
  • Prevent spurious full=true head at the Fulu→Gloas fork boundary when the first Gloas block has an empty payload variant. [PR]
  • Proposer uses correct payload content lookup root to retrieve pre-state in Gloas. [PR]
  • Reject or ignore index-1 attestations when the execution payload for the attested block is invalid or has not been seen. [PR]
  • Fix forkchoice safe/finalized hash to use canonical payload status instead of blindly preferring the full node. [PR]
  • Fix forkchoice balance underflow caused by f.balances drifting when justified balances change between vote rotations. [PR]
  • Validator Client halts duties until selection call is finished in DV. [PR]
  • Record payload id in the cache. [PR]
  • Fix logging level bug for non-text formats. [PR]
  • Fix flaky TestVerifyConnectivity by using a local TCP listener instead of an external Google IP. [PR]
  • Fix Gloas payload attributes to use PayloadExpectedWithdrawals from state when parent block is empty, preventing withdrawal mismatch errors in execution payload envelope verification. [PR]
  • Invert execution_payment gossip validation for execution_payload_bid to correctly reject bids with non-zero execution_payment. [PR]
  • fix fall back case for head even on previousDutyDependentRoot equal to zero hash. [PR]
  • Fixed StateByRoot to behave correctly on Gloas. [PR]
  • Fixed missed first attestation for newly-activated validators when the validator client runs with --enable-beacon-rest-api. [PR]
  • Fix correct head, source and target behaviour when using the --monitor-indices flag. [PR]
  • Fix nil interface panic in fetchOriginSidecars when the origin checkpoint block has been pruned from the DB. [PR]

Don't miss a new prysm release

NewReleases is sending notifications on new releases.