mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 23:18:15 -05:00
VerifyDataColumnsSidecarKZGProofs: Check if sizes match. (#15892)
This commit is contained in:
@@ -79,10 +79,30 @@ func VerifyDataColumnsSidecarKZGProofs(sidecars []blocks.RODataColumn) error {
|
|||||||
|
|
||||||
for _, sidecar := range sidecars {
|
for _, sidecar := range sidecars {
|
||||||
for i := range sidecar.Column {
|
for i := range sidecar.Column {
|
||||||
commitments = append(commitments, kzg.Bytes48(sidecar.KzgCommitments[i]))
|
var (
|
||||||
|
commitment kzg.Bytes48
|
||||||
|
cell kzg.Cell
|
||||||
|
proof kzg.Bytes48
|
||||||
|
)
|
||||||
|
|
||||||
|
commitmentBytes := sidecar.KzgCommitments[i]
|
||||||
|
cellBytes := sidecar.Column[i]
|
||||||
|
proofBytes := sidecar.KzgProofs[i]
|
||||||
|
|
||||||
|
if len(commitmentBytes) != len(commitment) ||
|
||||||
|
len(cellBytes) != len(cell) ||
|
||||||
|
len(proofBytes) != len(proof) {
|
||||||
|
return ErrMismatchLength
|
||||||
|
}
|
||||||
|
|
||||||
|
copy(commitment[:], commitmentBytes)
|
||||||
|
copy(cell[:], cellBytes)
|
||||||
|
copy(proof[:], proofBytes)
|
||||||
|
|
||||||
|
commitments = append(commitments, commitment)
|
||||||
indices = append(indices, sidecar.Index)
|
indices = append(indices, sidecar.Index)
|
||||||
cells = append(cells, kzg.Cell(sidecar.Column[i]))
|
cells = append(cells, cell)
|
||||||
proofs = append(proofs, kzg.Bytes48(sidecar.KzgProofs[i]))
|
proofs = append(proofs, proof)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,14 @@ func TestVerifyDataColumnSidecarKZGProofs(t *testing.T) {
|
|||||||
err := kzg.Start()
|
err := kzg.Start()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
t.Run("size mismatch", func(t *testing.T) {
|
||||||
|
sidecars := generateRandomSidecars(t, seed, blobCount)
|
||||||
|
sidecars[0].Column[0] = sidecars[0].Column[0][:len(sidecars[0].Column[0])-1] // Remove one byte to create size mismatch
|
||||||
|
|
||||||
|
err := peerdas.VerifyDataColumnsSidecarKZGProofs(sidecars)
|
||||||
|
require.ErrorIs(t, err, peerdas.ErrMismatchLength)
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("invalid proof", func(t *testing.T) {
|
t.Run("invalid proof", func(t *testing.T) {
|
||||||
sidecars := generateRandomSidecars(t, seed, blobCount)
|
sidecars := generateRandomSidecars(t, seed, blobCount)
|
||||||
sidecars[0].Column[0][0]++ // It is OK to overflow
|
sidecars[0].Column[0][0]++ // It is OK to overflow
|
||||||
|
|||||||
2
changelog/manu-verify-data-column-sidecar-kzg-proofs.md
Normal file
2
changelog/manu-verify-data-column-sidecar-kzg-proofs.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
### Fixed
|
||||||
|
- `VerifyDataColumnsSidecarKZGProofs`: Check if sizes match.
|
||||||
Reference in New Issue
Block a user