diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index bb0dd042ab..d11d38883b 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1865,7 +1865,7 @@ func (api *TransactionAPI) SignTransaction(ctx context.Context, args Transaction // If the transaction-to-sign was a blob transaction, then the signed one // no longer retains the blobs, only the blob hashes. In this step, we need // to put back the blob(s). - if args.IsEIP4844() { + if args.Blobs != nil { signed = signed.WithBlobTxSidecar(types.NewBlobTxSidecar(sidecarVersion, args.Blobs, args.Commitments, args.Proofs)) } data, err := signed.MarshalBinary() diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index 62e9979d3d..0e655786a8 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -2698,10 +2698,15 @@ func TestSignBlobTransaction(t *testing.T) { t.Fatalf("failed to fill tx defaults: %v\n", err) } - _, err = api.SignTransaction(context.Background(), argsFromTransaction(res.Tx, b.acc.Address)) + result, err := api.SignTransaction(context.Background(), argsFromTransaction(res.Tx, b.acc.Address)) if err != nil { t.Fatalf("should not fail on blob transaction") } + // When no blobs are provided (only blob hashes), the signed transaction + // should not have an empty sidecar attached. + if result.Tx.BlobTxSidecar() != nil { + t.Fatal("signed transaction should not have a sidecar when no blobs were provided") + } } func TestSendBlobTransaction(t *testing.T) {