Skip to content
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

Update EIP-7594: include cell proofs in network wrapper of blob txs #9378

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

fradamt
Copy link

@fradamt fradamt commented Feb 18, 2025

See this doc for context

@fradamt fradamt requested a review from eth-bot as a code owner February 18, 2025 11:16
@github-actions github-actions bot added c-update Modifies an existing proposal s-stagnant This EIP is Stagnant t-networking labels Feb 18, 2025
@eth-bot
Copy link
Collaborator

eth-bot commented Feb 18, 2025

File EIPS/eip-7594.md

Requires 1 more reviewers from @g11tech, @lightclient, @SamWilsn

@eth-bot eth-bot added the e-review Waiting on editor to review label Feb 18, 2025
@eth-bot eth-bot changed the title include cell proofs in network wrapper of blob txs Update EIP-7594: include cell proofs in network wrapper of blob txs Feb 18, 2025
Copy link
Member

@dapplion dapplion left a comment

Choose a reason for hiding this comment

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

LGTM


This EIP introduces cell KZG proofs, which are used to prove that a KZG commitment opens to a cell at the given index. This allows downloading only specific cells from a blob, while still ensuring data integrity with respect to the corresponding KZG commitment, and is therefore a key component of data availability sampling. However, computing the cell proofs for a blob is an expensive operation, which a block producer would have to repeat for many blobs. Since proof verification is much cheaper than proof computation, and the proof size is negligible compared to cell size, we instead require blob transaction senders to compute the proofs themselves and include them in the network wrapper for blob transactions.

To this end, during transaction gossip responses (`PooledTransactions`), the EIP-4844 wrapper of the EIP-2718 `TransactionPayload` of the blob transaction is modified to:

Choose a reason for hiding this comment

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

Reviewing Besu's code we currently have no way of changing the definition of a transaction type at a hardfork block. It would be much easier to introduce a new transaction type and make the current 4844 transactions invalid. That change would be straightforward in our case, it would be way less error prone and faster to be implemented.

Copy link
Member

Choose a reason for hiding this comment

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

The transaction RLP is the same. Does your TX definition include what verification function to use?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, but it is not protocol-schedule aware. We don't currently have a means of changing that rule during and upgrade.

Choose a reason for hiding this comment

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

Just to add that L2 teams that's given input so far are happy with making changes on their side.

I think @marcindsobczak also had some input on this on the last breakout call, any thoughts on the above comment?

Choose a reason for hiding this comment

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


The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.

### Networking

This EIP introduces cell KZG proofs, which are used to prove that a KZG commitment opens to a cell at the given index. This allows downloading only specific cells from a blob, while still ensuring data integrity with respect to the corresponding KZG commitment, and is therefore a key component of data availability sampling. However, computing the cell proofs for a blob is an expensive operation, which a block producer would have to repeat for many blobs. Since proof verification is much cheaper than proof computation, and the proof size is negligible compared to cell size, we instead require blob transaction senders to compute the proofs themselves and include them in the network wrapper for blob transactions.
Copy link

@jimmygchen jimmygchen Feb 20, 2025

Choose a reason for hiding this comment

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

There was a suggestion from Lion and also brought up by Nethermind during the PeerDAS breakout to have the broadcasting EL node translate the eip4844 blob transaction into the new network form (with cell proofs), i.e. compute cell proofs after receiving blob transaction via RPC, and propagate the updated transaction to p2p network - it seems reasonable to me and would have no impact to end users, even if we change the cell size in the future.

Choose a reason for hiding this comment

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

There was a suggestion from Lion and also brought up by Nethermind during the PeerDAS breakout to have the broadcasting EL node translate the eip4844 blob transaction into the new network form (with cell proofs), i.e. compute cell proofs after receiving blob transaction via RPC, and propagate the updated transaction to p2p network - it seems reasonable to me and would have no impact to end users, even if we change the cell size in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c-update Modifies an existing proposal e-review Waiting on editor to review s-stagnant This EIP is Stagnant t-networking
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants