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)