Was ist ein "Unspent Transaction Output" (UTXO) und was muss man beachten?

Moin zusammen!

Aufgrund der hohen Nachfrage nach diesem Thema soll es hier „kurz“ und knackig darum gehen was ein UTXO ist, warum man manchmal mehr Bitcoin verschickt als man eigentlich möchte und was das ganze mit Kosten zu tun hat.

Dieses Thema wurde, unter anderem auch von mir selbst, schon unzählige Male im Forum erklärt, trotzdem ist es immer mühsam irgendwelche alten Threads raus zu suchen in denen man dann immer nur einen Teil des gesamten Konzepts erklärt. Daher dieser Thread, den man einfach und schnell verlinken kann wenn es in irgend einer Form um das Thema UTXO geht.

Los geht’s!


Woher kommt mein „Kontostand“?

Zunächst müssen wir verstehen wie unsere Wallet, egal ob das die BlueWallet auf dem Smartphone oder Electrum mit der BitBox02 ist, es schafft uns einen „Kontostand“ anzuzeigen.

In der Blockchain wird schließlich nirgends Buch darüber geführt wie viel Bitcoin ein einzelner Nutzer besitzt. Wenn mir jemand Bitcoin schickt wird nirgends in der Blockchain eine Zahl irgendwo dazu addiert.

Stattdessen läuft alles über reine Transaktionen. Eine Bitcoin Transaktion hat Inputs, also Adressen von denen Bitcoin versendet werden und Outputs, also Adressen die Bitcoin emfpangen. Welche Bedingungen muss eine Transaktion also erfüllen damit eine Wallet es als meine Bitcoin erkennt?

  1. Die Transaktion muss einen Output an eine Adresse haben, die uns gehört.

  2. Dieser Output darf nicht bereits in einer anderen Transaktion ausgegeben worden sein.

Das bringt uns zu einem Output der noch nicht ausgegeben wurde, einem unspent transaction output, einem UTXO (TX = Transaction). Bitcoin werden also als Transaktionen gespeichert und nicht wie bei einer Bank in ein Guthaben zusammengefasst.

Jetzt kann unsere Wallet diesen Bitcoin Betrag unserem „Konto“ gutschreiben und uns hübsch in der Software anzeigen. Da unsere Wallet alle unsere Adressen kennt, kann sie die gesamte Blockchain nach Outputs absuchen die an diese Adressen gingen (und noch nicht ausgegeben wurden), egal ob die Software vorher fünf Jahre offline war oder mit der Mnemonic wiederhergestellt wurde, genial! :sunglasses:


Machen wir eine Transaktion

Wir haben bereits gelernt dass unsere Bitcoin nur in Transaktionen gespeichert werden, ähnlich wie Geldscheine in unserem Geldbeutel in der Hosentasche gespeichert werden. Unsere Wallet kann also nicht von unserem „Guthaben“ versenden, sondern muss einen UTXO finden der zu unserer Transaktion passt.

Mal angenommen ich habe frisch meine ersten Bitcoin gekauft und auf meine Wallet ausgezahlt, insgesamt 0.02263267 BTC. Jetzt möchte ich einem Freund zum Geburtstag ein bisschen Bitcoin schicken, ‎0.00172772 BTC also 172772 sats.

Die Transaktion sieht dann so aus:

Wie man unschwer erkennen kann hat die Transaktion zwei Outputs, obwohl ich doch nur an meinen Freund senden will.

UTXO können nur in ihrer Gesamtheit verbraucht werden, genau wie ein Geldschein im Geldbeutel. Da ich meinem Freund aber nicht alle meine Bitcoin schicken will teile ich den Betrag einfach auf: Den alten Betrag den ich von meiner Börse ausgezahlt habe verbrauche ich komplett, er wird zu einem STXO. Meinem Freund schicke ich die gewünschten 172772 sats an seine Adresse, ein neuer UTXO, und der Rest geht an mich zurück, auch ein neuer UTXO. ( → Wechselgeld)

