Получить входной адрес, используя VIN txid?

Я написал следующий скрипт, чтобы получить адрес Vin из Vin txids.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests,json
url="http://asd:asdf@localhost:2332"
payload={}
payload = {"jsonrpc":1,"id":"curltext"}
 txid= "10ff6ff5bdc73d7bb6d711c6896618a05479d061e67f576a0950328c1389035f"
addresses = []

payload["method"]="getrawtransaction"
payload["params"]=[txid,1]
response = requests.post(url,json.dumps(payload))
response =response.json()
response= response["result"]["vin"]

for data in response:
    raw_tx1=data["txid"]
    vout_int=data["vout"]
    payload["params"]=[raw_tx1,1]
    response_ = requests.post(url,json.dumps(payload))
    response_= response_.json()
    data_ =response_["result"]["vout"]
    for item in data_:
        if item["n"] == vout_int:
            json_data ={}
            json_data[item["scriptPubKey"]["addresses"][0]] = item["value"]
            addresses.append(json_data)

print addresses

для некоторых txids я получаю правильный o/p, например:

[{u'MKHWXiX9Xm37jdCM8EzWMWNRJPhuwUxWiN': 50.0},{u'MVTpa2h3DGFWxkcmEkYLv4cYGggVprjjDZ': 300.0}]

но для других это говорит

    response= response["result"]["vin"]
TypeError: 'NoneType' object has no attribute '__getitem__'

Почему оно так себя ведет? Разве он не должен иметь равномерный вывод независимо от txids? Если мой подход неверен, то как мне снова получить правильные идентификаторы tx?

Ответы (1)

Эта ошибка означает, что либо responseили response['result']есть, Noneчто означает, что, getrawtransactionвероятно, не удается найти идентификатор транзакции, который вы предоставляете.

Прежде чем пытаться прочитать данные из ответа, убедитесь, что это не так Noneи действительно есть результат.

Я думаю, проблема была в том, что я не упомянул флаг txindex в своем файле .conf. Теперь, когда я поставил txindex=1, все работает нормально.