import argparse
from daemon import Daemon
import numpy as np
import matplotlib.pyplot as plt
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--dev', action='store_true')
parser.add_argument('--networkid')
parser.add_argument('--port')
args = parser.parse_args()
if args.dev:
d = Daemon(port=args.port, cookie_dir=f'~/.tapyrus/dev-{args.networkid}')
else:
d = Daemon(port=args.port, cookie_dir=f'~/.tapyrus/prod-{args.networkid}')
txids, = d.request('getrawmempool', [[False]])
txids = list(map(lambda a: [a], txids))
entries = d.request('getmempoolentry', txids)
entries = [{'fee': e['fee']*1e8, 'size': e['size']} for e in entries]
for e in entries:
e['rate'] = e['fee'] / e['size'] entries.sort(key=lambda e: e['rate'], reverse=True)
vsize = np.array([e['size'] for e in entries]).cumsum()
rate = np.array([e['rate'] for e in entries])
plt.semilogy(vsize / 1e6, rate, '-')
plt.xlabel('Mempool size (MB)')
plt.ylabel('Fee rate (sat/vbyte)')
plt.title('{} transactions'.format(len(entries)))
plt.grid()
plt.show()
if __name__ == '__main__':
main()