Bei meiner neuen Adresse handelt es sich um eine nagelneue Wechseladresse, die meine Wallet automatisch in die Transaktion mit eingebaut hat. Tatsächlich habe ich in diesem Fall also eine neue Transaktion erhalten, die mir der Übersichtlichkeit zuliebe von meiner Software aber automatisch ausgeblendet wird.

Das war jetzt ein relativ einfaches Beispiel, es geht aber auch noch einfacher und noch komplizierter:

Hier zum Beispiel eine Transaktion, in der ein UTXO an eine einzige Adresse verbraucht wurde:

Und hier eine Transaktion, in der mehrere UTXO zu einem großen zusammengefasst wurden:

(Alle Transaktionen sind zufällig aus aktuellen Blöcken entnommen und nicht von mir)

UTXO haben allerdings zwei Nachteile, und um die geht es als nächstes.


Gebühren & Konsolidieren

Der Speicherplatz in einem neuen Block ist begrenzt, wir Nutzer umkämpfen ihn mit Transaktionsgebühren um von den Minern bevorzugt zu werden. Je größer eine Transaktion, also je mehr Speicher sie verbraucht, desto mehr müssen wir für die Transaktion bezahlen.

Gebühren werden in sat/vB also vereinfacht Satoshis pro Speicherplatz angegeben.

Daraus folgt die logische Schlussfolgerung dass Transaktionen mit mehr In- bzw. Outputs auch entsprechend teurer sind, weil die zusätzliche Information in der Transaktion nunmal Platz braucht. Bedeutet: Je mehr UTXO wir für eine Transaktion benötigen desto höher sind für uns die Gebühren die wir an die Miner abgegeben.

Wer das bis hier noch nicht verstanden hat, hier eine Analogie :

  • Du möchtest im Restaurant die Rechnung bezahlen, insgesamt 67,43€. Die einfachste Option wäre dem Personal einfach einen 100€ Schein zu überlassen und auf 70€ aufzurunden um nur einen 10€- und einen 20€-Schein zurück zu erhalten. Das geht am schnellsten und verbraucht in deinem und im Geldbeutel der Bedienung wenig Platz.

    Alternativ könntest du mit einem Schubkarren aus roten Cent-Münzen bezahlen. Das ist sehr umständlich, verbraucht sehr viel Platz und du bekommst wahrscheinlich Todesblicke zugeworfen.

Die Umständlichkeit und die bösen Blicke treffen auf das Bitcoin Netzwerk zwar nicht zu, aber der Speicherplatz umso mehr. Es ist für dich am Ende einfach teurer eine große Transaktion zu tätigen.

- - - - - - - - - - - - - - - - - - - - - - - -

Wichtig:

Es macht keinen Unterschied ob ihr an unterschiedliche Adressen oder an die gleiche Adresse Transaktionen tätigt. Aus jeder neuen Transaktion bzw. jedem Output folgt ein neuer UTXO. Ihr spart keine Gebühren durch das wiederverwenden einer Adresse. Es gibt grundsätzlich keinen ökonomischen Grund eine Adresse mehrmals zu verwenden - von den Nachteilen im Punkt Privatsphäre will ich erst gar nicht sprechen.

Adressen != UTXO

Benutzt immer unterschiedliche, neue, Adressen.

- - - - - - - - - - - - - - - - - - - - - - - -

Behalten wir im Hinterkopf dass Transaktionen in Zukunft wahrscheinlich sehr teuer werden, lohnt es sich bereits heute darüber nachzudenken die eigenen UTXO aktiv zu verwalten!

Das bedeutet konkret:

  • Möglichst wenige UTXO ansammeln
  • Möglichst günstig angesammelte UTXO konsolidieren (zusammenfassen)

Als Beispiel: Wer monatlich Bitcoin nach dem DCA Prinzip spart und jeden Monat eine Auszahlung auf die eigene Wallet tätigt, sammelt damit auch monatlich einen neuen UTXO. Wenn man das 10 Jahre lang durchzieht und dann verkaufen möchte muss man im Jahr 2031 ganze 120 UTXO zusammenfassen, was (nach meiner persönlichen Einschätzung) eine unfassbar hohe Gebühr zur Folge haben könnte.

