electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

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