electrum

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

txbroadcast.py (943B)


      1 #!/usr/bin/env python3
      2 #
      3 # Connect to lots of servers and broadcast a given tx to each.
      4 
      5 import sys
      6 import asyncio
      7 
      8 from electrum.network import filter_protocol, Network
      9 from electrum.util import create_and_start_event_loop, log_exceptions
     10 from electrum.simple_config import SimpleConfig
     11 
     12 
     13 try:
     14     rawtx = sys.argv[1]
     15 except:
     16     print("usage: txbroadcast rawtx")
     17     sys.exit(1)
     18 
     19 config = SimpleConfig()
     20 
     21 loop, stopping_fut, loop_thread = create_and_start_event_loop()
     22 network = Network(config)
     23 network.start()
     24 
     25 @log_exceptions
     26 async def f():
     27     try:
     28         peers = await network.get_peers()
     29         peers = filter_protocol(peers)
     30         results = await network.send_multiple_requests(peers, 'blockchain.transaction.broadcast', [rawtx])
     31         for server, resp in results.items():
     32             print(f"result: server={server}, response={resp}")
     33     finally:
     34         stopping_fut.set_result(1)
     35 
     36 asyncio.run_coroutine_threadsafe(f(), loop)