EIP-7594: Add a missing check and a missing test vector (#3765)

This commit is contained in:
George Kadianakis 2024-05-14 17:18:14 +03:00 committed by GitHub
parent e5813bd692
commit fdeff744ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -683,6 +683,9 @@ def recover_all_cells(cell_ids: Sequence[CellID], cells: Sequence[Cell]) -> Sequ
# Check that each cell is the correct length # Check that each cell is the correct length
for cell in cells: for cell in cells:
assert len(cell) == BYTES_PER_CELL assert len(cell) == BYTES_PER_CELL
# Check that the cell ids are within bounds
for cell_id in cell_ids:
assert cell_id < CELLS_PER_EXT_BLOB
# Get the extended domain # Get the extended domain
roots_of_unity_extended = compute_roots_of_unity(FIELD_ELEMENTS_PER_EXT_BLOB) roots_of_unity_extended = compute_roots_of_unity(FIELD_ELEMENTS_PER_EXT_BLOB)

View File

@ -710,6 +710,21 @@ def case05_recover_all_cells():
'output': None 'output': None
} }
# Edge case: More cells provided than CELLS_PER_EXT_BLOB
blob = BLOB_RANDOM_VALID2
cells = spec.compute_cells(blob)
cell_ids = list(range(spec.CELLS_PER_EXT_BLOB)) + [0]
partial_cells = [cells[cell_id] for cell_id in cell_ids]
expect_exception(spec.recover_all_cells, cell_ids, partial_cells)
identifier = make_id(cell_ids, partial_cells)
yield f'recover_all_cells_case_invalid_more_cells_than_cells_per_ext_blob_{identifier}', {
'input': {
'cell_ids': cell_ids,
'cells': encode_hex_list(partial_cells),
},
'output': None
}
# Edge case: Invalid cell_id # Edge case: Invalid cell_id
blob = BLOB_RANDOM_VALID1 blob = BLOB_RANDOM_VALID1
cells = spec.compute_cells(blob) cells = spec.compute_cells(blob)