Was genau ist das "vout"-Feld?

Das macht mich wahnsinnig. Durch Ausprobieren, Fragen zahlreicher Leute und dem Versuch, endlose Artikel und Handbücher zu lesen, bin ich zu dem Schluss gekommen, dass die von aufgelisteten „Transaktionen“ listsinceblockziemlich irreführend sind.

Sie sind überhaupt keine Transaktionen?

Das Feld „txid“ ist beispielsweise nicht eindeutig. 0Es ist nur einzigartig, wenn es mit dem mysteriösen "vout"-Feld gekoppelt ist, das anscheinend oder sein kann 1.

Dies, gepaart mit den vielen verschiedenen „Kategorien“ (neben receiveund send), macht mich wirklich verwirrt und besorgt, dass mein Bitcoin Core-basiertes Zahlungssystem irgendwie grundlegend kaputt ist.

Kann mir bitte jemand ein für alle Mal erklären, warum es voutexistiert und warum txides nicht einzigartig ist? Und was bedeutet das in der Praxis? Liegt das daran, dass eine „Bitcoin-Zahlung“ in mehreren verschiedenen „Teiltransaktionen“ erfolgen kann? Ich war nie in der Lage, den Zweck davon zu verstehen, und es macht mich mehr als verwirrt.

Würde das jetzt gerne klären, da ich tatsächlich kurz davor stehe, einen Bitcoin-Dienst zu starten!

Antworten (2)

voutist der 0-basierte Ausgabeindex. Es kann mehr als nur 0oder sein 1, aber diese sind in der Regel am gebräuchlichsten, da Menschen keine Transaktionen mit vielen Ausgaben durchführen.

Um zu verstehen vout, müssen Sie verstehen, wie Bitcoin-Transaktionen tatsächlich funktionieren. Eine Bitcoin-Transaktion verbraucht Transaktionsausgaben als Eingaben und erstellt Transaktionsausgaben. Es kann mehrere Transaktionsausgaben verbrauchen und mehrere Transaktionsausgaben erstellen. Darüber hinaus können diese Transaktionsausgaben von verschiedenen Transaktionen verwendet werden, sodass jede eindeutig identifiziert werden kann. Ein eindeutiger Bezeichner enthält also zwei Elemente: die Transaktions-ID, um die Transaktion zu identifizieren, zu der eine Ausgabe gehört, und einen Index, der auf die Position in der Liste der Ausgaben in dieser bestimmten Transaktion zeigt.

Dieser Index ist, was das voutist. Wie bei vielen Dingen in der Informatik handelt es sich um einen auf 0 basierenden Zähler, sodass das erste Element bei index 0, das zweite bei 1und so weiter ist.

listsinceblock, listtransactions, und einige andere RPCs in Bitcoin Core listen eigentlich keine Bitcoin-Transaktionen auf. Vielmehr listen sie die logische Transaktion auf – diejenige, an die Menschen denken. Dies liegt daran, dass eine einzelne Bitcoin-Transaktion sowohl Bitcoin von Ihnen wegschicken als auch Ihnen ermöglichen kann, Bitcoin zu empfangen.

In einer einzigen Bitcoin-Transaktion können Sie Ihre eigenen Transaktionsausgaben verbrauchen, sodass die Transaktion Ihre Bitcoin wegsendet. Allerdings enthalten nicht alle Transaktionen Eingaben von derselben Person. An dieser Transaktion könnte eine andere Person beteiligt sein, die ihre eigenen Transaktionsausgaben als Eingaben für diese Transaktion hat. Und vielleicht schaffen sie eine Ausgabe, die Sie ausgeben könnten. Diese Transaktion sendet also auch Bitcoin an Sie. Diese einzelne Bitcoin-Transaktion würde dann aus zwei logischen Transaktionen bestehen – eine, bei der Sie senden, und eine, bei der Sie empfangen.

