Dash Core  0.12.2.1
P2P Digital Currency
zmq_sub.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 import array
4 import binascii
5 import zmq
6 import struct
7 
8 port = 28332
9 
10 zmqContext = zmq.Context()
11 zmqSubSocket = zmqContext.socket(zmq.SUB)
12 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashblock")
13 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashtx")
14 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashtxlock")
15 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"rawblock")
16 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"rawtx")
17 zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"rawtxlock")
18 zmqSubSocket.connect("tcp://127.0.0.1:%i" % port)
19 
20 try:
21  while True:
22  msg = zmqSubSocket.recv_multipart()
23  topic = str(msg[0].decode("utf-8"))
24  body = msg[1]
25  sequence = "Unknown";
26 
27  if len(msg[-1]) == 4:
28  msgSequence = struct.unpack('<I', msg[-1])[-1]
29  sequence = str(msgSequence)
30 
31  if topic == "hashblock":
32  print('- HASH BLOCK ('+sequence+') -')
33  print(binascii.hexlify(body).decode("utf-8"))
34  elif topic == "hashtx":
35  print ('- HASH TX ('+sequence+') -')
36  print(binascii.hexlify(body).decode("utf-8"))
37  elif topic == "hashtxlock":
38  print('- HASH TX LOCK ('+sequence+') -')
39  print(binascii.hexlify(body).decode("utf-8"))
40  elif topic == "rawblock":
41  print('- RAW BLOCK HEADER ('+sequence+') -')
42  print(binascii.hexlify(body[:80]).decode("utf-8"))
43  elif topic == "rawtx":
44  print('- RAW TX ('+sequence+') -')
45  print(binascii.hexlify(body).decode("utf-8"))
46  elif topic == "rawtxlock":
47  print('- RAW TX LOCK ('+sequence+') -')
48  print(binascii.hexlify(body).decode("utf-8"))
49 
50 except KeyboardInterrupt:
51  zmqContext.destroy()