Daher kann man, konkret in diesem Beispiel, folgendes tun, hier folgt meine persönliche Meinung:

  1. Möglichst selten auf die eigene Wallet auszahlen.

    Hier muss man eine persönliche Abwägung treffen. Man sollte meiner Meinung nach immer dann auszahlen sobald man sich mit dem Betrag auf der Exchange nicht mehr wohl fühlt; dieser Betrag ist extrem subjektiv!

    Trotzdem würde ich empfehlen nur alle paar Monate auszuzahlen, um direkt mehrere Sparraten in nur einen UTXO zu übernehmen. Das hängt natürlich immer vom Betrag ab: Wer 100€ im Monat spart kann ohne Bedenken ein paar Monate warten; Wer 1000€ im Monat spart sollte vielleicht schon früher an die Auszahlung denken.

  2. Möglichst günstig konsolidieren

    Gerade in letzter Zeit hatten wir oft Phasen in denen Transaktionen für nur 1 sat/vB bestätigt wurden. Hier lohnt es sich die, in der Zukunft potentiell hohen Gebühren, jetzt schon vorweg zu nehmen, und für wenige Cent die Anzahl der UTXO zu reduzieren.

    Wie man eine solche Konsolidierung umsetzt, dazu später mehr.


Privatsphäre & Kaufkraft

Auch das Thema Privatsphäre ist bei diesem Thema ein sehr wichtiges, konkret aus drei Gründen:

  • Verwendet man einen großen UTXO für eine kleine Bezahlung sieht der Empfänger die Größe des STXO. Besitzt man also einen ganzen Coin und verwahrt diesen in einem einzelnen UTXO sieht der Empfänger von 0,0001 BTC das und kennt euren restlichen Besitz. Das ist als würdet ihr mit einem 500€ Schein ein Center-Shock kaufen.

  • Beim Konsolidieren werden nicht nur die Beträge zusammengefasst, sondern entsprechend auch die gesamten Transaktionshistorien der konsolidierten UTXO. Fasst ihr also auf einen UTXO zusammen und tätigt von diesem eine Transaktion, können alle vorangegangenen Transaktionen nachvollzogen werden.

  • Wechselgeld („change“) kann sehr einfach als solches identifiziert werden. Zum einen liegt das am identischen Adresstyp, zum anderen kann man es meistens recht leicht am Betrag ableiten. Sendet ihr also nur einen Teil eines UTXO an eine andere Person, kann dieser über die Change-Adresse zukünftige Transaktionen, ausgehend von dieser Adresse, ebenfalls nachvollziehen, vor allem wenn die Wechseladresse wiederum mit anderen UTXO zusammen verbraucht werden.

Um diese „Risiken“ abzuschwächen lohnt es sich Gedanken über das zukünftige Kaufverhalten zu machen, also wie viel Kaufkraft man in Zukunft benötigt, um dann entsprechende UTXO für bestimmte Zwecke zu reservieren. Das ist extrem individuell und muss jeder für sich selbst abwägen, für manche wird dies ein irrelevanter Punkt sein.

Besitzt man z.B. 0,1 BTC kann man 0,09 BTC in einen „HODL-UTXO“ packen und diesen immer entsprechend erweitern. Neben dem besparen benutzt man diesen oder diese UTXO nicht.

Die restlichen 0,01 BTC kann man dann in einen oder mehrere „Shopping-UTXO“ packen und entsprechend verwenden.

Um ein Gefühl dafür zu bekommen lohnt es sich mit einem Block Explorer eurer Wahl mal zufällig eine Transaktion auszuwählen und zu versuchen möglichst viel in der Historie nachzuvollziehen, zum Beispiel könnte man versuchen die Auszahlung der Exchange wieder zu finden.

Mit der anstehenden Aktivierung von Taproot verändern sich manche der hier genannten Aspekte leicht, mehr zu Privatsphäre & Taproot findet ihr hier und hier.


Umsetzung einer Konsolidierung

Wenn ihr eure UTXO zusammenfassen wollt geht das grundsätzlich ganz einfach:

  • An eine eigene Adresse senden

Häufig herrscht hierbei eine Unsicherheit, die eigentlich völlig unbegründet ist. Wir haben oben bereits gelernt dass man ohnehin andauernd Transaktionen an eigene Adressen tätigt, ohne es zu merken.

