OffchainLabs/prysm - v7.1.4 New

Published: May 22, 2026

Release Summary

Prysm version 7.1.4 is a maintenance release that introduces significant progress on the upcoming Gloas fork implementation, alongside important performance improvements and production fixes. Node operators can update at their convenience.

Gloas Fork Preparation

This release makes substantial headway in preparing for the Gloas hard fork (ePBS), with many core components now wired up in preparation for devnet testing. Key advancements include:

Performance and Optimizations

Key Fixes

Other Improvements

Release Notes

## [v7.1.4](https://github.com/prysmaticlabs/prysm/compare/v7.1.3...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](https://github.com/OffchainLabs/prysm/issues/16686)).
- **Missed attestation fix**: Newly-activated validators no longer miss their first attestation when using `--enable-beacon-rest-api` ([#16723](https://github.com/OffchainLabs/prysm/issues/16723)).
- **Monitor indices fix**: Corrected head, source, and target reporting when using the `--monitor-indices` flag ([#16801](https://github.com/OffchainLabs/prysm/issues/16801)).
- **Crash fix**: Resolved a nil panic in `fetchOriginSidecars` when the origin checkpoint block has been pruned from the DB ([#16824](https://github.com/OffchainLabs/prysm/issues/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]](https://github.com/prysmaticlabs/prysm/pull/16391)
- Add payload timeliness committee (PTC) attestation pool. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16486)
- Add gRPC endpoints for PTC payload attestation: PayloadAttestationData and SubmitPayloadAttestation. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16487)
- support for calling `getBeaconStateV2` using pre-payload state root. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16466)
- Added PTC duty support in DutiesV2 (`ptc_slot`) end-to-end, including assignment computation, role wiring, logging, and tests. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16489)
- Validator client PTC duty actions such as signing, and publishing ptc attestations, APIs are stubbed out in this PR. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16407)
- Add a handler for missing payloads. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16460)
- Various modification to UpdateHead and Execution Engine paths to adapt them to Gloas. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16459)
- replaces stub with call to grpc payload attestation apis. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16504)
- payload_attestation_message event triggered on grpc and gossip message received. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16506)
- Add initial Gloas observability metrics across forkchoice, blockchain, sync, payload attestation pool, validator RPC, validator client, core/gloas, and state-native. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16519)
- gRPC endpoints for attester, proposer, and sync duties. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16416)
- Add Gloas signed proposer preferences gossip topic, verification, cache, and P2P subscription. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16537)
- Gloas builder voluntary exit handling logic. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16527)
- Add gRPC endpoint `SubmitSignedProposerPreferences` for validators to broadcast proposer preferences. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16538)
- Add Gloas execution payload bid gossip topic, verification, caches, and P2P subscription. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16539)
- proposer preferences call from validator client for gloas. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16548)
- Added support for hdiff nodes to reconstruct caches from db. Use `--enable-state-diff` to test this feature. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16389)
- Use highest execution payload bid cache to select P2P bid over self-build when proposing Gloas blocks. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16577)
- 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]](https://github.com/prysmaticlabs/prysm/pull/16574)

### Changed

- Use `InitializeFromProtoUnsafeXXX` instead of `InitializeFromProtoXXX` when possible. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16420)
- Performance improvement in state (MarshalSSZ): use copy() instead of byte-by-byte loop in BlockRoots, RandaoMixes, and HistoricalRoots. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16483)
- Wire payload attestation pool into sync service and improve gossip subscriber with nil checks, structured logging, and pool insertion. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16492)
- 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]](https://github.com/prysmaticlabs/prysm/pull/16493)
- Remove unnecessary memory allocation while encoding in JSON at `GetBeaconStateV2`. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16485)
- Removed next epoch lookahead from PTC duties. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16517)
- 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]](https://github.com/prysmaticlabs/prysm/pull/16515)
- Return nil error when ignoring already-seen data column sidecars during gossip validation to reduce log noise. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16536)
- Replace `multi_value_slice.Slice[*ethpb.Validator]` by `multi_value_slice.Slice[stateutil.CompactValidator]` to reduce memory usage. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16535)
- Correct log in VerifyBlobKZGProofBatch. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16552)
- `StateByRootIfCachedNoCopy` now also checks the epoch boundary state cache. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16511)
- Use `state.ReadOnlyBeaconState` instead of state.BeaconState when possible. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16511)
- gRPC for proposer preferences takes in an array in the request instead of just 1 item. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16554)
- Include git commit hash in `/eth/v1/node/version` response. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16541)
- Fix `ExecutionPayloadEnvelopesByRange` to only serve canonical payloads by walking the `ParentBlockHash` chain backward from a successor block. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16553)
- Add `ParentBlockHash` field to `BlindedExecutionPayloadEnvelope` proto to enable the backward walk without loading full blocks. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16553)
- Add block hash indexing for `BlindedExecutionPayloadEnvelope` in DB. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16553)
- Pre-allocate validatorKeys slice in insertValidatorHashes. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16558)
- changed grpc GetDutiesV2 to return proposer duties post fulu via the endpoint. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16564)
- `GetSyncCommitteeDuties` now fetches the state at the current epoch for current and next-period requests to avoid expensive state replays. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16688)
- `getFCUArgs`: skip payload attribute computation when not in regular sync, since the FCU is never sent to the engine in that case. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16721)
- Update go-ethereum to v1.17.3. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16775)
- `pingHandler`: Use service context instead of background context. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16802)
- `monitor`: Move the `Processed aggregated attestation` log to debug. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16802)
- Lower log level from `Error` to `Debug` when the committee cache cannot be updated in `ActiveValidatorIndices`. [[PR]](https://github.com/prysmaticlabs/prysm/pull/16816)

### Fixed

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

Links

Back to OffchainLabs/prysm releases