Skip to content

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

- _[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

@haxxpop haxxpop 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants