summaryrefslogtreecommitdiffstats
path: root/accept.py
diff options
context:
space:
mode:
Diffstat (limited to 'accept.py')
-rw-r--r--accept.py131
1 files changed, 131 insertions, 0 deletions
diff --git a/accept.py b/accept.py
new file mode 100644
index 0000000..71aa1ca
--- /dev/null
+++ b/accept.py
@@ -0,0 +1,131 @@
+import websocket
+import time
+import json
+import threading
+import pprint
+import requests
+
+INPUT_ADDR = '12fkW5EBb3uBy1zD8pan4TcbabP5Fjato7' # bitvend addr
+#INPUT_ADDR = '1MZ6UbznUjoc34pkYyyofWJY42fAoA6k22' # test addr
+
+def get_exchange_rate(currency='PLN'):
+ return requests.get('https://blockchain.info/pl/ticker').json()[currency]['last']
+
+def to_local_currency(sat):
+ # Returns satoshi in local lowest denomination currency (grosze)
+ rate = get_exchange_rate()
+ return int(sat / 1000000.0 * rate)
+
+def process_transaction(tx):
+ tx_size = tx['x']['size']
+ tx_hash = tx['x']['hash']
+ tx_value = sum([
+ o['value'] for o in tx['x']['out'] if o['addr'] == INPUT_ADDR
+ ], 0)
+ fee = sum([i['prev_out']['value'] for i in tx['x']['inputs']]) - \
+ sum([o['value'] for o in tx['x']['out']])
+
+ fee_byte = fee / tx_size
+
+ print(tx_size, tx_hash, tx_value, fee, fee_byte)
+ print(to_local_currency(tx_value))
+
+def on_message(ws, message):
+ #print message
+ data = json.loads(message)
+ if data['op'] == 'utx':
+ process_transaction(data)
+ pprint.pprint(data)
+ for d in data['x']['out']:
+ pprint.pprint(d)
+
+def on_error(ws, error):
+ print(error)
+
+def on_close(ws):
+ print("### closed ###")
+
+def on_open(ws):
+ print("### connected ###")
+ ws.send(json.dumps({
+ "op": "addr_sub",
+ "addr": INPUT_ADDR
+ }))
+ ws.send(json.dumps({
+ "op": "addr_sub",
+ "addr": "1MZ6UbznUjoc34pkYyyofWJY42fAoA6k22"
+ }))
+
+ def run(*args):
+ while True:
+ time.sleep(20)
+ ws.send(json.dumps({
+ "op": "ping"
+ }))
+
+ threading.Thread(target=run, daemon=True).start()
+
+
+if __name__ == "__main__":
+ '''
+ process_transaction({'op': 'utx',
+ 'x': {'hash': '03ed0015c29dfc3bfd3d8a215490d82e3562fe4e8bf5f2ffa737ac8fdc850cc4',
+ 'inputs': [{'prev_out': {'addr': '1infuHrvt7tuGY8nJcfTwB3wwAR1XwUcW',
+ 'n': 0,
+ 'script': '76a91407e72dad6fc3a60ae5c4973bf2a23750713870b188ac',
+ 'spent': False,
+ 'tx_index': 93845150,
+ 'type': 0,
+ 'value': 300000},
+ 'script': '483045022100980b532c7b417b6a7ce4ef1b5e509dda61762ccbbfd35189c2ed7985e6a35d1c02205afacbda7b0e10c6b41100ecee5fc05ab47ca00c85b842923324d55c0db529f8014104e2a76bdeaa387cae1cf920a9a8b54ee4c5e7378ea1985a638f2f3ec609a1d6a54e49e85d10bec55ce9321c5a45e2b21ca8eb1a3e18635405c4812d8467339e9c',
+ 'sequence': 4294967295},
+ {'prev_out': {'addr': '1infuHrvt7tuGY8nJcfTwB3wwAR1XwUcW',
+ 'n': 0,
+ 'script': '76a91407e72dad6fc3a60ae5c4973bf2a23750713870b188ac',
+ 'spent': False,
+ 'tx_index': 182282259,
+ 'type': 0,
+ 'value': 2978800},
+ 'script': '483045022100a560606252d83635c784139ae271db498e6528d561105d72c892dc80369036d3022048bfe431f3055d115f8faf0bf2b582912fa226a2f871b44f8bef348a278c8cea014104e2a76bdeaa387cae1cf920a9a8b54ee4c5e7378ea1985a638f2f3ec609a1d6a54e49e85d10bec55ce9321c5a45e2b21ca8eb1a3e18635405c4812d8467339e9c',
+ 'sequence': 4294967295},
+ {'prev_out': {'addr': '17qC9bmMCyaReEPRWksYt99tr8s8YWLrDK',
+ 'n': 0,
+ 'script': '76a9144aee06e79fe2f92c3916b0cc0a78478e2434680e88ac',
+ 'spent': False,
+ 'tx_index': 93651246,
+ 'type': 0,
+ 'value': 407500},
+ 'script': '47304402207b0946f973566ec65f4fb3878285274410e10b758806d8b46407d5219ffb36a1022017fdde92072e94bde68271754000636aa94952b91c2d818ed6d88a08cbf900fb0121029f8261faed04d668a78eadf7a3ef845de409e500dace54e604c547702a67b4fc',
+ 'sequence': 4294967295}],
+ 'lock_time': 0,
+ 'out': [{'addr': '1MZ6UbznUjoc34pkYyyofWJY42fAoA6k22',
+ 'n': 0,
+ 'script': '76a914e17465c3ef40d44508c7e923140d54c3cd8ced3d88ac',
+ 'spent': True,
+ 'tx_index': 209616370,
+ 'type': 0,
+ 'value': 1251574},
+ {'addr': '1infuHrvt7tuGY8nJcfTwB3wwAR1XwUcW',
+ 'n': 1,
+ 'script': '76a91407e72dad6fc3a60ae5c4973bf2a23750713870b188ac',
+ 'spent': True,
+ 'tx_index': 209616370,
+ 'type': 0,
+ 'value': 2424726}],
+ 'relayed_by': '5.189.53.123',
+ 'size': 585,
+ 'time': 1484319619,
+ 'tx_index': 209616370,
+ 'ver': 1,
+ 'vin_sz': 3,
+ 'vout_sz': 2}})
+ exit(0)
+ '''
+ websocket.enableTrace(True)
+ ws = websocket.WebSocketApp("wss://ws.blockchain.info/inv",
+ on_message = on_message,
+ on_error = on_error,
+ on_close = on_close)
+ ws.on_open = on_open
+ print("### running... ###")
+ ws.run_forever()