Glossar / Transaktionen und Gebühren
UTXO
Auch bekannt als Unspent Transaction Output.
- Was ist ein UTXO?
- Ein UTXO ist ein nicht ausgegebener Teil von Bitcoin, der an einer Adresse liegt, von einer früheren Transaktion als Ganzes erzeugt wurde und nur vollständig ausgegeben werden kann, niemals teilweise.
Bitcoin kennt keine Konten und keine Salden. Jeder Node führt stattdessen eine lebende Menge nicht ausgegebener Outputs, und das Guthaben Ihrer Wallet ist einfach die Summe derjenigen, für die sie die Schlüssel hält. Ausgeben zerstört die Coins, die Sie auswählen, und schafft neue, weshalb das Verschieben von 100.000 Satoshis mehr kosten kann als das Verschieben von 10.000.000.
Wie es funktioniert
Das Register ist eine Sammlung von Coins, keine Tabelle mit Kontoständen. Jeder Output hält zwei Dinge fest: einen Betrag in Satoshis, gespeichert als acht Byte große Zahl, und ein Sperrskript, das benennt, was zum Entsperren vorgelegt werden muss. Solange nichts ihn ausgibt, bleibt dieser Output in der nicht ausgegebenen Menge, die jeder vollständige Node vorhält und Block für Block aktualisiert.
Eine Ausgabe ist Zerstörung gefolgt von Erschaffung. Ihre Wallet wählt ganze Outputs als Inputs, weist nach, dass sie sie entsperren kann, und schreibt neue Outputs. Es wird nichts an Ort und Stelle abgezogen, das Zahlen von 0,3 BTC aus einer Coin von 1 BTC bedeutet also, eine Coin von 0,3 für den Empfänger und eine Wechselgeld-Coin von ungefähr 0,7 für Sie zu erzeugen. Die Coin, mit der Sie begonnen haben, ist dauerhaft aus der Menge verschwunden, und an der Stelle eines Eintrags stehen zwei.
Bitcoin Core hält die ganze Menge in einer LevelDB-Datenbank namens chainstate und speichert einen Teil davon im Arbeitsspeicher zwischen, wobei -dbcache standardmäßig 1.024 MiB beträgt, oder 450 auf Rechnern mit weniger als 4 GiB RAM. Diese Menge, nicht das Blockarchiv, ist es, die ein Node heranzieht, um die einzige Frage zu beantworten, die wenn eine Zahlung eingeht, zählt: Verweist dieser Input auf etwas, das noch existiert? Ein beschnittener Node kann hunderte Gigabyte alter Blöcke verwerfen und trotzdem einwandfrei validieren, weil die nicht ausgegebene Menge der Zustand ist.
Zwei Kuriositäten liegen an den Rändern. Die 50 BTC, die am 3. Januar 2009 an die Coinbase des Genesis-Blocks gezahlt wurden, wurden nie in die Datenbank geschrieben, können also nie ausgegeben werden. Und im Jahr 2010, bevor BIP30 durchgesetzt wurde, duplizierten zwei Coinbase-Transaktionen frühere und überschrieben sie, wodurch 100 BTC aus der Menge gelöscht wurden; die Regel, die doppelte Transaktionskennungen verbietet, existiert wegen dieser Blöcke.
Auch frisch geminte Coins kommen gesperrt an. Ein Coinbase-Output kann 100 Blöcke lang nicht ausgegeben werden, rund 16 Stunden, was die eigene Absicherung des Protokolls gegen kurze Ketten-Reorganisationen ist.
Warum das beim Bitcoin-Kauf zählt
Jede Auszahlung von einer Börse erzeugt genau eine Coin in Ihrer Wallet, die Form Ihres Bestands hängt also davon ab, wie oft Sie diese Schaltfläche drücken. Ein wöchentlicher Kauf, wöchentlich ausgezahlt, hinterlässt nach einem Jahr 52 Coins; derselbe Kauf, vierteljährlich ausgezahlt, hinterlässt vier. Swan und River richten beide wiederkehrende Käufe danach aus und lösen Auszahlungen eher bei Erreichen einer Schwelle als bei jeder Order aus, und der Grund ist Arithmetik: Jede dieser Coins kostet später etwa 68 virtuelle Bytes Blockplatz, um ausgegeben zu werden.
Die zweite Folge ist die Herkunft. Eine Coin ist kein anonymes Bargeld. Sie trägt die Geschichte der Transaktion mit sich, die sie erzeugt hat, und eine Auszahlung von jeder identitätsprüfenden Plattform, was nahezu jede hier bewertete Börse umfasst, erzeugt eine Coin, die in einer Compliance-Datenbank als Ihre dokumentiert ist. Käufe über Relai, das direkt an Ihre eigene Wallet liefert, kommen mit derselben Papierspur an. Solche Coins von anderswo erworbenen Coins getrennt zu halten ist nur möglich, weil sie von vornherein eigene Objekte sind.
Drittens: Eine Wallet wiederherzustellen stellt keine Coins wieder her. Eine Seed-Phrase erzeugt Schlüssel neu; danach muss die Software die Kette nach Outputs durchsuchen, die diese Schlüssel entsperren können. Verwenden Sie einen ungewöhnlichen Ableitungspfad oder stellen Sie sie in einer Software wieder her, die Ihren Adresstyp nicht prüft, liegen die Coins sicher in der nicht ausgegebenen Menge, während Ihr Guthaben null anzeigt. Einen Output-Deskriptor neben Ihren Seed-Wörtern aufzubewahren ist es, was diesen Nachmittag der Panik verhindert.
Verfolgung eines Kaufs von 0,02 BTC durch die Menge
Kaufen Sie 0,02 BTC bei Kraken und zahlen Sie sie aus. Die Börse bündelt Ihre Auszahlung mit denen anderer Kunden, und ein Output dieses Bündels im Wert von 2.000.000 Satoshis ist auf Ihre Adresse gesperrt. Ihre Wallet hält nun eine einzige Coin.
Zwei Monate später zahlen Sie jemandem 500.000 Satoshis, während der Satz für den nächsten Block 5 sat/vB beträgt. Einen nativen SegWit-Input auszugeben und zwei Outputs zu erzeugen braucht etwa 141 virtuelle Bytes, die Gebühr beträgt also 705 Satoshis. Drei Dinge geschehen zugleich: Die Coin von 2.000.000 Satoshis verlässt die nicht ausgegebene Menge, eine Coin von 500.000 Satoshis erscheint für den Empfänger, und eine Wechselgeld-Coin von 1.499.295 Satoshis erscheint auf einer neuen Adresse, die Ihre Wallet steuert.
Ihr Guthaben bewegte sich von 2.000.000 auf 1.499.295 Satoshis. Die globale Menge wuchs um einen Eintrag, was die stillen Kosten jeder Zahlung sind, die irgendjemand leistet, und der Grund, warum Nodes eine Datenbank statt einer Tabellenkalkulation brauchen.
UTXO vs. Transaktions-Output
Jeder UTXO ist ein Transaktions-Output; die meisten Transaktions-Outputs sind längst keine UTXOs mehr. Ein Output ist eine dauerhafte Zeile der Geschichte, noch ein Jahrzehnt später in dem Block lesbar, der ihn trug. Ein UTXO ist ein Anspruch auf die Gegenwart. In dem Moment, in dem jemand einen Output ausgibt, fällt er aus der nicht ausgegebenen Menge, während er für immer in der Kette bleibt, und diese Lücke ist der Grund, warum ein Node alte Blöcke wegwerfen kann, den aktuellen Zustand aber nie.
UTXO vs. Staub
Staub ist ein UTXO mit einem wirtschaftlichen Problem, keine andere Art von Objekt. Die Zugehörigkeit zur nicht ausgegebenen Menge sagt nichts darüber, ob eine Coin es wert ist, bewegt zu werden. Ein Output von 600 Satoshis ist genauso gültig wie ein Output von 6 BTC, aber bei 30 sat/vB kostet der Input, der ihn ausgibt, etwa 2.040 Satoshis, mehr als das Dreifache dessen, was er enthält. Deshalb kann eine Wallet ein Guthaben anzeigen, das Sie nicht vollständig ausgeben können.