BitcoinVonInnen

UTXO

Betrag und Ausgabebedingung als Zustandsobjekt.

Block 952.153Live

Was ist ein UTXO?

Ein UTXO (Unspent Transaction Output) ist eine noch nicht ausgegebene Transaktionsausgabe.

Im UTXO-Set wird jeder UTXO durch die Kombination aus:

  • Transaktions-ID (TXID)
  • Output-Index (vout)

identifiziert.

Die für das Verständnis eines UTXOs relevanten Daten sind:

Ein UTXO ist weder ein Konto noch ein gespeichertes Eigentum.

Er beschreibt lediglich:

Ein bestimmter Betrag darf ausgegeben werden, wenn die im ScriptPubKey definierten Bedingungen erfüllt werden.

UTXO: a1b2c3d4…:030.000.000 satsAusgabebedingung (ScriptPubKey)OP_CHECKSIG

Im UTXO-Set wird jeder UTXO durch die Kombination aus Transaktions-ID (TXID) und Output-Index (vout) identifiziert.

Unter diesem Schlüssel speichert Bitcoin die zugehörigen UTXO-Daten:

(TXID, vout)
├─ Amount
└─ ScriptPubKey
BLOCKheight843.291hash4c2a…9f01TRANSAKTIONtxid8f3a…c21dversion2flag0x01input count2marker0x00output count2locktime0INPUTS (2)OUTPUTS (2)INPUT #0TXIDa1b2c3d4…vout0Nachweis:SignaturWitnessINPUT #1TXIDe5f6g7h8…vout1Nachweis:SignaturWitnessOUTPUT #030.000.000 satsAusgabebedingung (ScriptPubKey)OP_CHECKSIGOUTPUT #119.900.000 satsAusgabebedingung (ScriptPubKey)OP_CHECKSIGUTXO-SETneue OutputsUTXO: 8f3a…c21d:030.000.000 satsAusgabebedingung (ScriptPubKey)OP_CHECKSIGUTXO: 8f3a…c21d:119.900.000 satsAusgabebedingung (ScriptPubKey)OP_CHECKSIG

Dabei verweist:

  • TXID auf die Transaktion, die den UTXO erzeugt hat
  • vout auf den konkreten Output innerhalb dieser Transaktion

Amount enthält den Betrag des UTXOs, während der ScriptPubKey die Ausgabebedingungen festlegt, die für einen zukünftigen Spend erfüllt werden müssen.

Intern speichert Bitcoin Core zusätzlich weitere Metadaten, beispielsweise die Blockhöhe, in der der UTXO entstanden ist, sowie ein Kennzeichen dafür, ob er aus einer Coinbase-Transaktion stammt:

(TXID, vout)
├─ Amount
├─ ScriptPubKey
├─ Height
└─ Coinbase-Flag

Für das Verständnis von UTXOs sind jedoch vor allem Amount und ScriptPubKey relevant, da sie den spendbaren Zustand eines UTXOs beschreiben.

Ausgabebedingungen

Jeder UTXO enthält einen ScriptPubKey.

Der ScriptPubKey definiert die Bedingungen, die erfüllt werden müssen, damit ein zukünftiger Input diesen UTXO ausgeben darf.

Welche Bedingungen genau gelten, hängt vom verwendeten Script-Typ ab.

Mehr dazu auf der Seite Scripts.

UTXOs im Chainstate

Einzelne UTXOs existieren nicht isoliert.

Die Menge aller aktuell nicht ausgegebenen UTXOs bildet das sogenannte UTXO-Set.

Dieses UTXO-Set stellt den aktuellen Konsenszustand des Bitcoin-Netzwerks dar und wird von Nodes im Chainstate verwaltet.

Wird ein UTXO ausgegeben, verschwindet er aus dem UTXO-Set. Gleichzeitig erzeugen neue Outputs neue UTXOs.

Dadurch verändern gültige Transaktionen fortlaufend den Zustand des Netzwerks.

Wie Nodes das UTXO-Set verwalten und warum der Chainstate den aktuellen Zustand von Bitcoin repräsentiert, wird auf der Seite Chainstate ausführlich erklärt.