Skip to content

v7.1.8

Latest

Choose a tag to compare

@prestonvanloon prestonvanloon released this 29 Jul 14:51
Immutable release. Only release title and notes can be modified.
51b5a75

v7.1.8 - 2026-07-27

This is a highly recommended patch release containing multiple bug fixes improving the handling of early attestations for better inclusion. Several other bugfixes and ux improvements are also included. Some highlights:

  • libp2p bug fixed, improving network-wide propagation of early attestations. [PR]
  • Bug fix enabling validator clients using grpc to make timely attestations (resolving notification stream connection issues).
  • Builder client now automatically falls back to JSON when a remote builder rejects SSZ requests (415/406), so builders without SSZ support (e.g. Commit Boost) work without needing --disable-builder-ssz.
  • Numerous UX / quality of life improvements (see Added and Changed sections below).
  • Miscellanious small bugfixes (see the Fixed section below)
  • And of course, changes related to the upcoming gloas fork, including support for partial data columns (more efficient blob networking) and progressive merkleization.

Added

  • Gate the --distributed validator client flag when used without the REST API being enabled. [PR]
  • Added shorter flag aliases: --beacon-rest, --beacon-grpc, and --enable-rest. [PR]
  • Add GET /prysm/v1/node/custody endpoint exposing the node's data column custody state: custody group count, custody groups and columns, earliest available slot, supernode/semi-supernode status, and backfill progress. [PR]
  • Builder client now automatically falls back to JSON when a remote builder rejects SSZ requests (415/406), so builders without SSZ support (e.g. Commit Boost) work without needing --disable-builder-ssz. Covers GetHeader, RegisterValidator, SubmitBlindedBlock, SubmitBlindedBlockPostFulu, and the Gloas GetExecutionPayloadBid and SubmitBuilderPreferences endpoints. Once a builder rejects SSZ, the client uses JSON for the remainder of its lifetime. [PR]
  • Reorg late payloads in Gloas behind the --reorg-late-payloads flag when the PTC did not reach timeliness consensus. [PR]
  • progressive merklization functions in the ssz package. [PR]
  • progressive SSZ merkleization for Gloas beacon state. [PR]
  • hidden, experimental beacon node flag --enable-progressive-ssz to. [PR]

Changed

  • GET /eth/v1/validator/payload_attestation_data/{slot} now returns 204 instead of 503 when no block has been seen for the requested slot, per ethereum/beacon-APIs#612. [PR]
  • Setting --beacon-rest-api-provider now implicitly enables the beacon REST API, so --enable-beacon-rest-api is optional. [PR]
  • Changed the producePayloadAttestationData endpoint to take slot as a query parameter instead of a path parameter, per the latest beacon-APIs spec. [PR]
  • Verify the proposer signature of by-root blocks before adding them to the pending queue. [PR]
  • Removed the blinded execution payload envelope publish flow in favor of publishing the full signed envelope or envelope contents, per beacon-APIs #624. [PR]
  • Envelope publish endpoint now returns after broadcast, moving local import off the RPC path. [PR]
  • Updated geth to v1.17.4. [PR]
  • Updated go-libp2p-pubsub to v0.17.0, which allows republishing a previously seen but never delivered message (e.g. an attestation ignored because its block had not arrived yet). [PR]
  • Reduce the Gloas Engine API get-payload timeout to 300 milliseconds. [PR]
  • --max-builder-consecutive-missed-slots and --max-builder-epoch-missed-slots help text: Reports the mainnet config value as the default instead of a hardcoded, false and unused values. [PR]
  • Validator client now retries only the failed next-epoch duties independently instead of re-pulling every duty, making duty updates resilient to transient beacon node errors. [PR]
  • Upgrading to go 1.26.5 with security and bugfixes: see golang changelog. [PR]

Deprecated

  • --interop-num-validators, --interop-start-index, --interop-eth1data-votes and --interop-write-ssz-state-transitions are now hidden no-ops. Use ethereum-package for interop/devnet testing. [PR]

Removed

  • Removed the interop keymanager, mocked eth1 data votes, the SSZ state-transition dump helpers (tools/extractor), and the interop chain-config preset. [PR]
  • Unused data_column_obtained_via_el_count metric that was never recorded. [PR]

