Unverified Commit ffae2043 authored by lightclient's avatar lightclient Committed by GitHub

internal/ethapi: support both input and data for personal_sendTransaction (#23476)

Currently, setDefaults overwrites the transaction input value if only input is provided. This causes personal_sendTransaction to estimate the gas based on a transaction with empty data. eth_estimateGas never calls setDefaults so it was unaffected by this.
parent 62ad17fb
...@@ -146,6 +146,7 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error { ...@@ -146,6 +146,7 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error {
if args.Gas == nil { if args.Gas == nil {
// These fields are immutable during the estimation, safe to // These fields are immutable during the estimation, safe to
// pass the pointer directly. // pass the pointer directly.
data := args.data()
callArgs := TransactionArgs{ callArgs := TransactionArgs{
From: args.From, From: args.From,
To: args.To, To: args.To,
...@@ -153,7 +154,7 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error { ...@@ -153,7 +154,7 @@ func (args *TransactionArgs) setDefaults(ctx context.Context, b Backend) error {
MaxFeePerGas: args.MaxFeePerGas, MaxFeePerGas: args.MaxFeePerGas,
MaxPriorityFeePerGas: args.MaxPriorityFeePerGas, MaxPriorityFeePerGas: args.MaxPriorityFeePerGas,
Value: args.Value, Value: args.Value,
Data: args.Data, Data: (*hexutil.Bytes)(&data),
AccessList: args.AccessList, AccessList: args.AccessList,
} }
pendingBlockNr := rpc.BlockNumberOrHashWithNumber(rpc.PendingBlockNumber) pendingBlockNr := rpc.BlockNumberOrHashWithNumber(rpc.PendingBlockNumber)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment