[rpc] add snake case aliases for transaction methods

This commit is contained in:
Sjors Provoost 2020-03-02 14:01:27 +01:00
parent 1bc8d0fd59
commit 2c2a1445dc
No known key found for this signature in database
GPG Key ID: 57FF9BDBCC301009
2 changed files with 22 additions and 13 deletions

View File

@ -2956,12 +2956,17 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
{ {
{"add_inputs", UniValueType(UniValue::VBOOL)}, {"add_inputs", UniValueType(UniValue::VBOOL)},
{"changeAddress", UniValueType(UniValue::VSTR)}, {"changeAddress", UniValueType(UniValue::VSTR)},
{"change_address", UniValueType(UniValue::VSTR)},
{"changePosition", UniValueType(UniValue::VNUM)}, {"changePosition", UniValueType(UniValue::VNUM)},
{"change_position", UniValueType(UniValue::VNUM)},
{"change_type", UniValueType(UniValue::VSTR)}, {"change_type", UniValueType(UniValue::VSTR)},
{"includeWatching", UniValueType(UniValue::VBOOL)}, {"includeWatching", UniValueType(UniValue::VBOOL)},
{"include_watching", UniValueType(UniValue::VBOOL)},
{"lockUnspents", UniValueType(UniValue::VBOOL)}, {"lockUnspents", UniValueType(UniValue::VBOOL)},
{"lock_unspents", UniValueType(UniValue::VBOOL)},
{"feeRate", UniValueType()}, // will be checked below {"feeRate", UniValueType()}, // will be checked below
{"subtractFeeFromOutputs", UniValueType(UniValue::VARR)}, {"subtractFeeFromOutputs", UniValueType(UniValue::VARR)},
{"subtract_fee_from_outputs", UniValueType(UniValue::VARR)},
{"replaceable", UniValueType(UniValue::VBOOL)}, {"replaceable", UniValueType(UniValue::VBOOL)},
{"conf_target", UniValueType(UniValue::VNUM)}, {"conf_target", UniValueType(UniValue::VNUM)},
{"estimate_mode", UniValueType(UniValue::VSTR)}, {"estimate_mode", UniValueType(UniValue::VSTR)},
@ -2972,22 +2977,24 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
coinControl.m_add_inputs = options["add_inputs"].get_bool(); coinControl.m_add_inputs = options["add_inputs"].get_bool();
} }
if (options.exists("changeAddress")) { if (options.exists("changeAddress") || options.exists("change_address")) {
CTxDestination dest = DecodeDestination(options["changeAddress"].get_str()); const std::string change_address_str = (options.exists("change_address") ? options["change_address"] : options["changeAddress"]).get_str();
CTxDestination dest = DecodeDestination(change_address_str);
if (!IsValidDestination(dest)) { if (!IsValidDestination(dest)) {
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "changeAddress must be a valid bitcoin address"); throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Change address must be a valid bitcoin address");
} }
coinControl.destChange = dest; coinControl.destChange = dest;
} }
if (options.exists("changePosition")) if (options.exists("changePosition") || options.exists("change_position")) {
change_position = options["changePosition"].get_int(); change_position = (options.exists("change_position") ? options["change_position"] : options["changePosition"]).get_int();
}
if (options.exists("change_type")) { if (options.exists("change_type")) {
if (options.exists("changeAddress")) { if (options.exists("changeAddress") || options.exists("change_address")) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both changeAddress and address_type options"); throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both change address and address type options");
} }
OutputType out_type; OutputType out_type;
if (!ParseOutputType(options["change_type"].get_str(), out_type)) { if (!ParseOutputType(options["change_type"].get_str(), out_type)) {
@ -2996,10 +3003,12 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
coinControl.m_change_type.emplace(out_type); coinControl.m_change_type.emplace(out_type);
} }
coinControl.fAllowWatchOnly = ParseIncludeWatchonly(options["includeWatching"], *pwallet); const UniValue include_watching_option = options.exists("include_watching") ? options["include_watching"] : options["includeWatching"];
coinControl.fAllowWatchOnly = ParseIncludeWatchonly(include_watching_option, *pwallet);
if (options.exists("lockUnspents")) if (options.exists("lockUnspents") || options.exists("lock_unspents")) {
lockUnspents = options["lockUnspents"].get_bool(); lockUnspents = (options.exists("lock_unspents") ? options["lock_unspents"] : options["lockUnspents"]).get_bool();
}
if (options.exists("feeRate")) if (options.exists("feeRate"))
{ {
@ -3013,8 +3022,8 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
coinControl.fOverrideFeeRate = true; coinControl.fOverrideFeeRate = true;
} }
if (options.exists("subtractFeeFromOutputs")) if (options.exists("subtractFeeFromOutputs") || options.exists("subtract_fee_from_outputs") )
subtractFeeFromOutputs = options["subtractFeeFromOutputs"].get_array(); subtractFeeFromOutputs = (options.exists("subtract_fee_from_outputs") ? options["subtract_fee_from_outputs"] : options["subtractFeeFromOutputs"]).get_array();
if (options.exists("replaceable")) { if (options.exists("replaceable")) {
coinControl.m_signal_bip125_rbf = options["replaceable"].get_bool(); coinControl.m_signal_bip125_rbf = options["replaceable"].get_bool();

View File

@ -224,7 +224,7 @@ class RawTransactionsTest(BitcoinTestFramework):
dec_tx = self.nodes[2].decoderawtransaction(rawtx) dec_tx = self.nodes[2].decoderawtransaction(rawtx)
assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) assert_equal(utx['txid'], dec_tx['vin'][0]['txid'])
assert_raises_rpc_error(-5, "changeAddress must be a valid bitcoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'}) assert_raises_rpc_error(-5, "Change address must be a valid bitcoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'})
def test_valid_change_address(self): def test_valid_change_address(self):
self.log.info("Test fundrawtxn with a provided change address") self.log.info("Test fundrawtxn with a provided change address")