Wenn man den gesamten Besitz in einen UTXO zusammenfassen will, sendet man einfach alles an eine neue Adresse.

Schwieriger wird es wenn man geziehlt einzelne UTXO verwalten will, da die Wallet Software normalerweise automatisch die UTXO auswählt, die am besten für eine Transaktion geeignet sind. Um das zu umgehen bieten viele Wallets „Coin Control“ an. So könnt ihr geziehlt die UTXO auswählen, die ihr für eure Konsolidierung verwenden wollt.

In den Einstellungen der BitBox App könnt ihr dafür einfach den Haken bei „Enable coin control“ setzen:

Hier findet ihr die Option beim Senden in der Ledger Live App:

In der BlueWallet auf dem Smartphone klickt ihr auf Send•••Coin Control.

Ansonsten empfehle ich euch die Sparrow Wallet, die eine ausgezeichnete Übersicht über eure UTXO bietet und Konsolidierungen visuell sehr gut veranschaulicht. Die Sparrow Wallet funktioniert mit den meisten gängigen Hardware Wallets.

Außerdem habt ihr beim Konsolidieren keinen „Zeitdruck“. Selbst wenn die Gebühren aktuell teurer sind, kostet es euch nichts einfach eine Transaktion „Auf gut Glück“ zu erstellen und die Gebührenrate absurd niedrig einzustellen. Vielleicht habt ihr Glück, und irgendwann innerhalb mehrerer Tage wird eure Transaktion tatsächlich bestätigt.

(Nein, hierbei herrscht kein Risiko Bitcoin zu verlieren, wenn eine Transaktion nicht bestätigt wird verliert ihr auch keine Bitcoin. Mit RBF oder CPFP könnt ihr auch nachträglich dafür sorgen dass die Transaktion bestätigt wird - oder ihr wartet einfach so lange bis sie aus fast allen Mempools gelöscht wurde.)


Quellen

Hier gibt’s noch mehr zu dem Thema im Forum:

Danke an @skyrmion und @Makowski für die vielen Beiträge zu diesem Thema!


Danke fürs Lesen, ich hoffe es war hilfreich. Bei Fragen, Anmerkungen oder Kritik gerne melden! :slight_smile:

Dieser Beitrag wird gegebenenfalls in Zukunft noch erweitert.

Viele Grüße & HODL on :grinning:
Sebastian

41 „Gefällt mir“

Super Beitrag, das erklärt das Thema echt verständlich! :+1:

2 „Gefällt mir“

Klasse, das hätte ich gerne schon vor Monaten zur Verfügung gehabt. :smiley:

2 „Gefällt mir“

Good Job @sutterseba… tatsächlich hab ich das Thema in abgespeckter Form im Beitrag Die 6 häufigsten Bitcoin- Missverständnisse - Blocktrainer (siehe Punkt 6) auch mal erklärt.

Aber in so ausführlicher Form hat das tatsächlich noch gefehlt. Vielen Dank :slight_smile:

Wenn du Lust hast könnten wir den mit Link zu deinem Profil hier glatt als Gastbeitrag auf Blocktrainer.de bringen =)
Ich melde mich diesbezüglich mal in einer PN bei dir xD

3 „Gefällt mir“

Oha :exploding_head: 1000 Dank für diesen ausführlichen und super verständlichen Betrag! Unglaublich, wie toll die Community hier ist! :heart:

1 „Gefällt mir“

Aber sowas von!! :100:

Vielen lieben Dank für diese super-verständliche, sehr klare Darstellung - hilft mir Newbie einen enormen Schritt weiter. Kommt in meine Sammlung „Was ich schon immer über Bitcoin wissen wollte.“

1 „Gefällt mir“

Echt ein super Beitrag :smiley:

Ich habe eine Frage: Also je mehr in einer Transaktion drin steht, desto größer ist sie (und kostet dann auch mehr). Gibt es bei der Größe einen unterschied zwischen „inputs“ und „outputs“?
Also macht es einen unterschied ob eine transaktion ganz viele inputs hat oder ganz viele outputs hat?

