Skip to content

Update EIP8025 p2p protocol#5014

Open
frisitano wants to merge 3 commits intoethereum:masterfrom
frisitano:feat/eip8025-p2p
Open

Update EIP8025 p2p protocol#5014
frisitano wants to merge 3 commits intoethereum:masterfrom
frisitano:feat/eip8025-p2p

Conversation

@frisitano
Copy link
Contributor

Description

  • Remove changes to Metadata and GetMetaData. We deprecate these modifications to prevent potential future conflicts with the core protocol.
  • Introduce ExecutionProofStatus rpc, which can be used to communicate the latest block and slot that the peer has received and verified sufficient execution proofs for to be considered valid. This is used for peer selection in the sync protocol.
  • Introduce ExecutionProofsByRange rpc, which can be used to sync a contiguous range of proofs from a peer. Often useful when initially connecting to a network / filling large gaps.

@frisitano frisitano changed the title feat: eip8025 p2p Update EIP8025 p2p protocol Mar 17, 2026
@github-actions github-actions bot added the eip8025 Optional Execution Proofs label Mar 17, 2026
@kevaundray
Copy link
Contributor

cc @nalepae re ExecutionProofStatus

Comment on lines +176 to +177
`MAX_EXECUTION_PROOFS_PER_PAYLOAD` proofs, the `count` field MUST satisfy
`count * MAX_EXECUTION_PROOFS_PER_PAYLOAD <= compute_max_request_execution_proofs()`.
Copy link
Contributor

Choose a reason for hiding this comment

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

Not a request for change, just an observation: This allows count == 0, which seems consistent with DataColumnSidecarsByRange

Comment on lines +235 to +237
This protocol enables peers to exchange their current execution proof
verification status. The request and response use the same type.

Copy link
Contributor

Choose a reason for hiding this comment

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

Perhaps we write a short note on why this allows us to not need Metadata?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Do you mean adding context to explain why we don't include it in the Metadata rpc? Makes sense to me. If we add this, we can also mention that for the mandatory proofs hardfork, we will deprecate this type and integrate the inner data into Metadata.

Will wait for guidance from @jtraglia if this note aligns with spec standards.

Copy link
Contributor

Choose a reason for hiding this comment

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

Do you mean adding context to explain why we don't include it in the Metadata rpc?

yep exactly

Will wait for guidance from @jtraglia if this note aligns with spec standards.

sounds good ser

@nalepae
Copy link
Contributor

nalepae commented Mar 17, 2026

The byRoot request contains a proof_types parameter.
This is not the case for the byRange request.
Is it on purpose?

@frisitano
Copy link
Contributor Author

The byRoot request contains a proof_types parameter. This is not the case for the byRange request. Is it on purpose?

Yes, it was intentional. The idea is that ByRange should be used to sync large ranges of proofs for which the client has no proofs. On the contrary, ByRoot should be used to fill gaps where the client has some proofs but not a complete set.

What do you think about this? Does it sound reasonable?

Requests the MetaData of a peer, using the new `MetaData` definition given above
that is extended from Altair. Other conditions for the `GetMetaData` protocol
are unchanged from the Altair p2p networking document.
This protocol enables peers to exchange their current execution proof
Copy link

Choose a reason for hiding this comment

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

In case a node does not have EIP8025 enabled, MUST the node not register this protocol and thus not respond on this request?

Basically, what replaces the current GetMetaData v4 execution_proof_aware field to denote a node is not running optional-proofs.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yep exactly -- so if a node doesn't register this protocol, it means they don't support 8025

Copy link
Contributor Author

@frisitano frisitano Mar 18, 2026

Choose a reason for hiding this comment

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

The baseline assumption is that a peer does not support this protocol. If the peer signals support via "eproof" key in their ENR then this implies that they do support the protocol. Only the peer initiating the connection has visibility of the other peers' ENR. This creates an information asymmetry: the peer initiating the connection knows the peer supports eproof, but the peer receiving the inbound connection request does not, because it cannot see the peer's ENR. To address this asymmetry, the node initiating the connection MUST invoke the request upon connection if it also supports execution proofs.

Copy link

Choose a reason for hiding this comment

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

The baseline assumption is that a peer does not support this protocol. If the peer signals support via "eproof" key in their ENR then this implies that they do support the protocol.

Yes, that makes sense. But should we not explicitly add that somewhere in the specs?

To address this asymmetry, the node initiating the connection MUST invoke the request upon connection if it also supports execution proofs.

So should we add something like this or similar:

"The dialing client MUST send a ExecutionProofStatus request upon connection when optional execution proof–aware."

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point, yes, I think that's a good suggestion I will add it.

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

Labels

eip8025 Optional Execution Proofs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants