Delay attestations with payload_present=1 until envelope received#673
Open
Subhasish-Behera wants to merge 23 commits into
Open
Delay attestations with payload_present=1 until envelope received#673Subhasish-Behera wants to merge 23 commits into
Subhasish-Behera wants to merge 23 commits into
Conversation
- 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
- Add missing logic to prepare_execution_payload - Fall back to self-build when no in-protocol bid is received (for early rollout & testnets) - Publish self-built execution payload envelope after beacon block
fb2721c to
267496b
Compare
… 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.
267496b to
8652ecd
Compare
| } | ||
|
|
||
| #[expect(clippy::too_many_lines)] | ||
| #[expect(clippy::too_many_arguments, clippy::too_many_lines)] |
Author
There was a problem hiding this comment.
should i use a separate identifier out of
beacon_block_root: H256, builder_index: BuilderIndex .
currently bypassing clippy with clippy::too_many_arguments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the Gloas gossip rule: attestations with
data.index == 1voting 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