Skip to content

Add ERC: Proof-based Broadcast in ERC-7786 Gateways #1072

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

ernestognw
Copy link
Contributor

@ernestognw ernestognw commented Jun 6, 2025

Extends ERC-7786 cross-chain messaging with cryptographic proof-based verification and granular broadcasting semantics. It enables trustless message verification using blockchain consensus mechanisms rather than external validators or multisigs.

The specification defines three ERC-7786 attributes: route() for multi-hop verification paths, inclusionProof() for cryptographic evidence of message commitment, and optional targetBlock() for finality validation.

Broadcasting leverages ERC-7930 addresses to enable targeted message distribution: empty address components broadcast to all addresses on specific chains, empty chain references broadcast to all chains of a type, and fully zeroed addresses enable universal broadcasting.

@eip-review-bot
Copy link
Collaborator

eip-review-bot commented Jun 6, 2025

✅ All reviewers have approved.

@eip-review-bot eip-review-bot changed the title Storage Proof Broadcasting for Cross-Chain Messaging Gateways Add ERC: Storage Proof Broadcasting for Cross-Chain Messaging Gateways Jun 6, 2025
ERCS/erc-xxxx.md Outdated
1. Parse the `route` and `storageProof` attributes from the message, and optionally `targetBlock` if provided
2. Validate all required attributes are present and well-formed
3. For each route step, verify block hash transition using the paired proof and validate version requirements if specified (non-zero)
4. Use the `storageProof` to verify that message data exists in the source chain's state at the target block obtained from the route verification

Choose a reason for hiding this comment

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

In here the verification process should clarify that the storage proof must correspond to the source chain identified by the completed route verification, what I mean by this is it should use the storageProof to verify that message data exists in the source chain's state at the target block. The source chain MUST correspond to the final validated step in the route verification process.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi! Thanks for your feedback! I've updated to clarify that "The source chain SHOULD correspond to the final validated step in the route verification process."

I'm using SHOULD rather than MUST since I'm unsure about its enforceability. Perhaps there's a use case in sending through a different chain for better prices so I don't want to be too constraining here.

@eip-review-bot eip-review-bot changed the title Add ERC: Storage Proof Broadcasting for Cross-Chain Messaging Gateways Add ERC: Storage Proof Broadcast in ERC-7786 Gateways Jun 18, 2025
@github-actions github-actions bot removed the w-ci label Jun 18, 2025
@ernestognw ernestognw changed the title Add ERC: Storage Proof Broadcast in ERC-7786 Gateways Add ERC: Cryptographic Proof Broadcast in ERC-7786 Gateways Jun 24, 2025
@eip-review-bot eip-review-bot changed the title Add ERC: Cryptographic Proof Broadcast in ERC-7786 Gateways Add ERC: Proof-based Broadcast in ERC-7786 Gateways Jun 24, 2025

### Verification Process

Message verification follows these steps:
Copy link
Contributor

Choose a reason for hiding this comment

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

My understanding is that this verification logic happens on the receiving end (destination chain). It described how to verify something actually happened on the source chain.

What I don't understand is:

  • what is the relationship between the "data" part of the ERC-7786 message and these attributes. It it the 7786 receiver the one that must match the data and the attributes it receives, and interpret the data in the context of these attributes which have been verified by the destination gateway ?

  • how are these atributes set on the sending side. If the sender expected to build them before doing the send call on the source chain? If so, that means they have to correspond to data that was in place (part of the state) at least 1 block before the "send" is mined. The fact that setting the data in place, and sending the crosschain message must be done in separate block feels like a big downside.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I addressed the first point a bit better in cebfce8.

For the second point, I know each protocol has a different way of generating the proof for the same block they're proposing. For example, Taiko's SignalService uses anchor transactions at the beginning of each L2 block to establish verifiable state commitments, eliminating the need for separate block commitments. I'm not sure if this standard should determine how that's done

@github-actions github-actions bot added the w-ci label Jul 8, 2025
@ernestognw
Copy link
Contributor Author

Blocked on #1050

@github-actions github-actions bot removed the w-ci label Jul 8, 2025
Copy link

github-actions bot commented Jul 8, 2025

The commit 5331578 (as a parent of a01f995) contains errors.
Please inspect the Run Summary for details.

@github-actions github-actions bot added the w-ci label Jul 8, 2025
@github-actions github-actions bot removed the w-ci label Jul 8, 2025
@eip-review-bot eip-review-bot enabled auto-merge (squash) July 11, 2025 19:46
Copy link
Collaborator

@eip-review-bot eip-review-bot left a comment

Choose a reason for hiding this comment

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

All Reviewers Have Approved; Performing Automatic Merge...

@eip-review-bot eip-review-bot merged commit 0cc1b7e into ethereum:master Jul 11, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants