Skip to content

Commit bb8f3ca

Browse files
authored
Merge pull request #3836 from jtraglia/columns-cells-and-proofs
Update get_data_column_sidecars to take cells/proofs
2 parents b4432fb + 5961e26 commit bb8f3ca

2 files changed

Lines changed: 18 additions & 13 deletions

File tree

specs/_features/eip7594/das-core.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -195,27 +195,31 @@ def recover_matrix(partial_matrix: Sequence[MatrixEntry],
195195

196196
```python
197197
def get_data_column_sidecars(signed_block: SignedBeaconBlock,
198-
blobs: Sequence[Blob]) -> Sequence[DataColumnSidecar]:
198+
cells_and_kzg_proofs: Sequence[Tuple[
199+
Vector[Cell, CELLS_PER_EXT_BLOB],
200+
Vector[KZGProof, CELLS_PER_EXT_BLOB]]]) -> Sequence[DataColumnSidecar]:
201+
"""
202+
Given a signed block and the cells/proofs associated with each blob in the
203+
block, assemble the sidecars which can be distributed to peers.
204+
"""
205+
blob_kzg_commitments = signed_block.message.body.blob_kzg_commitments
206+
assert len(cells_and_kzg_proofs) == len(blob_kzg_commitments)
199207
signed_block_header = compute_signed_block_header(signed_block)
200-
block = signed_block.message
201208
kzg_commitments_inclusion_proof = compute_merkle_proof(
202-
block.body,
209+
signed_block.message.body,
203210
get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments'),
204211
)
205-
cells_and_proofs = [compute_cells_and_kzg_proofs(blob) for blob in blobs]
206-
blob_count = len(blobs)
207-
cells = [cells_and_proofs[i][0] for i in range(blob_count)]
208-
proofs = [cells_and_proofs[i][1] for i in range(blob_count)]
212+
209213
sidecars = []
210214
for column_index in range(NUMBER_OF_COLUMNS):
211-
column_cells = [cells[row_index][column_index]
212-
for row_index in range(blob_count)]
213-
column_proofs = [proofs[row_index][column_index]
214-
for row_index in range(blob_count)]
215+
column_cells, column_proofs = [], []
216+
for cells, proofs in cells_and_kzg_proofs:
217+
column_cells.append(cells[column_index])
218+
column_proofs.append(proofs[column_index])
215219
sidecars.append(DataColumnSidecar(
216220
index=column_index,
217221
column=column_cells,
218-
kzg_commitments=block.body.blob_kzg_commitments,
222+
kzg_commitments=blob_kzg_commitments,
219223
kzg_proofs=column_proofs,
220224
signed_block_header=signed_block_header,
221225
kzg_commitments_inclusion_proof=kzg_commitments_inclusion_proof,

tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/test_single_merkle_proof.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ def _run_blob_kzg_commitments_merkle_proof_test(spec, state, rng=None):
3838
block.body.execution_payload.transactions = [opaque_tx]
3939
block.body.execution_payload.block_hash = compute_el_block_hash(spec, block.body.execution_payload, state)
4040
signed_block = sign_block(spec, state, block, proposer_index=0)
41-
column_sidcars = spec.get_data_column_sidecars(signed_block, blobs)
41+
cells_and_kzg_proofs = [spec.compute_cells_and_kzg_proofs(blob) for blob in blobs]
42+
column_sidcars = spec.get_data_column_sidecars(signed_block, cells_and_kzg_proofs)
4243
column_sidcar = column_sidcars[0]
4344

4445
yield "object", block.body

0 commit comments

Comments
 (0)