#!/usr/bin/env python3 import json import asyncio from statistics import median from numbers import Number from electrum_onion.network import filter_protocol, Network from electrum_onion.util import create_and_start_event_loop, log_exceptions from electrum_onion.simple_config import SimpleConfig config = SimpleConfig() loop, stopping_fut, loop_thread = create_and_start_event_loop() network = Network(config) network.start() @log_exceptions async def f(): try: peers = await network.get_peers() peers = filter_protocol(peers) results = await network.send_multiple_requests( peers, 'blockchain.estimatefee', [2]) print(json.dumps(results, indent=4)) feerate_estimates = filter(lambda x: isinstance(x, Number), results.values()) print(f"median feerate: {median(feerate_estimates)}") finally: stopping_fut.set_result(1)
def setUp(self): super().setUp() self.asyncio_loop, self._stop_loop, self._loop_thread = create_and_start_event_loop( ) self.config = SimpleConfig({'electrum_path': self.electrum_path})
from electrum_onion.network import Network from electrum_onion.util import print_msg, create_and_start_event_loop from electrum_onion.synchronizer import SynchronizerBase from electrum_onion.simple_config import SimpleConfig try: addr = sys.argv[1] except Exception: print("usage: watch_address <DeepOnion_address>") sys.exit(1) config = SimpleConfig() # start network loop = create_and_start_event_loop()[0] network = Network(config) network.start() class Notifier(SynchronizerBase): def __init__(self, network): SynchronizerBase.__init__(self, network) self.watched_addresses = set() self.watch_queue = asyncio.Queue() async def main(self): # resend existing subscriptions if we were restarted for addr in self.watched_addresses: await self._add_address(addr) # main loop