und noch eine frage: müsste es nicht einen output für die miner geben? weil in dem einen bild oben sieht man nur 1.

1 „Gefällt mir“

Zwei sehr gute Fragen!

Wenn du dir die Transaktion oben mal anschaust fällt dir eine Differenz zwischen Input und Output auf, das ist die Gebühr die an die Miner geht. Man gibt also mehr in die Transaktion rein als man raus nimmt und definiert, je nach dem wie groß die Differenz ist, die Höhe der Gebühr.

Das selbe passiert im Restaurant wenn du der Bedienung für das 19,70€ Essen einen 20€ Schein gibst und sagst „Stimmt so“.

So kann man ohne zusätzlichen Platzverbrauch einen weiteren Parameter, die Netzwerkgebühr, definieren. Es gilt immer Fee = Input - Output.

Es gibt tatsächlich einen Unterschied. Während bei einem Output einfach nur ein Ziel angegeben wird muss im Input neben der Information um welchen UTXO es geht auch bewiesen werden dass man den Private Key für diesen UTXO besitzt.

Das näher zu erklären würde aber etwas den Rahmen sprengen und das müsste ich mir auch genauer anschauen.

Dazu kannst du dir Kapitel 6 in Mastering Bitcoin anschauen:

4 „Gefällt mir“

Ahhh, das macht sinn! danke für die antwort @sutterseba . :blush:

also kann man grob schon sagen dass eine transaktion mit ganz vielen inputs teurer ist als eine mit vielen outputs? weil das würde ja nochmal bestärken dass es wichtig ist diese zusammenfassungen zu machen…

@sutterseba

Ich versuche mich gerade an einer Konsolidierung. Dazu hast Du geschrieben:

Das wirft bei mir die Frage auf, wo ich auf der BitBox die UTXO finde, die zu einer Walletadresse gehören.

Wenn ich wie von Dir dargestellt, Coin Control aktiviere, sehe ich für jede Adresse eine ID. Ist das die UTXO oder noch etwas anderes?

In der BitBox App wird für jeden UTXO unter der Adresse die Transaktions ID als „Outpoint“ angegeben. Damit kann die Transaktion und der entsprechende Output in dieser Transaktion exakt identifiziert werden.

Dieser Outpoint beschreibt zum Beispiel den achten (bzw. neunten) Output dieser Transaktion:

ff6a1633b87ad2e231a77008fca8f91e82ac611918a3938687f719cd56bd43cf:8

Zuerst die Transaktions ID an sich, und dann das :8 für den entsprechenden Output.

Falls mehrere Transaktionen auf einer Adresse eingegangen sind, werden dir in der App einfach mehrere UTXO aufgelistet, zwar unter der gleichen Adresse, aber mit unterschiedlichen Outpoints.

Denn, wie im Zitat oben, es geht um Transaktions-Outputs, nicht um Adressen. Die Adresse ist nur das Namensschild auf dem Briefkasten. Die UTXO sind die Anzahl Briefe in diesem Briefkasten. Mit Coin Control kannst du individuell aussuchen welche Briefe du aus dem Briefkasten nehmen willst.

Beantwortet das die Frage? :grinning:

5 „Gefällt mir“

Ich bin mir nicht sicher, ob ich das richtig verstehe. Kann ich das Beispiel Deiner Erklärung

wie folgt zusammenfassen?

Id : UTXO

Falls ja, hätte ich noch eine Frage dazu: Ich habe mehrfach auf dieselbe Adresse eingezahlt. Warum habe ich unterschiedliche Ids erhalten?

Weil es unterschiedliche Transaktionen sind! Jede Transaktion hat eine eigene txid, das sollte klar sein. Die Pakete die du dir an deine Anschrift schicken lässt haben ja auch unterschiedliche Sendungsnummern.

Du kannst ja auch mehrere UTXO in einer Transaktion haben, dann bleibt die txid die gleiche, nur der Output hinten wird angepasst.

Genau.

Transaktion → txid:vout ← UTXO

Genau so steht es auch low-level im tatächlichen Input einer Transaktion:

