diff --git a/op-service/txmgr/txmgr.go b/op-service/txmgr/txmgr.go index 6fa0ea5dc15a..e8e8ae1d1883 100644 --- a/op-service/txmgr/txmgr.go +++ b/op-service/txmgr/txmgr.go @@ -349,34 +349,39 @@ func (m *SimpleTxManager) craftTx(ctx context.Context, candidate TxCandidate) (* gasLimit := candidate.GasLimit + var sidecar *types.BlobTxSidecar + var blobHashes []common.Hash + if len(candidate.Blobs) > 0 { + if candidate.To == nil { + return nil, errors.New("blob txs cannot deploy contracts") + } + if sidecar, blobHashes, err = MakeSidecar(candidate.Blobs); err != nil { + return nil, fmt.Errorf("failed to make sidecar: %w", err) + } + } + // If the gas limit is set, we can use that as the gas if gasLimit == 0 { // Calculate the intrinsic gas for the transaction - gas, err := m.backend.EstimateGas(ctx, ethereum.CallMsg{ + callMsg := ethereum.CallMsg{ From: m.cfg.From, To: candidate.To, GasTipCap: gasTipCap, GasFeeCap: gasFeeCap, Data: candidate.TxData, Value: candidate.Value, - }) + } + if len(blobHashes) > 0 { + callMsg.BlobGasFeeCap = blobBaseFee + callMsg.BlobHashes = blobHashes + } + gas, err := m.backend.EstimateGas(ctx, callMsg) if err != nil { return nil, fmt.Errorf("failed to estimate gas: %w", errutil.TryAddRevertReason(err)) } gasLimit = gas } - var sidecar *types.BlobTxSidecar - var blobHashes []common.Hash - if len(candidate.Blobs) > 0 { - if candidate.To == nil { - return nil, errors.New("blob txs cannot deploy contracts") - } - if sidecar, blobHashes, err = MakeSidecar(candidate.Blobs); err != nil { - return nil, fmt.Errorf("failed to make sidecar: %w", err) - } - } - var txMessage types.TxData if sidecar != nil { if blobBaseFee == nil {