Fixed

  • Fixed flaky pending attestation bucket tests by asserting on specific log messages instead of exact global log counts. [PR]
  • Reset the self-build envelope signature failure budget every slot instead of tying it to a prune path that rarely runs. [PR]
  • Set the bid gas limit on full forkchoice nodes restored via MarkFullNode, so bid validation no longer sees a zero parent gas limit after a restart. [PR]
  • Fail the block data column availability check during initial sync instead of waiting indefinitely, so checkpoint sync no longer stalls when a block's custody columns are missing. [PR]
  • Ignore Gloas data column sidecars from a future slot before queueing, preventing pending entries that are never pruned. [PR]
  • Wait for the clock before starting the pending Gloas columns pruning routine to avoid a nil clock panic on startup. [PR]
  • Apply the Gloas cross-fork state-diff pending_deposits against the anchor's pre-upgrade list, fixing a panic and state corruption when builder deposits are onboarded at the Fulu to Gloas fork with --enable-state-diff. [PR]
  • Re-verify builder deposit signatures when an in-batch index reuse evicts a pubkey. [PR]
  • Stop downscoring peers when pending Gloas data columns are pruned for a block root this node has not imported. [PR]
  • Validator client now restarts its beacon event stream after a fallback host switch or after the stream dies. Previously the stream stayed bound to the old beacon node until a full restart, silently stopping head and payload-availability events — and with them reorg-triggered proposer-preference resubmission — even though the rest of the client kept working against the new node. [PR]
  • A replaced event stream is now stopped and drained before its successor starts, so two streams can never feed the validator client's event loop concurrently, and a stream shutdown can no longer close the shared events channel out from under its replacement. [PR]
  • Fail payload reconstruction in Gloas if correctness cannot be guaranteed. [PR]
  • Validator client with the beacon REST API now fetches proposer duties from the v2 endpoint post-Gloas, so its dependent root is fork-aware and consistent with attester duties. [PR]
  • Guard against a nil block dereference in Gloas execution payload envelope and data column gossip validation. [PR]
  • Do not queue blocks that arrive earlier than the max clock disparity. Also move HTR computation after the timestamp check. [PR]
  • Reject future-slot execution payload envelopes fetched by root and enforce pending caps, preventing an unbounded pending-envelope memory exhaustion. [PR]
  • Remote web3signer keymanager: NewKeymanager now waits for the key-file watcher to initialize before returning and fails startup immediately if the watcher cannot be initialized, key-update notifications are sent without holding the keymanager lock, and keys are reloaded from the key file when the watcher recovers from a failure. This prevents a startup race, a potential lock-ordering deadlock, and a stale flag-only key set after watcher recovery. [PR]
  • Clarified validator accounts exit prompts and final log message when --exit-json-output-dir is set: signed exits are only written to files and are not broadcast, so the messaging no longer implies validators were exited. [PR]
  • Fix a panic in GET /eth/v1/beacon/blobs/{block_id} when a versioned_hashes filter matches a commitment that appears more than once in the block. [PR]
  • Clear the attestation data cache when the head is updated. [PR]
  • Validator now skips payload attestation with an info log instead of an error when no block exists for the slot. [PR]
  • Use saturating arithmetic when computing the effective bid value during Gloas bid selection. [PR]
  • A next-epoch duty fetch failure no longer disrupts the validator's current-epoch duties. [PR]
  • Mark pending payload envelopes as seen only after successful import so transient failures can be retried. [PR]
  • Skip unusable static peer ENRs without discarding other valid peer addresses. [PR]
  • Count each PTC vote once in forkchoice_ptc_vote_count instead of on every re-application. [PR]
  • Increment new_payload_*_node_count metrics on the Gloas payload envelope path. [PR]
  • Accept execution payload bids building on the parent's empty branch, fixing valid bid rejections after a missed payload reveal. [PR]
  • PTC payload attestation now reports blob data availability from the data column store instead of forkchoice payload insertion. [PR]
  • beacon_execution_payload_envelope_invalid_total no longer counts internal processing failures, only invalid envelopes. [PR]