46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import binascii
|
|
import json
|
|
import socket
|
|
import time
|
|
|
|
s = socket.create_connection(('localhost', 8332))
|
|
r = s.makefile()
|
|
cookie = binascii.b2a_base64(open('/home/roman/.bitcoin/.cookie', 'rb').read())
|
|
cookie = cookie.decode('ascii').strip()
|
|
|
|
def request(method, params_list):
|
|
obj = [{"method": method, "params": params} for params in params_list]
|
|
request = json.dumps(obj)
|
|
|
|
msg = ('POST / HTTP/1.1\nAuthorization: Basic {}\nContent-Length: {}\n\n'
|
|
'{}'.format(cookie, len(request), request))
|
|
s.sendall(msg.encode('ascii'))
|
|
|
|
status = r.readline().strip()
|
|
headers = []
|
|
while True:
|
|
line = r.readline().strip()
|
|
if line:
|
|
headers.append(line)
|
|
else:
|
|
break
|
|
|
|
data = r.readline().strip()
|
|
replies = json.loads(data)
|
|
assert all(r['error'] is None for r in replies), replies
|
|
return [d['result'] for d in replies]
|
|
|
|
|
|
def main():
|
|
t = time.time()
|
|
txids, = request('getrawmempool', [[False]])
|
|
print('{:.3f} {}'.format(time.time() - t, len(txids)))
|
|
t = time.time()
|
|
txids = list(map(lambda a: [a], txids))
|
|
entries = request('getmempoolentry', txids)
|
|
print('{:.3f} {}'.format(time.time() - t, len(entries)))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|