Wie kann ich mit einem RPC-Client (z. B. bitcoin-cli
) für eine bestimmte Transaktion und einen Index einer Ausgabe davon feststellen, ob die Ausgabe derzeit ein utxo ist oder ob sie bereits ausgegeben wurde?
Im letzteren Fall würde ich auch die Transaktion wissen wollen, die es ausgegeben hat.
Ich habe mir den gettxout
Befehl angesehen, aber es ist mir nicht klar, wie ich die Antwort aus den zurückgegebenen Daten extrahieren soll.
Ich betreibe einen vollständigen Knoten mit txindex=1.
Wenn gettxout
etwas zurückgegeben wird, wird die Ausgabe nicht ausgegeben. Wenn es nichts zurückgibt, hat die Ausgabe entweder nie existiert oder wird ausgegeben.
Sie brauchen -txindex
dafür nicht.
Da @pieter-wuille bereits die erste Hälfte Ihrer Frage beantwortet hat:
Wenn
gettxout
etwas zurückgegeben wird, wird die Ausgabe nicht ausgegeben. Wenn es nichts zurückgibt, hat die Ausgabe entweder nie existiert oder wird ausgegeben.
Dafür würde ich hinzufügen, dass Sie das unbestätigte Flag setzen können true
, damit es auch unbestätigte Transaktionen berücksichtigt.
Um den zweiten Teil Ihrer Frage zu beantworten, hier ist ein suboptimaler Weg, um die Transaktion zu finden, die Ihren Txo ausgegeben hat:
Dies setzt voraus, dass txindex=1
und prune=0
.
Um herauszufinden, wer den Txout ausgegeben hat, können Sie den Block herausfinden, mit dem er bestätigt wurde: getrawtransaction {txid} 1
. Von hier aus können Sie alle Blöcke bis zum zuletzt angekommenen ( getblock
) und dem Mempool ( getrawmempool
) durchlaufen, während Sie jede Transaktion überprüfen:
foreach(var input in tx.inputs)
{
if(input.prevout.txid == myTxo.txid && input.prevout.index == myTxo.index)
{
// tx spent the txo you were looking for
}
}
shx2
Unconfirmed
Parameter hier auch irgendwie relevant?Pieter Wuille
nopara73
The gettxout RPC returns details about a transaction output. Only unspent transaction outputs (UTXOs) are guaranteed to be available.
Das bedeutet, dass verbrauchte Txos möglicherweise auch verfügbar sind. Wenn Sie mit RPC spielen, scheint es in der Praxis, dass es tatsächlich nicht ausgegeben wird, wenn es nichts zurückgibt, aber ist das garantiert? Ist die Entwicklerreferenz falsch? bitcoin.org/en/developer-reference#gettxoutPieter Wuille
nopara73