Was passiert mit UTXOs, wenn ein Transaktionsausgabeskript erfüllt ist?

Nach meinem Verständnis aus dem Buch „Mastering Bitcoin“ enthält eine Transaktionsausgabe drei Dinge

  1. Betrag - Bitcoin-Wert in Satoshis
  2. Locking-Script-Size - Locking-Script-Länge in Byte, folgt
  3. Locking-Script – Ein Skript, das die Bedingungen definiert, die zum Ausgeben der Ausgabe erforderlich sind

Nehmen wir nun an, eine Transaktionseingabe zeigt auf UTXOs, die in einer der Transaktionsausgaben durch Transaktions-Hash erwähnt werden, und eine Validierungssoftware ist in der Lage, den scriptPubKey (Sperrskript) mithilfe von script-Sig (Entsperrungsskript) zu erfüllen.

Fragen zu diesem Fall

  1. Was würde mit den in der Ausgabe der Muttertransaktion erwähnten UTXOs passieren? Würde es in der Transaktion verschwinden oder würde sich etwas ändern?
  2. Nur eine gültige Transaktion, die die Bedingungen des UTXO korrekt erfüllt, führt dazu, dass das UTXO als „ausgegeben“ markiert und aus der Menge der verfügbaren (nicht ausgegebenen) UTXO entfernt wird.

Dies war eine Aussage aus dem Buch, gibt es jetzt einen separaten Pool von UTXOs oder meinte es nur die Transaktion, die an den Blattknoten des Merkelbaums liegt? Und was tut

aus dem Satz verfügbarer (nicht verbrauchter) UTXO entfernt.

bedeuten?

  1. Würde die Ausgabe der untergeordneten Transaktion dieselben Transaktions-IDs wie die Ausgabe der untergeordneten Transaktion enthalten?

Angenommen, als der Spender versuchte zu sehen, was er alles ausgeben kann, dh die Transaktionen, die an seine Bitcoin-Adresse gerichtet waren, dann waren dies die Transaktionsausgaben, die er erhielt

[<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 with 25000000 Satoshis>, \ <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 with 16100000 Satoshis>, \ <6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 with 16050000 Satoshis>]

Bitte klärt mich auf, falls ich etwas übersehe.

Antworten (1)

Ich möchte zuerst etwas klarstellen, bevor ich versuche zu antworten, und es ist auch aus dem Buch:

Nicht ausgegebene Transaktionsausgabe (UTXO) UTXO ist eine nicht ausgegebene Transaktionsausgabe, die als Eingabe in eine neue Transaktion ausgegeben werden kann.

Ein UTXO ist per se kein Element, sondern eine Beschreibung für einen Datensatz in einer Transaktion. UTXOs können ausgegeben oder nicht ausgegeben werden. Damit Transaktionen gültig werden, können sie natürlich nur nicht ausgegebene Beträge verwenden. Wenn Sie also ein UTXO aus einer früheren Transaktion verwenden und alle Gelder an eine neue Adresse und eine Rücksendeadresse ausgeben, wird das vorherige UTXO Teil von zwei neuen UTXOs. Und ja, das vorherige UTXO ist verbraucht, in der Blockchain dokumentiert und kann nicht mehr verwendet werden.

Wenn es um das Hinzufügen oder Entfernen von UTXOs geht: Hier geht es um Mempool. Die Liste der nicht ausgegebenen TX wird vom Bitcoin-Client im Speicher gehalten. Um zu sehen, wie groß die UTXO-Datenbank ist, siehe hier. Dies ist das, was Sie als separaten Pool beschrieben haben. Und in diesem Sinne

aus dem Satz verfügbarer (nicht verbrauchter) UTXO entfernt

bedeutet einfach, dass, wenn Sie eine Transaktion gesendet haben, dieser bestimmte UTXO aus dem Mempool entfernt werden muss. Ich bin mir nicht 100% sicher, aber der Mempool wird benötigt, um zu überprüfen, ob der TX gültig ist oder nicht (auch bekannt als gibt nur gültiges UTXO aus dem Mempool aus). Siehe auch Seite 119 im Buch.

Würde die Ausgabe der untergeordneten Transaktion dieselben Transaktions-IDs wie die Ausgabe der untergeordneten Transaktion enthalten?

Jeder tx verweist auf einen vorherigen tx, um anzugeben, von welcher Transaktion (dem tx-Hash) und VOUT das Geld genommen werden soll. Ein untergeordneter TX würde also auf die TX-Eingänge eines Elternteils verweisen. Wenn der untergeordnete TX dann jedoch vom nächsten TX referenziert wird, sehen Sie keine Referenzen vom übergeordneten TX.

Angenommen, Sie haben (sehen Sie) diese drei TX_IDs und Outpoints und Werte,

7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 25000000 Satoshis
7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 16100000 Satoshis
6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 16050000 Satoshis

Die Wallet-Software würde wissen, dass dies nicht ausgegebene Ausgaben sind, und könnte aufgefordert werden, diese als Eingaben für eine neue Transaktion von ~0,57 BTC an eine neue Adresse zu verwenden.

Neben dem sehr guten Buch von Andreas empfehle ich auch den Blogeintrag von Ken Shirrif, in dem er erklärt, wie man eine tx manuell signiert . Das macht die Sache auch sehr übersichtlich.

Das U in UTXO steht für Unspent. Ein UTXO ist per Definition nicht ausgegeben. Andernfalls ist es nur eine ausgegebene Ausgabe.
Bitte korrigieren Sie mich, wenn ich falsch liege. Eine Transaktion enthält sowohl Eingaben als auch Ausgaben. Eine nicht ausgegebene Ausgabe einer Transaktion wird Teil des UTXO-Pools. Sobald ein Knoten den UTXO erhält, entfernt er ihn aus seinem Pool, sobald er validiert wurde, und sendet die Transaktion. Wenn andere Knoten diese Transaktion ebenfalls erhalten, entfernen sie auch das entsprechende UTXO aus ihren Pools. Ist es?
Ja, tx enthält Ein- und Ausgänge. Ein UTXO wird Teil des Mempools. Es wird aus Mempool entfernt, wenn es in einem Block erscheint. Siehe auch Pieters Antwort hier: bitcoin.stackexchange.com/questions/46152/…
Und hier einen guten Link zu UTXO gefunden: eprint.iacr.org/2017/1095.pdf