从Python循环中调用未使用的bitcoin-cli list

时间:2019-03-07 15:54:41

标签: python python-3.x subprocess bitcoind

任务

我想通知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))

0 个答案:

没有答案