|
|
|
@ -17,6 +17,7 @@ |
|
|
|
|
package ethapi |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"bytes" |
|
|
|
|
"context" |
|
|
|
|
"errors" |
|
|
|
|
"fmt" |
|
|
|
@ -1070,8 +1071,11 @@ type SendTxArgs struct { |
|
|
|
|
Gas *hexutil.Big `json:"gas"` |
|
|
|
|
GasPrice *hexutil.Big `json:"gasPrice"` |
|
|
|
|
Value *hexutil.Big `json:"value"` |
|
|
|
|
Data hexutil.Bytes `json:"data"` |
|
|
|
|
Nonce *hexutil.Uint64 `json:"nonce"` |
|
|
|
|
// We accept "data" and "input" for backwards-compatibility reasons. "input" is the
|
|
|
|
|
// newer name and should be preferred by clients.
|
|
|
|
|
Data *hexutil.Bytes `json:"data"` |
|
|
|
|
Input *hexutil.Bytes `json:"input"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// setDefaults is a helper function that fills in default values for unspecified tx fields.
|
|
|
|
@ -1096,14 +1100,23 @@ func (args *SendTxArgs) setDefaults(ctx context.Context, b Backend) error { |
|
|
|
|
} |
|
|
|
|
args.Nonce = (*hexutil.Uint64)(&nonce) |
|
|
|
|
} |
|
|
|
|
if args.Data != nil && args.Input != nil && !bytes.Equal(*args.Data, *args.Input) { |
|
|
|
|
return errors.New(`Both "data" and "input" are set and not equal. Please use "input" to pass transaction call data.`) |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (args *SendTxArgs) toTransaction() *types.Transaction { |
|
|
|
|
var input []byte |
|
|
|
|
if args.Data != nil { |
|
|
|
|
input = *args.Data |
|
|
|
|
} else if args.Input != nil { |
|
|
|
|
input = *args.Input |
|
|
|
|
} |
|
|
|
|
if args.To == nil { |
|
|
|
|
return types.NewContractCreation(uint64(*args.Nonce), (*big.Int)(args.Value), (*big.Int)(args.Gas), (*big.Int)(args.GasPrice), args.Data) |
|
|
|
|
return types.NewContractCreation(uint64(*args.Nonce), (*big.Int)(args.Value), (*big.Int)(args.Gas), (*big.Int)(args.GasPrice), input) |
|
|
|
|
} |
|
|
|
|
return types.NewTransaction(uint64(*args.Nonce), *args.To, (*big.Int)(args.Value), (*big.Int)(args.Gas), (*big.Int)(args.GasPrice), args.Data) |
|
|
|
|
return types.NewTransaction(uint64(*args.Nonce), *args.To, (*big.Int)(args.Value), (*big.Int)(args.Gas), (*big.Int)(args.GasPrice), input) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// submitTransaction is a helper function that submits tx to txPool and logs a message.
|
|
|
|
|