我想通知Web服务器有关传入的比特币交易。
第一个问题是,在外壳程序中运行命令时,我得到6个事务,但是在执行脚本时,我只有5个事务。
第二个问题是,当脚本运行时,我将另一个事务发送到受监视的地址时,它并不表明它找到了新的txid。
我认为它可能与subprocess.run()
的输出的缓存有关,并尝试使用另一个命令来重现它,但这很好。
#! /usr/bin/env python3
import subprocess
import json
import requests
import time
starttime=time.time()
txids = []
while True:
result = subprocess.run(['bitcoin-cli', 'listunspent'], stdout=subprocess.PIPE, input='0 9999999 "[\"BITCOIN_ADDRESS\"]"'.encode('utf-8'))
transactions = json.loads(result.stdout.decode('utf-8'))
for val in transactions:
if val['txid'] not in txids:
print ('found new txid: ' + val['txid'])
val['amount_sat'] = round(val['amount'] * 100000000)
url = 'SERVER_URL'
payload = json.dumps(val)
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, headers=headers, data=payload)
if r.text == 'success':
txids.append(val['txid'])
print ('inserted txid ' + val['txid'])
time.sleep(30.0 - ((time.time() - starttime) % 30.0))