URI: 
       tbip39_recovery.py - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       tbip39_recovery.py (1285B)
       ---
            1 #!/usr/bin/env python3
            2 
            3 import sys
            4 import asyncio
            5 
            6 from electrum.util import json_encode, print_msg, create_and_start_event_loop, log_exceptions
            7 from electrum.simple_config import SimpleConfig
            8 from electrum.network import Network
            9 from electrum.keystore import bip39_to_seed
           10 from electrum.bip32 import BIP32Node
           11 from electrum.bip39_recovery import account_discovery
           12 
           13 try:
           14     mnemonic = sys.argv[1]
           15     passphrase = sys.argv[2] if len(sys.argv) > 2 else ""
           16 except Exception:
           17     print("usage: bip39_recovery <mnemonic> [<passphrase>]")
           18     sys.exit(1)
           19 
           20 loop, stopping_fut, loop_thread = create_and_start_event_loop()
           21 
           22 config = SimpleConfig()
           23 network = Network(config)
           24 network.start()
           25 
           26 @log_exceptions
           27 async def f():
           28     try:
           29         def get_account_xpub(account_path):
           30             root_seed = bip39_to_seed(mnemonic, passphrase)
           31             root_node = BIP32Node.from_rootseed(root_seed, xtype="standard")
           32             account_node = root_node.subkey_at_private_derivation(account_path)
           33             account_xpub = account_node.to_xpub()
           34             return account_xpub
           35         active_accounts = await account_discovery(network, get_account_xpub)
           36         print_msg(json_encode(active_accounts))
           37     finally:
           38         stopping_fut.set_result(1)
           39 
           40 asyncio.run_coroutine_threadsafe(f(), loop)