Eingabeadresse mit VIN txid abrufen?

Ich habe das folgende Skript geschrieben, um die Vin-Adresse von Vin txids zu erhalten.

#!/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

für einige txids bekomme ich zum Beispiel das richtige o/p:

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

aber für andere sagt es

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

Warum verhält es sich so? Soll es nicht unabhängig von txids eine einheitliche Ausgabe haben? Wenn mein Ansatz falsch ist, wie war ich dann wieder für einige TX-IDs richtig?

Antworten (1)

Dieser Fehler bedeutet, dass entweder responseoder response['result']ist, Nonewas bedeutet, dass getrawtransactiondie von Ihnen angegebene Transaktions-ID wahrscheinlich nicht gefunden werden kann.

Bevor Sie versuchen, Daten aus der Antwort zu lesen, vergewissern Sie sich, dass dies nicht der Fall ist Noneund tatsächlich ein Ergebnis liefert.

Ich denke, das Problem war, weil ich das txindex-Flag in meiner .conf-Datei nicht erwähnt habe. Wenn ich jetzt txindex=1 setze, scheint es gut zu funktionieren