"vin": [
{
        "txid" : "4bbf676731987cce1e4639ec28d1219f065ab2aa5e9deb323c0b56bd0482d499",
        "vout" : 0,

// Hier geht's dann noch weiter...
4 „Gefällt mir“

könnte ich auch sagen, dass id:UTXO meine btc/sats repräsentiert?

Das könntest du nicht nur so sagen, das ist so. :grinning:

3 „Gefällt mir“

Cool, danke für deine Geduld

2 „Gefällt mir“

Sehr geiler Artikel, ich konnte extrem viel neues mitnehmen, auch wenn ich schon viel wusste. Danke!:pray:

2 „Gefällt mir“

Vielen Dank @sutterseba für den sehr ausführlichen Artikel. Ich habe kürzlich zu einem DCA bei Pocket Bitcoin gewechselt. Zuvor habe ich das manuell über eine Börse gemacht und mir dann von Zeit zu Zeit die Coins auf eine Hardware-Wallet übertragen. Auch überlege ich mir gerade für die Tochter einer Bekannten einen DCA über Pocket Bitcoin einzurichten, damit die Mutter monatlich einen kleinen Betrag einzahlen kann. Nach diesen Ausführungen bin ich mir nun aber nicht mehr sicher, ob das eine gute Idee ist. Ich selber kann eine Konsolidierung wie hier beschrieben vornehmen. Der Mutter möchte ich das aber nicht zumuten - es soll ja möglichst einfach sein. Ist es wahrscheinlich, dass bspw. in 15 Jahren die Kosten für eine Überweisung so hoch sind, dass die über diese Jahre ersparten Satoshis von den Transaktionskosten aufgebraucht werden? Das wären ja dann über die Jahre 180 UTXO mit bspw. Satoshis im Wert von je €50 pro UTXO. Wie seht ihr das? Oder habe ich da etwas falsch verstanden?

Zu der Frage gibt es schon viele Diskussionen im Forum, schau mal hier rein:

Transaktionsgebühren werden nicht den eigentlichen Betrag der Transaktion auffressen, das glaube ich nicht. Aber wie sich die Gebühren genau entwickeln werden kann dir niemand sagen, weshalb es eben sinnvoll ist sich bestmöglichst darauf vorzubereiten.

Aber das Konsolidieren von UTXO ist kein absolut kein Muss, du kannst der Bekannten das DCA mit Pocket mit gutem Gewissen einrichten, würde ich sagen. Die Gebühren werden sich ja relativ stetig entwickeln; man kann immer noch rechtzeitig eine Transaktion tätigen. Ansonsten kannst du ja auch quartalsweise mit Pocket kaufen und hast dann nur 4 UTXO pro Jahr.

Und nur zum sicher stellen: Du zahlst nicht pro UTXO eine Transaktionsgebühr, sondern für die Größe der ganzen Transaktion, die natürlich u.a. von der Anzahl an Inputs abhängt.

Hier hatte ich mal meine 2 sats zu hohen Gebühren allgemein abgegeben:

1 „Gefällt mir“

Danke für die Antwort @sutterseba Ich denke, soweit habe ich das verstanden. Ich überlege mir nun gerade, wie ich dies am besten lösen könnte. Beim DCA wäre es vermutlich sinnvoll, bspw. die 12 Transaktionen jeweils Ende Jahr an eine neue eigene Adresse zu senden. So hätte man bspw. nach 15 Jahren lediglich 15 anstatt 180 UTXO. Auch für meine Situation überlege ich mir gerade, was eine sinnvolle Lösung sein könnte. Da Pocket Bitcoin inzwischen die Möglichkeit bietet, mit dem XPub einen DCA einzurichten, könnte man dies möglicherweise mit mehreren Accounts in der BitBox lösen.
Account 1 = Hodl
Account 2 = Pocket
Account 3 = Börse
So könnte ich dann bspw. ebenfalls Ende Jahr vom Pocket- und Börsen-Account zum Hodl-Account je eine Transaktion machen. Mit den Accounts der BitBox muss ich mich aber noch genauer befassen. Bin mir da nicht sicher, ob diese auch auf einer anderen Hardware-Wallet wiederhergestellt werden können. Im entsprechenden Beitrag habe ich auf die Schnelle nichts gefunden.