From 0c0c417829fa9bda3d2d8a45fca0a1e37ca6e500 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 31 Dec 2024 13:55:38 +0800 Subject: [PATCH] adjust Sender to support multiple blobs when sending a transaction --- rollup/internal/controller/sender/sender.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/rollup/internal/controller/sender/sender.go b/rollup/internal/controller/sender/sender.go index daf4e7b54..cbb8f9e01 100644 --- a/rollup/internal/controller/sender/sender.go +++ b/rollup/internal/controller/sender/sender.go @@ -171,7 +171,7 @@ func (s *Sender) getFeeData(target *common.Address, data []byte, sidecar *gethTy } // SendTransaction send a signed L2tL1 transaction. -func (s *Sender) SendTransaction(contextID string, target *common.Address, data []byte, blob *kzg4844.Blob, fallbackGasLimit uint64) (common.Hash, error) { +func (s *Sender) SendTransaction(contextID string, target *common.Address, data []byte, blobs []*kzg4844.Blob, fallbackGasLimit uint64) (common.Hash, error) { s.metrics.sendTransactionTotal.WithLabelValues(s.service, s.name).Inc() var ( feeData *FeeData @@ -179,7 +179,7 @@ func (s *Sender) SendTransaction(contextID string, target *common.Address, data err error ) - if blob != nil { + if blobs != nil { // check that number of pending blob-carrying txs is not too big if s.senderType == types.SenderTypeCommitBatch { var numPendingTransactions int64 @@ -197,7 +197,7 @@ func (s *Sender) SendTransaction(contextID string, target *common.Address, data } } - sidecar, err = makeSidecar(blob) + sidecar, err = makeSidecar(blobs) if err != nil { log.Error("failed to make sidecar for blob transaction", "error", err) return common.Hash{}, fmt.Errorf("failed to make sidecar for blob transaction, err: %w", err) @@ -681,12 +681,16 @@ func (s *Sender) getBlockNumberAndBaseFeeAndBlobFee(ctx context.Context) (uint64 return header.Number.Uint64() - 1, baseFee, blobBaseFee, nil } -func makeSidecar(blob *kzg4844.Blob) (*gethTypes.BlobTxSidecar, error) { - if blob == nil { - return nil, errors.New("blob cannot be nil") +func makeSidecar(blobsInput []*kzg4844.Blob) (*gethTypes.BlobTxSidecar, error) { + if blobsInput == nil { + return nil, errors.New("blobs cannot be nil") + } + + blobs := make([]kzg4844.Blob, len(blobsInput)) + for i, blob := range blobsInput { + blobs[i] = *blob } - blobs := []kzg4844.Blob{*blob} var commitments []kzg4844.Commitment var proofs []kzg4844.Proof