mirror of
https://github.com/logos-blockchain/logos-blockchain-specs.git
synced 2026-01-03 13:43:11 +00:00
* Implement generator polynomial and rs encoding * Implement encode/decode+test using fft. Non-working * Use lagrange for interpolation * Remove fft, use evaluations instead * Move and rename kzg and rs test modules * Update docs * Added columns property to chunks matrix Added test for columns * Added chunkify and test * Added compute row commitments Added row commitments size test * Fix poly from evaluations method * Implement encode rows and test * Update encode row test * Implement compute row proofs (not working on extended data) * Use same polynomials for commitment and proof creation after extend * Fix polynomial from/to evaluations * Use chunks for verification * Refactor interpolate * Implement chunks matrix transposed method * Added compute column kzg commitments * Use square size data for encoder tests * Add column type to columns method * Added compute columns aggregated commitment Added aggregated commitment test Fixed and expanded encode test * Use sha3 for hashing
45 lines
794 B
Python
45 lines
794 B
Python
from dataclasses import dataclass
|
|
from itertools import chain, zip_longest
|
|
from typing import List, Generator, Self
|
|
|
|
from eth2spec.eip7594.mainnet import Bytes32
|
|
|
|
|
|
class NodeId(Bytes32):
|
|
pass
|
|
|
|
class Chunk(Bytes32):
|
|
pass
|
|
|
|
|
|
class Column(List[Bytes32]):
|
|
def as_bytes(self) -> bytes:
|
|
return bytes(chain.from_iterable(self))
|
|
|
|
|
|
class Row(List[Bytes32]):
|
|
def as_bytes(self) -> bytes:
|
|
return bytes(chain.from_iterable(self))
|
|
|
|
|
|
class ChunksMatrix(List[Row | Column]):
|
|
@property
|
|
def columns(self) -> Generator[List[Chunk], None, None]:
|
|
yield from map(Column, zip_longest(*self, fillvalue=b""))
|
|
|
|
def transposed(self) -> Self:
|
|
return ChunksMatrix(self.columns)
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
class Attestation:
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class Certificate:
|
|
pass
|
|
|