Dies kann häufig bei Änderungsausgaben auftreten, aber die Software sollte Ihnen diese nicht anzeigen, da sie intelligent genug ist, sie auszublenden und sie nicht als eigenständige logische Transaktion zu betrachten. Änderungsausgaben sind, wenn eine Transaktionsausgabe von Ihnen erstellt wird, die die Bitcoin an Sie selbst zurücksendet. Sie existieren, weil eine Transaktionsausgabe vollständig ausgegeben werden muss, aber oft stimmt der Betrag, den Sie tatsächlich senden, nicht genau mit dem genauen Betrag der Ausgabe überein, die Sie ausgeben. Sie müssen also eine Ausgabe erstellen, die den Rest an sich selbst zurücksendet.

Wenn ich also alle Einzahlungen aus der listinceblock-Antwort überprüfen möchte, muss ich den Betrag der Transaktionen mit derselben Transaktions-ID zusammenführen?
Ja. Jede empfangene Ausgabe wird separat aufgelistet.

Bitcoin-Gelder werden in Unspent Transaction Outputs (UTXO) nachverfolgt . Wann immer Sie Bitcoins senden, erklärt Ihre Wallet-Software, welche spezifischen UTXOs ausgegeben werden, und erstellt neue UTXOs, um die Gelder den bezahlten Parteien zuzuweisen. Selbst im einfachsten Fall erzeugt eine Transaktion normalerweise zwei neue Ausgänge: einen, um den Empfänger der Zahlung zu bezahlen, und einen, um das verbleibende Rückgeld dem Sender zuzuweisen.

Da eine Transaktion mehrere Ausgaben haben kann, reicht dies txidnicht aus, um UTXOs eindeutig zu identifizieren. Da jedoch die Reihenfolge der Ausgaben in einer Transaktion festgelegt ist und jede Position nur einmal vorkommen kann, kann ein UTXO durch die Transaktion, die es erzeugt hat, plus der Position in der Ausgabeliste eindeutig identifiziert werden. voutist der Index eines UTXO in der Ausgabeliste der Transaktion. Wir nennen txid:voutden Endpunkt eines UTXO.

Geben Sie hier die Bildbeschreibung ein

In diesem kommentierten Screenshot von blockstream.info sehen Sie eine Transaktion 39b6bcf049fbfba73c2e594327cafd4f93b1c23979e138d4c56ab3b7d04172ad. Es gibt ein UTXO aus, die 5. Ausgabe (vout: 4, wir beginnen bei 0 zu zählen) der Transaktion cc90096df338a6894aeef47043b995942758a1dfe52e579560e39730602a7ca4und erstellt sieben neue UTXOs, die als 39b6bc…4172ad:0through gekennzeichnet sind 39b6bc…4172ad:6.

listsinceblockinformiert Sie nur über die Ausgabe, die eine Zahlung in oder aus Ihrer Brieftasche ermöglicht hat. Beim Empfangen ist das die Ausgabe, die Ihrem Wallet gutgeschrieben wurde, beim Senden zeigt es die Ausgabe, die den Empfänger bezahlt hat.

Wenn ich also alle Einzahlungen aus der listinceblock-Antwort überprüfen möchte, muss ich den Betrag der Transaktionen mit derselben Transaktions-ID zusammenführen?
listsinceblocksollte Ihnen die Beträge mitteilen, die Sie erhalten haben. Was versuchst du zu tun und was ist passiert?
Meine Frage ist: Wenn jemand mir zum Beispiel 1 BTC zahlt, sehe ich es in einer einzigen Transaktion auf dem Ergebnis der Listeninceblocks? Oder kann ich es vielleicht in 2 oder mehr Transaktionen sehen (z. B. 0,5 und 0,5 BTC), beziehe mich aber auf dieselbe Zahlung?
Sie sollten einen Listeneintrag pro empfangener Ausgabe sehen. (Es ist jedoch schlau genug, Ihnen die geänderten Ausgaben nicht anzuzeigen.) Wenn Sie eine Ausgabe erhalten haben, sollte sie einmal aufgeführt werden, wenn Sie zwei Ausgaben erhalten, wird sie zweimal aufgeführt.