51 lines
2.6 KiB
Python
51 lines
2.6 KiB
Python
# (c) Copyright 2020 by Coinkite Inc. This file is covered by license found in COPYING-CC.
|
|
#
|
|
# unit test for address decoding for multisig
|
|
from h import a2b_hex, b2a_hex
|
|
from chains import BitcoinMain, BitcoinTestnet
|
|
from multisig import disassemble_multisig
|
|
from public_constants import AF_CLASSIC, AF_P2SH, AF_P2WPKH, AF_P2WSH, AF_P2WPKH_P2SH, AF_P2WSH_P2SH
|
|
from public_constants import AFC_PUBKEY, AFC_SEGWIT, AFC_BECH32, AFC_SCRIPT, AFC_WRAPPED
|
|
|
|
if 1:
|
|
|
|
pk = a2b_hex('0202c68b0228cb577123c2f41275dadf8f4958890d3daf3728e38492f4913077dc')
|
|
script = a2b_hex('52210202c68b0228cb577123c2f41275dadf8f4958890d3daf3728e38492f4913077dc2102316dfd8d084a2b645061423013b52f513846e80c10816f66330f5609c8f6e7e221025328ece688cdc37d679b3af650f5d51487c1fe2fbd733b38cbfb58a9588a2155210288eb170b0661a6e86d1f1ab53a1099970d1b4d4cdd44d503d926effeec1e20842102fc3285261cccf4e7a44219758ee0383d25133b19a9fa14441ecb6ce9f3a4a52821038d00b6b4752dbba6afe6dcc00ef4b1fb0c212695f28a7908256808c2c201c43521038d5bcc32c89e363d181a08eb1c7613c0ba9aa02643d04cf00ae2cfea4192c9722103a11fd11e66e3d50818e3826a9b157245e6b361e32db9036768b54b4bc09adf092103d357b96bf98bcd5705d0f4745c2557d452d46a7cb9a6b193521de4516790f1182103f5bf5e00104c8956127ff926c0c5dd74690f8e67a21898cecb256dda34428a795aae')
|
|
|
|
M, N, pubkeys = disassemble_multisig(script)
|
|
|
|
assert M == 2
|
|
assert N == 10
|
|
assert pubkeys[0] == pk
|
|
|
|
# assert keys == ['mpsMLTNqBNrsQuYNmZPj7ifqqMTSnZMMWH', 'mjoj9a1cFNPhvFkbrwzNPTBCWxhteAJHE5',
|
|
# 'mkjqteuKMDApEzsZbdphtufvVPmCFafLhM', 'mvRSS7xmYBjDUEQsxvNefXLbwQHpwm76wb',
|
|
# 'mhGBcrA9xDuBWttQLZFGRBJHcGEZyQpT3b', 'mkYFhxXQY6mMZbKxcuk6j6FD2Ff1gX6zgC',
|
|
# 'mmgkFCdHKxCHuTMcJ9CPncRMA2UPainW6j', 'mg5fNCy7TJiZ8L4uxU3XerW2twNYAY3hmU',
|
|
# 'myY1Xmhx6CdvFn6uzdUDo5EM2HxmsPXPJB', 'mozpwp3z32g9vBZxbpN6ySxx7A5EWw4Zfi']
|
|
|
|
addr = BitcoinMain.p2sh_address(AF_P2SH, script)
|
|
assert addr[0] == '3'
|
|
assert addr == '3Kt6KxjirrFS7GexJiXLLhmuaMzSbjp275'
|
|
addr = BitcoinTestnet.p2sh_address(AF_P2SH, script)
|
|
assert addr[0] == '2'
|
|
assert addr == '2NBSJPhfkUJknK4HVyr9CxemAniCcRfhqp4'
|
|
|
|
addr = BitcoinMain.p2sh_address(AF_P2WSH, script)
|
|
assert addr[0:4] == 'bc1q', addr
|
|
assert len(addr) >= 62
|
|
assert addr == 'bc1qnjw7wy4e9tf4kkqaf43n2cyjwug0ystugum08c5j5hwhfncc4mkqftu4jr'
|
|
|
|
addr = BitcoinTestnet.p2sh_address(AF_P2WSH, script)
|
|
assert addr[0:4] == 'tb1q', addr
|
|
assert len(addr) >= 62
|
|
assert addr == 'tb1qnjw7wy4e9tf4kkqaf43n2cyjwug0ystugum08c5j5hwhfncc4mkq7r26gv'
|
|
|
|
|
|
if 1:
|
|
from utils import xfp2str, str2xfp
|
|
|
|
assert xfp2str(0x10203040) == '40302010'
|
|
for i in 0, 1, 0x12345678:
|
|
assert str2xfp(xfp2str(i)) == i
|