-
Notifications
You must be signed in to change notification settings - Fork 997
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
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]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- _[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.
closing in favor of #3531 |
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)
."