diff options
-rwxr-xr-x | test/functional/rpc_createmultisig.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/test/functional/rpc_createmultisig.py b/test/functional/rpc_createmultisig.py index e14dea70e6..fdac3623d3 100755 --- a/test/functional/rpc_createmultisig.py +++ b/test/functional/rpc_createmultisig.py @@ -62,7 +62,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework): for output_type in ["bech32", "p2sh-segwit", "legacy"]: self.do_multisig(keys, sigs, output_type, wallet_multi) - self.test_multisig_script_limit() + self.test_multisig_script_limit(wallet_multi) self.test_mixing_uncompressed_and_compressed_keys(node0, wallet_multi) self.test_sortedmulti_descriptors_bip67() @@ -84,7 +84,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework): pubs = [self.nodes[1].getaddressinfo(addr)["pubkey"] for addr in addresses] assert_raises_rpc_error(-5, "Bech32m multisig addresses cannot be created with legacy wallets", self.nodes[0].addmultisigaddress, 2, pubs, "", "bech32m") - def test_multisig_script_limit(self): + def test_multisig_script_limit(self, wallet_multi): node1 = self.nodes[1] pubkeys = self.pub[0:20] @@ -99,6 +99,17 @@ class RpcCreateMultiSigTest(BitcoinTestFramework): assert_raises_rpc_error(-8, "Number of keys involved in the multisignature address creation > 20", node1.createmultisig, 16, self.pub, 'p2sh-segwit') assert_raises_rpc_error(-8, "Number of keys involved in the multisignature address creation > 20", node1.createmultisig, 16, self.pub, 'bech32') + # Check legacy wallet related command + self.log.info('Test legacy redeem script max size limit (with wallet)') + if wallet_multi is not None and not self.options.descriptors: + assert_raises_rpc_error(-8, "redeemScript exceeds size limit: 684 > 520", wallet_multi.addmultisigaddress, 16, pubkeys, '', 'legacy') + + self.log.info('Test legacy wallet unsupported operation. 16-20 multisig p2sh-legacy and bech32 generation') + # Due an internal limitation on legacy wallets, the redeem script limit also applies to p2sh-segwit and bech32 (even when the scripts are valid) + # We take this as a "good thing" to tell users to upgrade to descriptors. + assert_raises_rpc_error(-4, "Unsupported multisig script size for legacy wallet. Upgrade to descriptors to overcome this limitation for p2sh-segwit or bech32 scripts", wallet_multi.addmultisigaddress, 16, pubkeys, '', 'p2sh-segwit') + assert_raises_rpc_error(-4, "Unsupported multisig script size for legacy wallet. Upgrade to descriptors to overcome this limitation for p2sh-segwit or bech32 scripts", wallet_multi.addmultisigaddress, 16, pubkeys, '', 'bech32') + def do_multisig(self, nkeys, nsigs, output_type, wallet_multi): node0, node1, node2 = self.nodes pub_keys = self.pub[0: nkeys] |