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

feat(octane/evmengine): support blob txs #2498

Merged
merged 1 commit into from
Nov 20, 2024
Merged

feat(octane/evmengine): support blob txs #2498

merged 1 commit into from
Nov 20, 2024

Conversation

corverroos
Copy link
Collaborator

@corverroos corverroos commented Nov 18, 2024

Adds minimal support for blob txs.

Only include BlobCommitments in consensus chain blocks. This is required to calculate blob hashes and provide to engine.NewPayload. This adds minimum support for blobs, i.e., that they can be submitted to EVM and included in blocks without problems.

But we don't include blobs themselves (or proofs) in the consensus chains. Neither do we provide an API to query them. This limits consensus chain size by not including blobs. Submitted blobs can therefore not be queried from the consensus chain. This does render BlobTxs useless, but this isn't a problem since we don't have a use-case that require it.

Minimal support for blobs does means that stock standard geth is still supported and that forking geth to disable blob txs isn't required.

issue: https://github.com/omni-network/ops/issues/613


hasher := sha256.New()
for i := range sidecar.Blobs {
if err := kzg4844.VerifyBlobProof(&sidecar.Blobs[i], sidecar.Commitments[i], sidecar.Proofs[i]); err != nil {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Is verifying the whole blob, proof, and commitment required for all validators? Since only Commitments are required to calculate versioned hashes which are provided to geth via NewPayload, other fields (Blobs and Proofs) are technically unused. Can they not be removed?

Copy link
Contributor

Choose a reason for hiding this comment

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

Did you find the answer to this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yeah, we only include Commitments for minimal but safe support

hashes := make([]common.Hash, 0, len(sidecar.Blobs))

hasher := sha256.New()
for i := range sidecar.Blobs {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Ethereum consensus layer has a MAX_BLOBS_PER_BLOCK=6. We should maybe also enforce something like this.

Copy link
Contributor

@kevinhalliday kevinhalliday left a comment

Choose a reason for hiding this comment

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

Worth having blob tx in e2e?

@corverroos corverroos merged commit 9e4d048 into main Nov 20, 2024
19 checks passed
@corverroos corverroos deleted the corver/blobtx branch November 20, 2024 12:40
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