estimate_fee.py (914B)
1 #!/usr/bin/env python3 2 import json 3 import asyncio 4 from statistics import median 5 from numbers import Number 6 7 from electrum.network import filter_protocol, Network 8 from electrum.util import create_and_start_event_loop, log_exceptions 9 from electrum.simple_config import SimpleConfig 10 11 12 config = SimpleConfig() 13 14 loop, stopping_fut, loop_thread = create_and_start_event_loop() 15 network = Network(config) 16 network.start() 17 18 @log_exceptions 19 async def f(): 20 try: 21 peers = await network.get_peers() 22 peers = filter_protocol(peers) 23 results = await network.send_multiple_requests(peers, 'blockchain.estimatefee', [2]) 24 print(json.dumps(results, indent=4)) 25 feerate_estimates = filter(lambda x: isinstance(x, Number), results.values()) 26 print(f"median feerate: {median(feerate_estimates)}") 27 finally: 28 stopping_fut.set_result(1) 29 30 asyncio.run_coroutine_threadsafe(f(), loop)