RPC: createmultisig/addmultisigaddress: Support named args for options

This commit is contained in:
Luke Dashjr 2024-01-04 21:10:13 +00:00
parent ecd45f5e6c
commit 30d940a219
4 changed files with 11 additions and 5 deletions

View File

@ -96,9 +96,11 @@ static const CRPCConvertParam vRPCConvertParams[] =
{ "addmultisigaddress", 0, "nrequired" },
{ "addmultisigaddress", 1, "keys" },
{ "addmultisigaddress", 2, "options" },
{ "addmultisigaddress", 2, "sort" },
{ "createmultisig", 0, "nrequired" },
{ "createmultisig", 1, "keys" },
{ "createmultisig", 2, "options" },
{ "createmultisig", 2, "sort" },
{ "listunspent", 0, "minconf" },
{ "listunspent", 1, "maxconf" },
{ "listunspent", 2, "addresses" },

View File

@ -97,9 +97,9 @@ static RPCHelpMan createmultisig()
{
{"key", RPCArg::Type::STR_HEX, RPCArg::Optional::OMITTED, "The hex-encoded public key"},
}},
{"options|address_type", {RPCArg::Type::OBJ, RPCArg::Type::STR}, RPCArg::Optional::OMITTED, "",
{"options|address_type", {RPCArg::Type::OBJ_NAMED_PARAMS, RPCArg::Type::STR}, RPCArg::Optional::OMITTED, "",
{
{"address_type", RPCArg::Type::STR, RPCArg::Default{"legacy"}, "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"address_type", RPCArg::Type::STR, RPCArg::Default{"legacy"}, "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\".", RPCArgOptions{.also_positional = true}},
{"sort", RPCArg::Type::BOOL, RPCArg::Default{false}, "Whether to sort public keys according to BIP67."},
},
RPCArgOptions{.oneline_description="options"}},

View File

@ -232,10 +232,10 @@ RPCHelpMan addmultisigaddress()
{"key", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "bitcoin address or hex-encoded public key"},
},
},
{"options|label", {RPCArg::Type::OBJ, RPCArg::Type::STR}, RPCArg::Optional::OMITTED, "",
{"options|label", {RPCArg::Type::OBJ_NAMED_PARAMS, RPCArg::Type::STR}, RPCArg::Optional::OMITTED, "",
{
{"address_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -addresstype"}, "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"label", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "A label to assign the address to."},
{"address_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -addresstype"}, "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\".", RPCArgOptions{.also_positional = true}},
{"label", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "A label to assign the address to.", RPCArgOptions{.also_positional = true}},
{"sort", RPCArg::Type::BOOL, RPCArg::Default{false}, "Whether to sort public keys according to BIP67."},
},
RPCArgOptions{.oneline_description="\"options\""}},

View File

@ -26,6 +26,8 @@ class SortMultisigTest(BitcoinTestFramework):
default = self.nodes[0].createmultisig(2, pubs)
unsorted_ms = self.nodes[0].createmultisig(2, pubs, {"sort": False})
assert_equal(unsorted_ms, self.nodes[0].createmultisig(2, pubs, options={"sort": False}))
assert_equal(unsorted_ms, self.nodes[0].createmultisig(2, pubs, sort=False))
assert_equal("2N2BchzwfyuqJep7sKmFfBucfopHZQuPnpt", unsorted_ms["address"])
assert_equal("5221022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da2103e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e921021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc1853ae", unsorted_ms["redeemScript"])
@ -33,6 +35,8 @@ class SortMultisigTest(BitcoinTestFramework):
assert_equal(default["redeemScript"], unsorted_ms["redeemScript"])
sorted_ms = self.nodes[0].createmultisig(2, pubs, {"sort": True})
assert_equal(sorted_ms, self.nodes[0].createmultisig(2, pubs, options={"sort": True}))
assert_equal(sorted_ms, self.nodes[0].createmultisig(2, pubs, sort=True))
assert_equal("2NFd5JqpwmQNz3gevZJ3rz9ofuHvqaP9Cye", sorted_ms["address"])
assert_equal("5221021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc1821022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da2103e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e953ae", sorted_ms["redeemScript"])