mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-21 17:42:37 +02:00
test: addmultisigaddress, coverage for script size limits
This commit is contained in:
parent
53302a0981
commit
2451a217dd
@ -62,7 +62,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
|
|||||||
for output_type in ["bech32", "p2sh-segwit", "legacy"]:
|
for output_type in ["bech32", "p2sh-segwit", "legacy"]:
|
||||||
self.do_multisig(keys, sigs, output_type, wallet_multi)
|
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_mixing_uncompressed_and_compressed_keys(node0, wallet_multi)
|
||||||
self.test_sortedmulti_descriptors_bip67()
|
self.test_sortedmulti_descriptors_bip67()
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
|
|||||||
pubs = [self.nodes[1].getaddressinfo(addr)["pubkey"] for addr in addresses]
|
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")
|
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]
|
node1 = self.nodes[1]
|
||||||
pubkeys = self.pub[0:20]
|
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, 'p2sh-segwit')
|
||||||
assert_raises_rpc_error(-8, "Number of keys involved in the multisignature address creation > 20", node1.createmultisig, 16, self.pub, 'bech32')
|
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):
|
def do_multisig(self, nkeys, nsigs, output_type, wallet_multi):
|
||||||
node0, node1, node2 = self.nodes
|
node0, node1, node2 = self.nodes
|
||||||
pub_keys = self.pub[0: nkeys]
|
pub_keys = self.pub[0: nkeys]
|
||||||
|
Loading…
Reference in New Issue
Block a user