mirror of
https://github.com/LBRYFoundation/lbcd.git
synced 2025-08-30 08:51:28 +00:00
rpcclient: serialize nil inputs to empty list
This commit is contained in:
parent
6d521ff8cd
commit
714de3f3c7
3 changed files with 24 additions and 3 deletions
|
@ -63,10 +63,15 @@ type CreateRawTransactionCmd struct {
|
||||||
// NewCreateRawTransactionCmd returns a new instance which can be used to issue
|
// NewCreateRawTransactionCmd returns a new instance which can be used to issue
|
||||||
// a createrawtransaction JSON-RPC command.
|
// a createrawtransaction JSON-RPC command.
|
||||||
//
|
//
|
||||||
// Amounts are in BTC.
|
// Amounts are in BTC. Passing in nil and the empty slice as inputs is equivalent,
|
||||||
|
// both gets interpreted as the empty slice.
|
||||||
func NewCreateRawTransactionCmd(inputs []TransactionInput, amounts map[string]float64,
|
func NewCreateRawTransactionCmd(inputs []TransactionInput, amounts map[string]float64,
|
||||||
lockTime *int64) *CreateRawTransactionCmd {
|
lockTime *int64) *CreateRawTransactionCmd {
|
||||||
|
// to make sure we're serializing this to the empty list and not null, we
|
||||||
|
// explicitly initialize the list
|
||||||
|
if inputs == nil {
|
||||||
|
inputs = []TransactionInput{}
|
||||||
|
}
|
||||||
return &CreateRawTransactionCmd{
|
return &CreateRawTransactionCmd{
|
||||||
Inputs: inputs,
|
Inputs: inputs,
|
||||||
Amounts: amounts,
|
Amounts: amounts,
|
||||||
|
|
|
@ -60,6 +60,21 @@ func TestChainSvrCmds(t *testing.T) {
|
||||||
Amounts: map[string]float64{"456": .0123},
|
Amounts: map[string]float64{"456": .0123},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "createrawtransaction - no inputs",
|
||||||
|
newCmd: func() (interface{}, error) {
|
||||||
|
return btcjson.NewCmd("createrawtransaction", `[]`, `{"456":0.0123}`)
|
||||||
|
},
|
||||||
|
staticCmd: func() interface{} {
|
||||||
|
amounts := map[string]float64{"456": .0123}
|
||||||
|
return btcjson.NewCreateRawTransactionCmd(nil, amounts, nil)
|
||||||
|
},
|
||||||
|
marshalled: `{"jsonrpc":"1.0","method":"createrawtransaction","params":[[],{"456":0.0123}],"id":1}`,
|
||||||
|
unmarshalled: &btcjson.CreateRawTransactionCmd{
|
||||||
|
Inputs: []btcjson.TransactionInput{},
|
||||||
|
Amounts: map[string]float64{"456": .0123},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "createrawtransaction optional",
|
name: "createrawtransaction optional",
|
||||||
newCmd: func() (interface{}, error) {
|
newCmd: func() (interface{}, error) {
|
||||||
|
|
|
@ -261,7 +261,8 @@ func (c *Client) CreateRawTransactionAsync(inputs []btcjson.TransactionInput,
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateRawTransaction returns a new transaction spending the provided inputs
|
// CreateRawTransaction returns a new transaction spending the provided inputs
|
||||||
// and sending to the provided addresses.
|
// and sending to the provided addresses. If the inputs are either nil or an
|
||||||
|
// empty slice, it is interpreted as an empty slice.
|
||||||
func (c *Client) CreateRawTransaction(inputs []btcjson.TransactionInput,
|
func (c *Client) CreateRawTransaction(inputs []btcjson.TransactionInput,
|
||||||
amounts map[btcutil.Address]btcutil.Amount, lockTime *int64) (*wire.MsgTx, error) {
|
amounts map[btcutil.Address]btcutil.Amount, lockTime *int64) (*wire.MsgTx, error) {
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue