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-indicesflag (#16801). - Crash fix: Resolved a nil panic in
fetchOriginSidecarswhen the origin checkpoint block has been pruned from the DB (#16824). - State diffs (experimental):
--enable-state-diffnow 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
getBeaconStateV2using 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
SubmitSignedProposerPreferencesfor 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-diffto 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-colorsflag 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
InitializeFromProtoUnsafeXXXinstead ofInitializeFromProtoXXXwhen 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_sidecargossip validation into dedicated sync and verification paths, verify againstbid.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]bymulti_value_slice.Slice[stateutil.CompactValidator]to reduce memory usage. [PR] - Correct log in VerifyBlobKZGProofBatch. [PR]
StateByRootIfCachedNoCopynow also checks the epoch boundary state cache. [PR]- Use
state.ReadOnlyBeaconStateinstead 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/versionresponse. [PR] - Fix
ExecutionPayloadEnvelopesByRangeto only serve canonical payloads by walking theParentBlockHashchain backward from a successor block. [PR] - Add
ParentBlockHashfield toBlindedExecutionPayloadEnvelopeproto to enable the backward walk without loading full blocks. [PR] - Add block hash indexing for
BlindedExecutionPayloadEnvelopein DB. [PR] - Pre-allocate validatorKeys slice in insertValidatorHashes. [PR]
- changed grpc GetDutiesV2 to return proposer duties post fulu via the endpoint. [PR]
GetSyncCommitteeDutiesnow 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 theProcessed aggregated attestationlog to debug. [PR]- Lower log level from
ErrortoDebugwhen the committee cache cannot be updated inActiveValidatorIndices. [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 andhead, 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
TestProcessPendingDepositsMultiplesSameDepositsto 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=truehead 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
TestVerifyConnectivityby using a local TCP listener instead of an external Google IP. [PR] - Fix Gloas payload attributes to use
PayloadExpectedWithdrawalsfrom state when parent block is empty, preventing withdrawal mismatch errors in execution payload envelope verification. [PR] - Invert
execution_paymentgossip validation forexecution_payload_bidto correctly reject bids with non-zeroexecution_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-indicesflag. [PR] - Fix nil interface panic in
fetchOriginSidecarswhen the origin checkpoint block has been pruned from the DB. [PR]