From d39594a7d75519fc1590bd67e15976b49c1e0071 Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 13 Jul 2025 17:13:20 +0800 Subject: [PATCH] fix CellProofsAt method --- core/types/tx_blob.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/core/types/tx_blob.go b/core/types/tx_blob.go index 93a76a28b7..17c4379dc7 100644 --- a/core/types/tx_blob.go +++ b/core/types/tx_blob.go @@ -22,11 +22,11 @@ import ( "errors" "fmt" "math/big" - "slices" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/holiman/uint256" @@ -76,14 +76,15 @@ func (sc *BlobTxSidecar) BlobHashes() []common.Hash { // CellProofsAt returns the cell proofs for blob with index idx. func (sc *BlobTxSidecar) CellProofsAt(idx int) []kzg4844.Proof { - var cellProofs []kzg4844.Proof - for i := range kzg4844.CellProofsPerBlob { - index := idx*kzg4844.CellProofsPerBlob + i - if index > len(sc.Proofs) { - return nil - } - proof := sc.Proofs[index] - cellProofs = append(cellProofs, proof) + if len(sc.Proofs) == len(sc.Blobs)*kzg4844.CellProofsPerBlob { + index := idx * kzg4844.CellProofsPerBlob + return sc.Proofs[index : index+kzg4844.CellProofsPerBlob] + } + + cellProofs, err := kzg4844.ComputeCellProofs(&sc.Blobs[idx]) + if err != nil { + log.Error("Failed to compute cell proofs for blob", "index", idx, "error", err) + return nil } return cellProofs } @@ -217,6 +218,7 @@ func (tx *BlobTx) copy() TxData { } if tx.Sidecar != nil { cpy.Sidecar = &BlobTxSidecar{ + Version: tx.Sidecar.Version, Blobs: slices.Clone(tx.Sidecar.Blobs), Commitments: slices.Clone(tx.Sidecar.Commitments), Proofs: slices.Clone(tx.Sidecar.Proofs),