Skip to content

Delay attestations with payload_present=1 until envelope received#673

Open
Subhasish-Behera wants to merge 23 commits into
grandinetech:epbs-devnet-2from
Subhasish-Behera:Subh/delay_until_envelope
Open

Delay attestations with payload_present=1 until envelope received#673
Subhasish-Behera wants to merge 23 commits into
grandinetech:epbs-devnet-2from
Subhasish-Behera:Subh/delay_until_envelope

Conversation

@Subhasish-Behera

@Subhasish-Behera Subhasish-Behera commented Apr 23, 2026

Copy link
Copy Markdown

Implements the Gloas gossip rule: attestations with data.index == 1 voting for a post-Gloas block are delayed until the local envelope for that block is received.

Spec Reference:
https://github.com/ethereum/consensus-specs/blob/a6687a2de15a0cbd92b052ce3a7727f83ef49b53/specs/gloas/p2p-interface.md?plain=1#L244-L248

https://github.com/ethereum/consensus-specs/blob/a6687a2de15a0cbd92b052ce3a7727f83ef49b53/specs/gloas/p2p-interface.md?plain=1#L529-L533

Note: not affected by deferred payload state apply refactor. as this is a by-root request(not by range) and part of the fork choice calculation

povi and others added 10 commits April 22, 2026 18:24
- Locally build payload envelope by proposer
- Request `engine_getBlobsV2` once envelope receive if data is not
  available
- Reconstruct data column sidecars with payload envelope
- Request payload envelopes from peers while syncing
Update payload attestation aggregation pool

Remove redundant PTC cache

Spawn own payload attestation task

Add version field to `payload_attestation_message` event

Add block payload attestation validations
@Subhasish-Behera Subhasish-Behera marked this pull request as ready for review April 23, 2026 10:35
povi and others added 6 commits April 23, 2026 13:59
@Subhasish-Behera Subhasish-Behera force-pushed the Subh/delay_until_envelope branch from fb2721c to 267496b Compare April 24, 2026 03:03
hangleang and others added 7 commits April 24, 2026 10:26
… Gloas

Replace stubbed fields in payload attestation data:
- `payload_present`: set to `true` if a signed envelope reference by `block_root` has been seen in fork choice
- `blob_data_available`: set to `true` if blob data is available defined by fork choice

Set `data.index` in attestation to signal payload presence for the
attesting block in Gloas
- `0` if the attesting block is in the current slot, or payload is not present
- `1` if payload is present for that block
…nvelope

  - Gossip attestation with index==1 for a post-Gloas block lacking a local
    envelope is delayed and the envelope is requested by root.
  - Delayed attestations retry when the envelope is accepted; map is pruned
    on finalization.
  - Invalid envelope responses clear the stale received-envelopes entry so
    retries from another peer aren't suppressed.
  - Block-embedded attestations bypass the delay; that branch is
    unreachable
a attestations voted slot.
same slot attestations dont literally means same slot for the receiver
of the attestation but same slot when the attester creates the
attestation.
@Subhasish-Behera Subhasish-Behera force-pushed the Subh/delay_until_envelope branch from 267496b to 8652ecd Compare April 24, 2026 12:43
}

#[expect(clippy::too_many_lines)]
#[expect(clippy::too_many_arguments, clippy::too_many_lines)]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

should i use a separate identifier out of
beacon_block_root: H256, builder_index: BuilderIndex .
currently bypassing clippy with clippy::too_many_arguments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants