Skip to content

Request missing payload envelopes for index-1 attestation#4939

Open
terencechain wants to merge 7 commits intoethereum:masterfrom
terencechain:gossip-att-unknown-parent-hash
Open

Request missing payload envelopes for index-1 attestation#4939
terencechain wants to merge 7 commits intoethereum:masterfrom
terencechain:gossip-att-unknown-parent-hash

Conversation

@terencechain
Copy link
Contributor

Add guidance to request missing execution payload envelopes when index-1 attestations indicate payload present for past blocks in beacon_aggregate_and_proof and beacon_attestation_{subnet_id}

@github-actions github-actions bot added the gloas label Feb 18, 2026
@terencechain terencechain force-pushed the gossip-att-unknown-parent-hash branch from 89e0e47 to 6a3e5e9 Compare February 18, 2026 18:50
@terencechain terencechain changed the title Add guidance to request missing payload envelopes on index 1 attestations Request missing payload envelopes for index-1 attestation Feb 18, 2026
Copy link
Contributor

@ensi321 ensi321 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should also update this statement:

ExecutionPayloadEnvelopesByRoot is primarily used to recover recent execution
payload envelopes (e.g. when receiving a payload attestation with revealed
status as true but never received a payload).

Copy link
Contributor

@potuz potuz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to be explicit that if the payload was invalid the attestation needs to be rejected rather than ignored. Change the language to the usual double negation on p2p (my changes are just a quick suggestion, feel free to change accordingly). Also I believe this PR requires #4918 otherwise this pr forces clients to ignore attestations that should be processed.

terencechain and others added 3 commits February 19, 2026 07:55
Co-authored-by: Potuz <potuz@potuz.net>
Co-authored-by: Potuz <potuz@potuz.net>
block), the execution payload for `block` has been seen. Client that haven't
seen the payload MAY queue the attestation and SHOULD request the payload
envelope by root from the block's bid (e.g.
`block.body.signed_execution_payload_bid.message.block_hash`) using
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does it say block_hash instead of something like attestation.data.beacon_block_root?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm you're right. ExecutionPayloadEnvelopesByRoot expects a beacon block root, not an execution payload (block) hash.

Requests execution payload envelopes by
`signed_execution_payload_envelope.message.block_root`. The response is a list
of `SignedExecutionPayloadEnvelope` whose length is less than or equal to the
number of requested execution payload envelopes. It may be less in the case that
the responding peer is missing payload envelopes.

- _[REJECT]_ If `attestation.data.index == 1` (payload present for a past
block), the execution payload for `block` passes validation.
- _[IGNORE]_ If `attestation.data.index == 1` (payload present for a past
block), the execution payload for `block` has been seen. Client that haven't
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Language here is a bit weird & inconsistent. You should fix this in both sections. And do not just apply the suggestion, it will fail linting.

Suggested change
block), the execution payload for `block` has been seen. Client that haven't
block), the execution payload for `block` has been seen. A client that has not

github-merge-queue bot pushed a commit to OffchainLabs/prysm that referenced this pull request Mar 19, 2026
This PR Implements the gossip validation rules from consensus-specs
[#4939](ethereum/consensus-specs#4939) That is:

- [REJECT] attestations with `CommitteeIndex == 1` (payload-present
vote) when the execution payload for the attested block is known invalid
- [IGNORE] attestations with `CommitteeIndex == 1` when the execution
payload has not been seen, and request the payload envelope via
`ExecutionPayloadEnvelopesByRoot`
@jtraglia jtraglia requested review from ensi321, jihoonsong and potuz and removed request for ensi321 and potuz March 23, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants