quick_start.py (1895B)
1 #!/usr/bin/env python3 2 3 import os 4 import asyncio 5 6 from electrum.simple_config import SimpleConfig 7 from electrum import constants 8 from electrum.daemon import Daemon 9 from electrum.storage import WalletStorage 10 from electrum.wallet import Wallet, create_new_wallet 11 from electrum.wallet_db import WalletDB 12 from electrum.commands import Commands 13 from electrum.util import create_and_start_event_loop, log_exceptions 14 15 16 loop, stopping_fut, loop_thread = create_and_start_event_loop() 17 18 config = SimpleConfig({"testnet": True}) # to use ~/.electrum/testnet as datadir 19 constants.set_testnet() # to set testnet magic bytes 20 daemon = Daemon(config, listen_jsonrpc=False) 21 network = daemon.network 22 assert network.asyncio_loop.is_running() 23 24 # get wallet on disk 25 wallet_dir = os.path.dirname(config.get_wallet_path()) 26 wallet_path = os.path.join(wallet_dir, "test_wallet") 27 if not os.path.exists(wallet_path): 28 create_new_wallet(path=wallet_path, config=config) 29 30 # open wallet 31 wallet = daemon.load_wallet(wallet_path, password=None, manual_upgrades=False) 32 wallet.start_network(network) 33 34 # you can use ~CLI commands by accessing command_runner 35 command_runner = Commands(config=config, daemon=daemon, network=network) 36 print("balance", network.run_from_another_thread(command_runner.getbalance(wallet=wallet))) 37 print("addr", network.run_from_another_thread(command_runner.getunusedaddress(wallet=wallet))) 38 print("gettx", network.run_from_another_thread( 39 command_runner.gettransaction("bd3a700b2822e10a034d110c11a596ee7481732533eb6aca7f9ca02911c70a4f"))) 40 41 42 # but you might as well interact with the underlying methods directly 43 print("balance", wallet.get_balance()) 44 print("addr", wallet.get_unused_address()) 45 print("gettx", network.run_from_another_thread(network.get_transaction("bd3a700b2822e10a034d110c11a596ee7481732533eb6aca7f9ca02911c70a4f"))) 46 47 stopping_fut.set_result(1) # to stop event loop