getrawtransaction-Fehler? [Code -5]

Ich versuche, unformatierte Transaktionen zu lesen, aber es gibt ein Problem; Scheint, als ob getrawtransaction nur für aktuelle Transaktionen funktioniert, alte Transaktionen geben mir den nächsten Fehler:

No information available about transaction (code -5)

Warum ist das so? Wie kann ich rohe Transaktionen von alten Transaktionen sehen? Wenn ich "alt" sage, ist es wie vor 5 Tagen. Ich brauche diese Transaktionen wirklich, um die Absenderadressen für jede einzelne zu erhalten. Wenn "Alterung" der Fall ist, kann ich diese Daten in meiner eigenen Datenbank behalten, bevor sie alt werden, aber ... Vielleicht geht es nicht um alte / neue Transaktionen, vielleicht gibt es Ein weiterer Faktor, der mich einige Rohtransaktionen nicht lesen lässt, wisst ihr etwas darüber?

So verwende ich den Befehl:

Arbeiten:

getrawtransaction 94628caff8b926f1247779aa687fc5cce5063f3389f291192ce1e52fae9a2655 1

Funktioniert nicht:

getrawtransaction 6e0f6cc64a08241c62eb93427923e95319c1e16db56ddeefa0c837944ce63d4b 1

Vielen Dank!

Ist das von BitcoinJ oder dem Standard-Client?
Es stammt von der Debug-Konsole von Bitcoind und Bitcoin-qt. Ich weiß ehrlich gesagt nichts über BitcoinJ.
Können Sie uns den Befehl geben, den Sie ausführen?
getrawtransaction 94628caff8b926f1247779aa687fc5cce5063f3389f291192ce1e52fae9a2655 1
getrawtransaction 6e0f6cc64a08241c62eb93427923e95319c1e16db56ddeefa0c837944ce63d4b 1
Das mag wie eine Ist-es-eingesteckt-Frage klingen, aber gibt es eine Transaktion, die darauf hinausläuft? blockchain.info scheint davon nichts zu wissen.
Das sind zwei Beispiele, das erste ist eine neue Transaktion und es funktioniert, das zweite ist eine alte Transaktion und bringt mir den Fehler, beide Transaktionen sind Testnet-Transaktionen. beide wurden auf der Debug-Konsole von bitcoin-qt verwendet
Ja, das liegt daran, dass es sich um Testnet-Transaktionen handelt.

Antworten (1)

Seit bitcoind/Bitcoin-qt 0.8 wird standardmäßig kein Transaktionsindex mehr geführt, da dies für die Validierung im neuen Datenbankmodell nicht erforderlich ist.

Stattdessen gibt es nur eine Datenbank mit nicht ausgegebenen Transaktionsausgaben, die über genügend Informationen verfügt, um Transaktionen in Blockdateien (langsam) zu lokalisieren. getrawtransactionverwendet dies, aber es funktioniert nur für Transaktionen, die noch nicht in der Blockchain ausgegeben werden.

Wenn Sie in der Lage sein möchten, historische Transaktionen nachzuschlagen, müssen Sie die txindex=1Konfigurationsoption festlegen (oder mit dem -txindexBefehlszeilen-Flag beginnen). Da diese Einstellung nur gesetzt werden kann, wenn die Datenbank erstellt wird, müssen Sie sie von Grund auf neu erstellen (mit -reindex).

Vielen Dank! Ich mache es gerade, wie lange sollte der Prozess dauern?. "bitcoind.exe -reindex" ist der Weg, es richtig zu machen?
"bitcoind.exe -reindex" reicht aus, wenn Sie in bitcoin.conf txindex=1 gesetzt haben. Je nach Hardware kann es eine halbe bis mehrere Stunden dauern.
Ja, das habe ich getan, ich schätze, ich werde mich zurücklehnen und warten, bis die Befehlszeile mir etwas sagt, ich werde auf dich zurückkommen, wenn es fertig ist. Vielen Dank!
Wie im Bitcointalk-Thread erwähnt, funktioniert es aus irgendeinem seltsamen Grund nicht bei der allerersten Bitcoin-Transaktion blockexplorer.com/tx/…
Das ist völlig normal, da die Coinbase des Genesis-Blocks aus Sicht der Blockvalidierungsregeln eigentlich nicht existiert. Es ist nicht bekannt, ob dies ein Fehler oder beabsichtigt ist, aber diese Transaktion wurde keiner Datenbank hinzugefügt, sodass sie nicht ausgegeben werden kann. Dies kann jedoch derzeit nicht sicher geändert werden (das wäre technisch gesehen ein Hard Fork ...).
@PieterWuille könnten Sie erklären, warum kein vollständiger TX-Index mehr geführt wird? Wie kann Bitcoin beispielsweise ohne den tx-Index nachverfolgen, was eine nicht ausgegebene Ausgabe im Vergleich zu einer Ausgabe ist, die ausgegeben wurde?
Indem eine separate kompakte Datenbank nur mit den nicht verbrauchten Ausgaben von Transaktionen geführt wird.