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)