From 2a37c7f0ccff5796115d398796e5b6b1ca12f3c2 Mon Sep 17 00:00:00 2001 From: mgonen Date: Thu, 22 May 2025 14:19:34 +0300 Subject: [PATCH] Update DA encoding/verifier to v1.1 --- da/verifier.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/da/verifier.py b/da/verifier.py index 0a468cb..3dc86ab 100644 --- a/da/verifier.py +++ b/da/verifier.py @@ -1,6 +1,7 @@ from dataclasses import dataclass from typing import List, Sequence, Set from hashlib import blake2b +from eth2spec.utils import bls from eth2spec.deneb.mainnet import BLSFieldElement from eth2spec.eip7594.mainnet import ( KZGCommitment as Commitment, @@ -40,15 +41,15 @@ class DAVerifier: combined_commitment = blob.row_commitments[0] power = h for com in blob.row_commitments[1:]: - combined_commitment = combined_commitment + com * int(power) + combined_commitment = bls.add(combined_commitment,bls.multiply(com, power)) power = power * h # 3. Compute combined evaluation v = sum_{i=0..l-1} (h^i * column_data[i]) - v = BLSFieldElement(0) + combined_eval_point = BLSFieldElement(0) power = BLSFieldElement(1) - for chunk in blob.column.chunks: - x = BLSFieldElement(int.from_bytes(bytes(chunk), byteorder="big")) - v = v + x * power + for data in blob.column.chunks: + chunk = BLSFieldElement(int.from_bytes(bytes(data), byteorder="big")) + combined_eval_point = combined_eval_point + chunk * power power = power * h # 4. Verify the single KZG proof for evaluation at point w^{column_idx} - return kzg.verify_element_proof(v,combined_commitment,blob.combined_column_proof,blob.column_idx,ROOTS_OF_UNITY) + return kzg.verify_element_proof(combined_eval_point,combined_commitment,blob.combined_column_proof,blob.column_idx,ROOTS_OF_UNITY)