From 61ae9d5834fd29ecd24c1aca67c98201829c9787 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Quiros Date: Wed, 31 Jan 2024 17:17:03 +0100 Subject: [PATCH] Added da encoder pipeline draft --- da/__init__.py | 0 da/encoder.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 da/__init__.py create mode 100644 da/encoder.py diff --git a/da/__init__.py b/da/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/da/encoder.py b/da/encoder.py new file mode 100644 index 0000000..744a56d --- /dev/null +++ b/da/encoder.py @@ -0,0 +1,63 @@ +from dataclasses import dataclass +from typing import List +from eth2spec.eip7594.mainnet import KZGCommitment as Commitment, KZGProof as Proof + + +class DAEncoderParams: + column_count: int + element_size: int + + +@dataclass +class EncodedData: + data: bytearray + row_commitments: List[Commitment] + row_proofs: List[List[Proof]] + column_commitments: List[Commitment] + aggregated_column_commitments: List[Commitment] + + +class DAEncoder: + def __init__(self, params: DAEncoderParams): + self.params = params + + def _chunkify_data(self) -> List[bytearray]: + ... + + def _compute_row_kzg_commitments(self, rows: List[bytearray]) -> List[Commitment]: + ... + + def _rs_encode_rows(self, rows: List[bytearray]) -> List[bytearray]: + ... + + def _rs_encode_row_commitments(self, rows: List[bytearray], commitments: List[Commitment]) -> List[Commitment]: + ... + + def _compute_rows_proofs(self, rows: List[bytearray], row_commitments: List[Commitment]) -> List[List[Proof]]: + ... + + def _compute_column_kzg_commitments(self, rows: List[bytearray]) -> List[Commitment]: + ... + + def _generate_aggregated_column_commitments( + self, rows: List[bytearray], column_commitments: List[Commitment] + ) -> Commitment: + ... + + def encode(self, data: bytearray) -> EncodedData: + rows = self._chunkify_data() + row_commitments = self._compute_row_kzg_commitments(rows) + encoded_rows = self._rs_encode_rows(rows) + row_commitments = self._rs_encode_row_commitments(encoded_rows, row_commitments) + row_proofs = self._compute_rows_proofs(encoded_rows, row_commitments) + column_commitments = self._compute_column_kzg_commitments(encoded_rows) + aggregated_column_commitment = self._generate_aggregated_column_commitments(encoded_rows, column_commitments) + result = EncodedData( + data, + row_commitments, + row_proofs, + column_commitments, + aggregated_column_commitment + + ) + return result