@ -92,7 +92,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' cycle rocket west magnet parrot shuffle foot correct salt library feed song '
self . assertEqual ( seed_type ( seed_words ) , ' standard ' )
ks = keystore . from_seed ( seed_words , ' ' , False )
ks = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = False )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -111,7 +111,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' bitter grass shiver impose acquire brush forget axis eager alone wine silver '
self . assertEqual ( seed_type ( seed_words ) , ' segwit ' )
ks = keystore . from_seed ( seed_words , ' ' , False )
ks = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = False )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -133,7 +133,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' bitter grass shiver impose acquire brush forget axis eager alone wine silver '
self . assertEqual ( seed_type ( seed_words ) , ' segwit ' )
ks = keystore . from_seed ( seed_words , UNICODE_HORROR , False )
ks = keystore . from_seed ( seed_words , passphrase = UNICODE_HORROR , for_multisig = False )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -155,7 +155,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' powerful random nobody notice nothing important anyway look away hidden message over '
self . assertEqual ( seed_type ( seed_words ) , ' old ' )
ks = keystore . from_seed ( seed_words , ' ' , False )
ks = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = False )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks )
self . assertTrue ( isinstance ( ks , keystore . Old_KeyStore ) )
@ -277,8 +277,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' treat dwarf wealth gasp brass outside high rent blood crowd make initial '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
root_seed = keystore . bip39_to_seed ( seed_words , ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/44 ' /0 ' /0 ' " )
root_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/44 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -296,8 +296,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' treat dwarf wealth gasp brass outside high rent blood crowd make initial '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
root_seed = keystore . bip39_to_seed ( seed_words , UNICODE_HORROR )
ks = keystore . from_bip43_rootseed ( root_seed , " m/44 ' /0 ' /0 ' " )
root_seed = keystore . bip39_to_seed ( seed_words , passphrase = UNICODE_HORROR )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/44 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -315,8 +315,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' treat dwarf wealth gasp brass outside high rent blood crowd make initial '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
root_seed = keystore . bip39_to_seed ( seed_words , ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/49 ' /0 ' /0 ' " )
root_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/49 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -335,8 +335,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
root_seed = keystore . bip39_to_seed ( seed_words , ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/84 ' /0 ' /0 ' " )
root_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/84 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -354,7 +354,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' blast uniform dragon fiscal ensure vast young utility dinosaur abandon rookie sure '
self . assertEqual ( seed_type ( seed_words ) , ' standard ' )
ks1 = keystore . from_seed ( seed_words , ' ' , True )
ks1 = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = True )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks1 )
self . assertTrue ( isinstance ( ks1 , keystore . BIP32_KeyStore ) )
self . assertEqual ( ks1 . xprv , ' xprv9s21ZrQH143K3t9vo23J3hajRbzvkRLJ6Y1zFrUFAfU3t8oooMPfb7f87cn5KntgqZs5nipZkCiBFo5ZtaSD2eDo7j7CMuFV8Zu6GYLTpY6 ' )
@ -376,7 +376,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' snow nest raise royal more walk demise rotate smooth spirit canyon gun '
self . assertEqual ( seed_type ( seed_words ) , ' segwit ' )
ks1 = keystore . from_seed ( seed_words , ' ' , True )
ks1 = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = True )
WalletIntegrityHelper . check_seeded_keystore_sanity ( self , ks1 )
self . assertTrue ( isinstance ( ks1 , keystore . BIP32_KeyStore ) )
self . assertEqual ( ks1 . xprv , ' ZprvAjxLRqPiDfPDxXrm8JvcoCGRAW6xUtktucG6AMtdzaEbTEJN8qcECvujfhtDU3jLJ9g3Dr3Gz5m1ypfMs8iSUh62gWyHZ73bYLRWyeHf6y4 ' )
@ -398,8 +398,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
seed_words = ' treat dwarf wealth gasp brass outside high rent blood crowd make initial '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
root_seed = keystore . bip39_to_seed ( seed_words , ' ' )
ks1 = keystore . from_bip43_rootseed ( root_seed , " m/45 ' /0 " )
root_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
ks1 = keystore . from_bip43_rootseed ( root_seed , derivation = " m/45 ' /0 " )
self . assertTrue ( isinstance ( ks1 , keystore . BIP32_KeyStore ) )
self . assertEqual ( ks1 . xprv , ' xprv9vyEFyXf7pYVv4eDU3hhuCEAHPHNGuxX73nwtYdpbLcqwJCPwFKknAK8pHWuHHBirCzAPDZ7UJHrYdhLfn1NkGp9rk3rVz2aEqrT93qKRD9 ' )
self . assertEqual ( ks1 . xpub , ' xpub69xafV4YxC6o8Yiga5EiGLAtqR7rgNgNUGiYgw3S9g9pp6XYUne1KxdcfYtxwmA3eBrzMFuYcNQKfqsXCygCo4GxQFHfywxpUbKNfYvGJka ' )
@ -441,7 +441,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
async def test_bip32_extended_version_bytes ( self , mock_save_db ) :
seed_words = ' crouch dumb relax small truck age shine pink invite spatial object tenant '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
bip32_seed = keystore . bip39_to_seed ( seed_words , ' ' )
bip32_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
self . assertEqual ( ' 0df68c16e522eea9c1d8e090cfb2139c3b3a2abed78cbcb3e20be2c29185d3b8df4e8ce4e52a1206a688aeb88bfee249585b41a7444673d1f16c0d45755fa8b9 ' ,
bip32_seed . hex ( ) )
@ -510,7 +510,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
encrypted_seed = slip39 . recover_ems ( mnemonics )
root_seed = encrypted_seed . decrypt ( ' TREZOR ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/44 ' /0 ' /0 ' " )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/44 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -536,7 +536,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
encrypted_seed = slip39 . recover_ems ( mnemonics )
root_seed = encrypted_seed . decrypt ( ' TREZOR ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/49 ' /0 ' /0 ' " )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/49 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -566,7 +566,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
encrypted_seed = slip39 . recover_ems ( mnemonics )
root_seed = encrypted_seed . decrypt ( ' TREZOR ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/84 ' /0 ' /0 ' " )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/84 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -594,7 +594,7 @@ class TestWalletKeystoreAddressIntegrityForMainnet(ElectrumTestCase):
encrypted_seed = slip39 . recover_ems ( mnemonics )
root_seed = encrypted_seed . decrypt ( ' TREZOR ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/49 ' /0 ' /0 ' " )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/49 ' /0 ' /0 ' " )
self . assertTrue ( isinstance ( ks , keystore . BIP32_KeyStore ) )
@ -640,7 +640,7 @@ class TestWalletKeystoreAddressIntegrityForTestnet(ElectrumTestCase):
async def test_bip32_extended_version_bytes ( self , mock_save_db ) :
seed_words = ' crouch dumb relax small truck age shine pink invite spatial object tenant '
self . assertEqual ( keystore . bip39_is_checksum_valid ( seed_words ) , ( True , True ) )
bip32_seed = keystore . bip39_to_seed ( seed_words , ' ' )
bip32_seed = keystore . bip39_to_seed ( seed_words , passphrase = ' ' )
self . assertEqual ( ' 0df68c16e522eea9c1d8e090cfb2139c3b3a2abed78cbcb3e20be2c29185d3b8df4e8ce4e52a1206a688aeb88bfee249585b41a7444673d1f16c0d45755fa8b9 ' ,
bip32_seed . hex ( ) )
@ -706,7 +706,7 @@ class TestWalletSending(ElectrumTestCase):
def create_standard_wallet_from_seed ( self , seed_words , * , config = None , gap_limit = 2 ) :
if config is None :
config = self . config
ks = keystore . from_seed ( seed_words , ' ' , False )
ks = keystore . from_seed ( seed_words , passphrase = ' ' , for_multisig = False )
return WalletIntegrityHelper . create_standard_wallet ( ks , gap_limit = gap_limit , config = config )
@mock . patch . object ( wallet . Abstract_Wallet , ' save_db ' )
@ -767,7 +767,7 @@ class TestWalletSending(ElectrumTestCase):
async def test_sending_between_p2sh_2of3_and_uncompressed_p2pkh ( self , mock_save_db ) :
wallet1a = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' blast uniform dragon fiscal ensure vast young utility dinosaur abandon rookie sure ' , ' ' , True ) ,
keystore . from_seed ( ' blast uniform dragon fiscal ensure vast young utility dinosaur abandon rookie sure ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YTPEgwk4zzr8wyo7pXGmbbVUnfYNtx6SgAMF5q3LN3Kch58P9hxGNsTmP7Dn49nnrmpE6upoRb1Xojg12FGLuLHkVpVtS44 ' ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4XJzYkhsCbDCcZRmDAKSD7bXi9mdCni7acVt45fxbTVZyU6jRGh29ULKTjoapkfFsSJvQHitcVKbQgzgkkYsAmaovcro7Mhf ' )
] ,
@ -776,7 +776,7 @@ class TestWalletSending(ElectrumTestCase):
)
wallet1b = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , ' ' , True ) ,
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YTPEgwk4zzr8wyo7pXGmbbVUnfYNtx6SgAMF5q3LN3Kch58P9hxGNsTmP7Dn49nnrmpE6upoRb1Xojg12FGLuLHkVpVtS44 ' ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YARFMEZPckrqJkw59GZD1PXtQnw14ukvWDofR7Z1HMeSCxfYEZVvg4VdZ8zGok5VxHwdrLqew5cMdQntWc5mT7mh1CSgrnX ' )
] ,
@ -849,7 +849,7 @@ class TestWalletSending(ElectrumTestCase):
async def test_sending_between_p2wsh_2of3_and_p2wsh_p2sh_2of2 ( self , mock_save_db ) :
wallet1a = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fcdcgEwTJmbmqAktuK8Kyq92fMf7sWkcP6oqAii2tG47dNbfkGEGUbfS9NuZaRywLkHE6EmUksrqo32ZL3ouLN1HTar6oRiHpDzKMAF1tf ' ) ,
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' )
] ,
@ -858,7 +858,7 @@ class TestWalletSending(ElectrumTestCase):
)
wallet1b = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' snow nest raise royal more walk demise rotate smooth spirit canyon gun ' , ' ' , True ) ,
keystore . from_seed ( ' snow nest raise royal more walk demise rotate smooth spirit canyon gun ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' ) ,
keystore . from_xpub ( ' Vpub5gSKXzxK7FeKQedu2q1z9oJWxqvX72AArW3HSWpEhc8othDH8xMDu28gr7gf17sp492BuJod8Tn7anjvJrKpETwqnQqX7CS8fcYyUtedEMk ' )
] ,
@ -968,7 +968,7 @@ class TestWalletSending(ElectrumTestCase):
async def test_sending_between_p2sh_1of2_and_p2wpkh_p2sh ( self , mock_save_db ) :
wallet1a = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' phone guilt ancient scan defy gasp off rotate approve ill word exchange ' , ' ' , True ) ,
keystore . from_seed ( ' phone guilt ancient scan defy gasp off rotate approve ill word exchange ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YPZ3ntVjqSCxiUUv2jikrUBU73Q3iJ7Y8iR41oYf991L5fanv7ciHjbjokdK2bjYqg1BzEUDxucU9qM5WRdBiY738wmgLP4 ' )
] ,
' 1of2 ' , gap_limit = 2 ,
@ -2152,12 +2152,12 @@ class TestWalletSending(ElectrumTestCase):
@mock . patch . object ( wallet . Abstract_Wallet , ' save_db ' )
async def test_coinjoin_between_two_p2wpkh_electrum_seeds ( self , mock_save_db ) :
wallet1 = WalletIntegrityHelper . create_standard_wallet (
keystore . from_seed ( ' humor argue expand gain goat shiver remove morning security casual leopard degree ' , ' ' ) ,
keystore . from_seed ( ' humor argue expand gain goat shiver remove morning security casual leopard degree ' , passphrase = ' ' ) ,
gap_limit = 2 ,
config = self . config
)
wallet2 = WalletIntegrityHelper . create_standard_wallet (
keystore . from_seed ( ' couple fade lift useless text thank badge act august roof drastic violin ' , ' ' ) ,
keystore . from_seed ( ' couple fade lift useless text thank badge act august roof drastic violin ' , passphrase = ' ' ) ,
gap_limit = 2 ,
config = self . config
)
@ -2844,8 +2844,8 @@ class TestWalletSending(ElectrumTestCase):
""" When exporting a PSBT to be signed by a hw device, test that we populate
the PSBT_GLOBAL_XPUB field with wallet xpubs .
"""
root_seed = keystore . bip39_to_seed ( " pulse mixture jazz invite dune enrich minor weapon mosquito flight fly vapor " , ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , " m/84 ' /1 ' /0 ' " )
root_seed = keystore . bip39_to_seed ( " pulse mixture jazz invite dune enrich minor weapon mosquito flight fly vapor " , passphrase = ' ' )
ks = keystore . from_bip43_rootseed ( root_seed , derivation = " m/84 ' /1 ' /0 ' " )
wallet = WalletIntegrityHelper . create_standard_wallet ( ks , gap_limit = 2 , config = self . config )
# bootstrap wallet
@ -2883,7 +2883,9 @@ class TestWalletSending(ElectrumTestCase):
"""
wallet1a = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_bip43_rootseed ( keystore . bip39_to_seed ( " income sample useless art skate lucky fold field bargain course hope chest " , ' ' ) , " m/45h/0 " , xtype = " standard " ) ,
keystore . from_bip43_rootseed (
keystore . bip39_to_seed ( " income sample useless art skate lucky fold field bargain course hope chest " , passphrase = ' ' ) ,
derivation = " m/45h/0 " , xtype = " standard " ) ,
keystore . from_xpub ( ' tpubDC1y33c2iTcxCBFva3zxbQxUnbzBT1TPVrwLgwVHtqSnVRx2pbJsrHzNYmXnKEnrNqyKk9BERrpSatqVu4JHV4K4hepFQdqnMojA5NVKxcF ' ) ,
] ,
' 2of2 ' , gap_limit = 2 ,
@ -2902,7 +2904,9 @@ class TestWalletSending(ElectrumTestCase):
wallet1b . get_keystores ( ) [ 1 ] . add_key_origin ( derivation_prefix = " m/45h/0 " , root_fingerprint = " 25750cf7 " )
wallet1b_offline = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_bip43_rootseed ( keystore . bip39_to_seed ( " wear wasp subject october amount essay maximum monkey excuse plastic ginger donor " , ' ' ) , " m/45h/0 " , xtype = " standard " ) ,
keystore . from_bip43_rootseed (
keystore . bip39_to_seed ( " wear wasp subject october amount essay maximum monkey excuse plastic ginger donor " , passphrase = ' ' ) ,
derivation = " m/45h/0 " , xtype = " standard " ) ,
keystore . from_xpub ( ' tpubDAKtPDG6fezcwhB7rNJ9NVEWwGokNzowW3AaMVYFTS4WKoBTNESS1NpntWYDq2uABVYM1xa5cVmu8LD2xKYipMRVLy1VjBQeVe6pixJeBgr ' ) ,
] ,
' 2of2 ' , gap_limit = 2 ,
@ -3055,7 +3059,7 @@ class TestWalletOfflineSigning(ElectrumTestCase):
@mock . patch . object ( wallet . Abstract_Wallet , ' save_db ' )
async def test_sending_offline_old_electrum_seed_online_mpk ( self , mock_save_db ) :
wallet_offline = WalletIntegrityHelper . create_standard_wallet (
keystore . from_seed ( ' alone body father children lead goodbye phone twist exist grass kick join ' , ' ' , False ) ,
keystore . from_seed ( ' alone body father children lead goodbye phone twist exist grass kick join ' , passphrase = ' ' , for_multisig = False ) ,
gap_limit = 4 ,
config = self . config
)
@ -3568,7 +3572,7 @@ class TestWalletOfflineSigning(ElectrumTestCase):
# 2-of-3 legacy p2sh multisig
wallet_offline1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' blast uniform dragon fiscal ensure vast young utility dinosaur abandon rookie sure ' , ' ' , True ) ,
keystore . from_seed ( ' blast uniform dragon fiscal ensure vast young utility dinosaur abandon rookie sure ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YTPEgwk4zzr8wyo7pXGmbbVUnfYNtx6SgAMF5q3LN3Kch58P9hxGNsTmP7Dn49nnrmpE6upoRb1Xojg12FGLuLHkVpVtS44 ' ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4XJzYkhsCbDCcZRmDAKSD7bXi9mdCni7acVt45fxbTVZyU6jRGh29ULKTjoapkfFsSJvQHitcVKbQgzgkkYsAmaovcro7Mhf ' )
] ,
@ -3577,7 +3581,7 @@ class TestWalletOfflineSigning(ElectrumTestCase):
)
wallet_offline2 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , ' ' , True ) ,
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YTPEgwk4zzr8wyo7pXGmbbVUnfYNtx6SgAMF5q3LN3Kch58P9hxGNsTmP7Dn49nnrmpE6upoRb1Xojg12FGLuLHkVpVtS44 ' ) ,
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4YARFMEZPckrqJkw59GZD1PXtQnw14ukvWDofR7Z1HMeSCxfYEZVvg4VdZ8zGok5VxHwdrLqew5cMdQntWc5mT7mh1CSgrnX ' )
] ,
@ -3704,7 +3708,7 @@ class TestWalletOfflineSigning(ElectrumTestCase):
# 2-of-3 p2wsh multisig
wallet_offline1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fcdcgEwTJmbmqAktuK8Kyq92fMf7sWkcP6oqAii2tG47dNbfkGEGUbfS9NuZaRywLkHE6EmUksrqo32ZL3ouLN1HTar6oRiHpDzKMAF1tf ' ) ,
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' )
] ,
@ -3713,7 +3717,7 @@ class TestWalletOfflineSigning(ElectrumTestCase):
)
wallet_offline2 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' snow nest raise royal more walk demise rotate smooth spirit canyon gun ' , ' ' , True ) ,
keystore . from_seed ( ' snow nest raise royal more walk demise rotate smooth spirit canyon gun ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' ) ,
keystore . from_xpub ( ' Vpub5gSKXzxK7FeKQedu2q1z9oJWxqvX72AArW3HSWpEhc8othDH8xMDu28gr7gf17sp492BuJod8Tn7anjvJrKpETwqnQqX7CS8fcYyUtedEMk ' )
] ,
@ -3780,7 +3784,7 @@ class TestWalletCreationChecks(ElectrumTestCase):
with self . assertRaises ( Exception ) as ctx1 :
w1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5gSKXzxK7FeKQedu2q1z9oJWxqvX72AArW3HSWpEhc8othDH8xMDu28gr7gf17sp492BuJod8Tn7anjvJrKpETwqnQqX7CS8fcYyUtedEMk ' ) , # collides with seed
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' ) ,
] ,
@ -3792,7 +3796,7 @@ class TestWalletCreationChecks(ElectrumTestCase):
with self . assertRaises ( Exception ) as ctx2 :
w2 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fcdcgEwTJmbmqAktuK8Kyq92fMf7sWkcP6oqAii2tG47dNbfkGEGUbfS9NuZaRywLkHE6EmUksrqo32ZL3ouLN1HTar6oRiHpDzKMAF1tf ' ) ,
keystore . from_xpub ( ' Vpub5fcdcgEwTJmbmqAktuK8Kyq92fMf7sWkcP6oqAii2tG47dNbfkGEGUbfS9NuZaRywLkHE6EmUksrqo32ZL3ouLN1HTar6oRiHpDzKMAF1tf ' ) ,
] ,
@ -3803,7 +3807,7 @@ class TestWalletCreationChecks(ElectrumTestCase):
# all xpubs different. should not raise.
w3 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_xpub ( ' Vpub5fcdcgEwTJmbmqAktuK8Kyq92fMf7sWkcP6oqAii2tG47dNbfkGEGUbfS9NuZaRywLkHE6EmUksrqo32ZL3ouLN1HTar6oRiHpDzKMAF1tf ' ) ,
keystore . from_xpub ( ' Vpub5fjkKyYnvSS4wBuakWTkNvZDaBM2vQ1MeXWq368VJHNr2eT8efqhpmZ6UUkb7s2dwCXv2Vuggjdhk4vZVyiAQTwUftvff73XcUGq2NQmWra ' ) ,
] ,
@ -3829,7 +3833,7 @@ class TestWalletCreationChecks(ElectrumTestCase):
w1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_xpub ( ' tpubD6NzVbkrYhZ4XYdbWCGSusTDQRAX4UnuqcikJAkqMYxBkvnGfUBvXBE84eyQS6e4To3Pz1xwLrEuxGgQayn4dqVXwNM7dWh4U4DgHai2scz ' ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
] ,
' 2of2 ' , gap_limit = 2 ,
config = self . config
@ -3839,8 +3843,8 @@ class TestWalletCreationChecks(ElectrumTestCase):
with self . assertRaises ( Exception ) as ctx3 :
w1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , ' ' , True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , ' ' , True ) ,
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_seed ( ' bitter grass shiver impose acquire brush forget axis eager alone wine silver ' , passphrase = ' ' , for_multisig = True ) ,
] ,
' 2of2 ' , gap_limit = 2 ,
config = self . config
@ -3850,8 +3854,8 @@ class TestWalletCreationChecks(ElectrumTestCase):
with self . assertRaises ( Exception ) as ctx4 :
w1 = WalletIntegrityHelper . create_multisig_wallet (
[
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , ' ' , True ) ,
keystore . from_seed ( ' powerful random nobody notice nothing important anyway look away hidden message over ' , ' ' , True ) ,
keystore . from_seed ( ' cycle rocket west magnet parrot shuffle foot correct salt library feed song ' , passphrase = ' ' , for_multisig = True ) ,
keystore . from_seed ( ' powerful random nobody notice nothing important anyway look away hidden message over ' , passphrase = ' ' , for_multisig = True ) ,
] ,
' 2of2 ' , gap_limit = 2 ,
config = self . config