peers.py (940B)
1 #!/usr/bin/env python3 2 import asyncio 3 4 from electrum.network import filter_protocol, Network 5 from electrum.util import create_and_start_event_loop, log_exceptions 6 from electrum.blockchain import hash_raw_header 7 from electrum.simple_config import SimpleConfig 8 9 10 config = SimpleConfig() 11 12 loop, stopping_fut, loop_thread = create_and_start_event_loop() 13 network = Network(config) 14 network.start() 15 16 @log_exceptions 17 async def f(): 18 try: 19 peers = await network.get_peers() 20 peers = filter_protocol(peers) 21 results = await network.send_multiple_requests(peers, 'blockchain.headers.subscribe', []) 22 for server, header in sorted(results.items(), key=lambda x: x[1].get('height')): 23 height = header.get('height') 24 blockhash = hash_raw_header(header.get('hex')) 25 print(server, height, blockhash) 26 finally: 27 stopping_fut.set_result(1) 28 29 asyncio.run_coroutine_threadsafe(f(), loop)