v7.1.6 - 2026-07-01
This patch release contains targeted gossip-validation, sync, and operator-facing improvements, alongside continued Gloas (ePBS), PeerDAS/data-column, builder API, and performance work from the release candidate.
Release highlights:
- Gloas and builder APIs: Continued Gloas block-production separation, stateless Gloas gRPC support, builder execution request types, builder API clients, proposer preferences, execution payload bid events, and payload-attestation handling.
- Beacon API and operator polish: Added SSZ-QL proof and length-query support, improved event-subscription error reporting, and introduced the
--postpone-shutdown-for-proposalsflag to defer graceful shutdown around upcoming proposal duties. - PeerDAS and data columns: Improved pending-column handling, sidecar validation, RPC reconstruction paths, rebroadcast behavior, bounded availability waits for Gloas data columns, and cell-level data column dissemination via the
--partial-data-columnsflag. - Stability and performance: Reduced allocations in randomness, KZG, and fork-choice paths; bounded Engine API capability growth; fixed trusted-peer address handling; and improved sync behavior around payload requests and unavailable payloads.
To learn more about how --partial-data-columns save bandwidth by exchanging selected cells and proofs, see Prysm docs
Operators are encouraged to update to this release as soon as practical.
Added
- Add
--postpone-shutdown-for-proposalsflag. When set, a graceful shutdown signal (SIGINT/SIGTERM, e.g. Ctrl-C on Linux) is postponed while a validator controlled by a connected validator client still has a block proposal duty in the current or next epoch. [PR] - Added optional Merkle proof support to the SSZ-QL BeaconBlock query endpoint. [PR]
FieldTrie: AddProveFieldthat returns leaf and proof for given field index. [PR]- Emit the
execution_payload_bidevent on the beacon node event stream when a builder bid is received from gossip; the topic was previously subscribable but never produced. [PR] - Add Gloas builder API protobuf types and the request-auth signature domain. [PR]
- Use Partial Messages for Data Column Gossip. [PR]
- Add the Gloas builder API HTTP client and the proposer-settings max_execution_payment field. [PR]
- Add the
SubmitBuilderPreferencesvalidator RPC, forwarding proposer builder preferences to the configured builder and caching the per-validator max execution payment. [PR] - SSZ-QL: support
len()queries on the BeaconState and BeaconBlock query endpoints, returning the runtime length of a List (element count) or Bitlist (bit count) as an 8-byte little-endian value. [PR] - Add
GetExecutionPayloadBidandSubmitSignedBeaconBlockto the beacon node builder service, wrapping the Gloas builder API client and selecting the per-builder request auth. [PR] - Fire an
execution_payload_bidevent when POSTing to/eth/v1/beacon/execution_payload_bids. [PR] - Gloas: reject
execution_payload_bidgossip when the builder version is notPAYLOAD_BUILDER_VERSION, the blob KZG commitment count exceeds the per-slot limit, orprev_randaodoes not match the RANDAO mix. [PR] - Builder execution requests (EIP-8282): builders are onboarded and exited via
BuilderDepositRequest/BuilderExitRequestin the GloasExecutionRequests, replacing the deposit-credential and voluntary-exit onboarding paths. [PR] - Use the
HasBlobsEngine API to quickly advertise missing cells. [PR] - hot state db for state diff. [PR]
- Gossip-level validation (slot, bid consistency, builder signature) on
POST /eth/v1/beacon/execution_payload_envelopesfor the default andbroadcast_validation=gossiplevels; failures return 400 and the envelope is not broadcast. [PR] broadcast_validation=gossipon the block publish endpoints now verifies the proposer signature before broadcast (previously a no-op); the default level is unchanged. [PR]- Gloas block production falls back to a cached P2P execution payload bid when the local EL self-build is unavailable. [PR]
- gRPC support for the
--statelessgloas self-build path (previously REST-only), serving both. [PR] - Add a NextSlotStateReadOnly interface to allow read-only access to the next slot state. [PR]
SubscribedValidatorsCachetracks attached validators viabeacon_committee_subscriptionsfor CGC andvalidating()computation, but has prepare_beacon_proposer populating in case of using an old validator client. [PR]validator_indicesfield onCommitteeSubnetsSubscribeRequest(gRPC): a flat list of attached validators, independent of the (slot, committee) subnet dedup, so the BN cache tracks every attached validator. [PR]
Changed
- Check the network size up front when computing subnet topic scoring params, replacing the per-subnet "rate is 0" warning spam with a single debug line that includes the active and required validator counts. [PR]
- proposer settings no longer recognize the builder option post gloas and introduces a new gas_limit option for proposer preferences, supported per validator and in the default config. [PR]
- the builder gas_limit and the new top-level gas_limit are independent signals: relay registrations keep reading builder.gas_limit pre-gloas, while proposer preferences read only the top-level gas_limit (falling back to the default config, then the chain default). [PR]
- gas limit keymanager endpoint continues to update gas limit on a per validator basis post gloas. [PR]
- v1 proposer settings files remain supported without modification: a deprecation warning is logged on gloas-scheduled networks and settings are upgraded automatically in the validator client at the gloas fork, promoting builder gas limits to the top level unless one is already set. Settings already on v2 are never rewritten. [PR]
- During initial sync, check execution payload envelope data column availability synchronously and fail if columns are missing instead of blocking. [PR]
- Double the global per-peer RPC rate limit (5 → 10 req/s, burst 10 → 20). [PR]
- Builder API requests and responses now use SSZ encoding by default. Use
--disable-builder-sszto fall back to JSON. [PR] - Deprecated
--enable-builder-ssz(alias--builder-ssz); SSZ is now the default for builder setups, so the flag is a no-op. [PR] - Optimize deterministic randomness helpers to reduce runtime overhead and allocations in
crypto/random. [PR] - Update consensus spec tests to
v1.7.0-alpha.11, aligning Gloas with the release: splitExecutionRequestsinto a Gloas-specificExecutionRequestsGloas(with builder requests) leaving Electra/Fulu at three fields, addBuilderPendingPayment.proposer_index, validate execution payload bids againststate.slot/PAYLOAD_BUILDER_VERSION, and setMAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOADto 256. [PR] - Remove the unused builder deposit-signature prefetch path (
DepositSigcache,prefetchDepositSignatures, andBatchVerifyDepositRequestSignatures), dead since Gloas stopped onboarding builders via the validator deposit path. [PR] - Batch-verify builder deposit request signatures in
ProcessBuilderDepositRequestsinstead of one BLS verification per request. [PR] - Split Gloas and pre-Gloas block production into separate
buildBlockGloasandbuildBlockFulupaths. [PR] - Avoid a redundant 128 KiB blob copy and heap allocation in the KZG batch verification path by copying each blob directly into the preallocated destination. [PR]
- Avoid cloning a slice just to count it in the Gloas fork-choice best-descendant walk:
updateBestDescendantConsensusNodeandtipsnow use ahasConsensusChildrenhelper instead oflen(allConsensusChildren(...)), removing a per-node heap allocation. [PR] - CGC and
validating()source their attached-validator set fromSubscribedValidatorsCacheinstead ofProposerPreferencesCache. [PR] - FCU payload attribute builders fall back to
--suggested-fee-recipientwhen no signed preference is cached. [PR] prepare_beacon_proposer(REST + gRPC) is a no-op post-Gloas; the VC stops calling it post-Gloas.SignedProposerPreferencesreplaces it. [PR]- REST
beacon_committee_subscriptionssends oneBeaconCommitteeSubscriptionper active validator (no longer deduped by subnet) so the BN cache tracks every attached validator. [PR] - Move peer-scoring of invalid block signatures to the gossip caller. [PR]
Removed
- Deprecate legacy
--http-modulesflag. [PR] - Deprecate legacy
--enable-db-backup-webhook,--slasher-rpc-provider, and--slasher-tls-certflags. [PR] - tracked validator cache and prefer to use proposer preferences cache and subscribed validators cache. [PR]
Fixed
- Skip payload attribute computation while the node is syncing, gated inside
getPayloadAttribute. Computing attributes with a state far behind the wall clock processed thousands of slots per block, slowing sync to ~0.1 blocks/s. [PR] - Emit the
proposer_preferencesSSE event for locally submitted preferences, not only those received over gossip. [PR] - Validator client now surfaces a connection error when the beacon node rejects an event subscription with a non-200 status (e.g. HTTP 400 for an unsupported topic), instead of silently treating the error body as an empty event stream and dropping the subscription without any indication. [PR]
- Make
FullBeatsEmptyfork-agnostic so pre-gloas heads report a full payload consistently across all head update paths. [PR] IsOptimisticForRootnow recovers the validated checkpoint's state summary using the checkpoint root instead of the queried block's root, so the optimism slot comparison is correct. [PR]- Key the payload ID cache by parent payload status so a head empty/full flip cannot return a stale payload ID. [PR]
- Emit the
payload_attributesSSE event after the Gloas fork; it previously stopped at the fork boundary because the Gloas forkchoice-update path did not fire it. [PR] - Set bid KZG commitments on Gloas data columns during the data availability check so column verification can proceed during sync and backfill. [PR]
- Seed bid KZG commitments on Gloas data column sidecars during by-root sync verification so column verification can proceed. [PR]
- Downscore peers per invalid pending Gloas data column and penalize columns queued for block roots that never become known, preventing penalty-free flooding of the pending column queue. [PR]
- Increment the
builder_exits_processed_totalmetric when a builder exit is initiated. The counter was defined but never incremented, so it always reported zero. [PR] - Ignore payload attestation gossip when the state cannot resolve the slot's payload timeliness committee, instead of rejecting the sender. [PR]
- Recover payload insertion on forkchoice if available on db. [PR]
- Bound the data-column availability wait to one slot during batch sync, so unavailable columns error and retry instead of stalling import. [PR]
- Initial sync no longer requests data column sidecars for payload-absent Gloas slots, which previously wedged sync on
respondedSidecars=0. Columns are now requested by revealed payload envelopes instead of the bid'sblob_kzg_commitments. [PR] - Resolve the payload attestation committee against the slot-covering state so lagging nodes don't drop valid votes. [PR]
- Basic-auth credentials in beacon node REST/gRPC endpoint URLs are now masked in logs and error messages instead of being printed in plaintext. [PR]
- Backfill now seeds Gloas data column sidecars with their block's bid KZG commitments before validation, so Gloas columns no longer fail with
errNotFuluDataColumn. [PR] - Do not republish Gloas data column sidecars as partial columns. [PR]
- Downscore a Gloas data column forwarder at most once per orphaned block root instead of once per column. [PR]
- Re-broadcast pending Gloas data column sidecars once their block arrives and deferred validation passes. [PR]
- Fixed
engine_exchangeCapabilitiesrequesting an ever-growing list of engine methods. Fork-specific endpoints were appended to a shared slice on every execution client reconnect, causing the "Connected execution client does not support some requested engine methods" warning to grow unbounded with duplicate entries. [PR] - Fix panic when adding a trusted peer using a multiaddr with no transport address. [PR]
- Fixed off by one at fork on init-sync. [PR]
- Fix error when
notifyNewHead(V2)Eventis called with zero head slot. [PR] - Ensure we read and write correctly to the seen cache for Gloas data columns. [PR]
- Ensure we attempt to reconstruct Gloas data columns when a validated data column side car comes in. [PR]