From 34afde7bf2bf2d630494be799c59a6c86c7565fb Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Thu, 8 Feb 2024 12:17:46 +0100 Subject: [PATCH] core/types: simplify blob tx sidecar encoding --- core/types/transaction_marshalling.go | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/core/types/transaction_marshalling.go b/core/types/transaction_marshalling.go index 782cd4180e..4d5b2bcdd4 100644 --- a/core/types/transaction_marshalling.go +++ b/core/types/transaction_marshalling.go @@ -23,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto/kzg4844" "github.com/holiman/uint256" ) @@ -47,14 +48,13 @@ type txJSON struct { S *hexutil.Big `json:"s"` YParity *hexutil.Uint64 `json:"yParity,omitempty"` + // Blob transaction sidecar encoding: + Blobs []kzg4844.Blob `json:"blobs,omitempty"` + Commitments []kzg4844.Commitment `json:"commitments,omitempty"` + Proofs []kzg4844.Proof `json:"proofs,omitempty"` + // Only used for encoding: Hash common.Hash `json:"hash"` - - // Only used for eth_fillTransaction ing a - // blob transaction. - Blobs []hexutil.Bytes `json:"blobs,omitempty"` - Commitments []hexutil.Bytes `json:"commitments,omitempty"` - Proofs []hexutil.Bytes `json:"proofs,omitempty"` } // yParityValue returns the YParity value from JSON. For backwards-compatibility reasons, @@ -149,17 +149,9 @@ func (tx *Transaction) MarshalJSON() ([]byte, error) { yparity := itx.V.Uint64() enc.YParity = (*hexutil.Uint64)(&yparity) if sidecar := itx.Sidecar; sidecar != nil { - if len(sidecar.Blobs) != len(sidecar.Commitments) && len(sidecar.Blobs) != len(sidecar.Proofs) { - return nil, errors.New("blob fields count mismatch") - } - enc.Blobs = make([]hexutil.Bytes, len(sidecar.Blobs)) - enc.Commitments = make([]hexutil.Bytes, len(sidecar.Commitments)) - enc.Proofs = make([]hexutil.Bytes, len(sidecar.Proofs)) - for i, b := range sidecar.Blobs { - enc.Blobs[i] = b[:] - enc.Commitments[i] = sidecar.Commitments[i][:] - enc.Proofs[i] = sidecar.Proofs[i][:] - } + enc.Blobs = itx.Sidecar.Blobs + enc.Commitments = itx.Sidecar.Commitments + enc.Proofs = itx.Sidecar.Proofs } } return json.Marshal(&enc)