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

Check blob sidecar commitment at gossip if possible #3532

Closed
wants to merge 1 commit into from

Conversation

terencechain
Copy link
Contributor

Generally, blocks are expected to arrive before blobs. A useful validation step is to ensure that the KZG commitments of the blob and block body match before importing the blob. This adds an additional layer of verification, complementing the existing check: "The sidecar must be the only sidecar with a valid signature received for the tuple (sidecar.block_root, sidecar.index)."

Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

+1

@djrtwo
Copy link
Contributor

djrtwo commented Oct 27, 2023

wait, don't you get this for free in #3531. the merkle proof to the block-header proves this consistency wrt to that block and this seems strictly extraneous

@terencechain
Copy link
Contributor Author

wait, don't you get this for free in #3531. the merkle proof to the block-header proves this consistency wrt to that block and this seems strictly extraneous

#3513 does indeed supersede this one. Before opening this, I was uncertain about the status of #3513. I would prefer that solution over dealing with this gossip condition. I've also put considerable thought into whether this may still be relevant. However, I was unable to identify a specific scenario where this would be a useful defense

@@ -155,6 +155,7 @@ The following validations MUST pass before forwarding the `signed_blob_sidecar`
- _[IGNORE]_ The sidecar's block's parent (defined by `sidecar.block_parent_root`) has been seen (via both gossip and non-gossip sources) (a client MAY queue sidecars for processing once the parent block is retrieved).
- _[REJECT]_ The sidecar's block's parent (defined by `sidecar.block_parent_root`) passes validation.
- _[REJECT]_ The sidecar is from a higher slot than the sidecar's block's parent (defined by `sidecar.block_parent_root`).
- _[REJECT]_ If the sidecar's block root (defined by `sidecar.block_root`) has been seen, the sidecar's kzg commiment should match the block. (ie. sidecar.kzg_commitment == block_body.blob_kzg_commitments[sidecar.index])
Copy link
Member

@ppopth ppopth Oct 29, 2023

Choose a reason for hiding this comment

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

Suggested change
- _[REJECT]_ If the sidecar's block root (defined by `sidecar.block_root`) has been seen, the sidecar's kzg commiment should match the block. (ie. sidecar.kzg_commitment == block_body.blob_kzg_commitments[sidecar.index])
- _[REJECT]_ If the sidecar's block root (defined by `sidecar.block_root`) has been seen, the sidecar's kzg commiment matches the block. (ie. sidecar.kzg_commitment == block_body.blob_kzg_commitments[sidecar.index])

Because this is supposed to be a true/false statement rather than a suggestion statement.

@djrtwo
Copy link
Contributor

djrtwo commented Nov 2, 2023

closing in favor of #3531

@djrtwo djrtwo closed this Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Deneb was called: eip-4844 scope:networking
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants