Aktualisierter Beitrag auf der Blocktrainer Webseite:
Weiterführend können diese beiden Beiträge zu HD Wallets und der Bitcoin Script Sprache interessant sein:
Alten Beitrag hier ausklappen
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 Transaktionskosten und Privatsphäre zu tun hat.
Für weiteres Verständnis wie moderne Wallets funktionieren, gerne in diesem Beitrag vorbei schauen:
Für tieferes Verständnis des UTXO Themas gibt es auch einen Beitrag zur Scripting Sprache von Bitcoin:
Woher kommt mein Kontostand?
Zunächst müssen wir verstehen wie unsere Wallet es überhaupt schafft uns einen Kontostand anzuzeigen.
In der Bitcoin Blockchain wird nirgends Buch darüber geführt wie viel Bitcoin ein einzelner Nutzer besitzt, da es gar keine identifizierbaren Nutzer oder Konten gibt. Wenn mir jemand Bitcoin schickt wird also nirgends eine Zahl dazu addiert.
Stattdessen läuft alles über ein reines Transaktionsmodell, wie bei einem echten Kassenbuch. Eine Bitcoin Transaktion hat Inputs, also sowas wie Absender, und Outputs, die Empfänger einer Transaktion.
Welche Bedingungen muss eine Transaktion also erfüllen damit meine Wallet erkennen kann dass es sich um meine Bitcoin handelt?
-
Die Transaktion muss einen Output an eine Adresse enthalten, die wir mit unserer Wallet (unseren Schlüsseln) kontrollieren.
-
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. Bitcoin werden also nicht wie bei einer Bank in ein Guthaben zusammengefasst, sondern unsere Wallet muss an einer Wand von vielen Schließfächern erkennen, welche dieser Schließfächer uns gehören.
Unsere Wallet kann dann die Summe aller UTXO die wir kontrollieren als „Bitcoin Betrag“ hübsch in der Software anzeigen. Da unsere Wallet alle unsere Adressen kennt, kann sie die gesamte Historie nach Outputs absuchen die an unsere Adressen gingen (und noch nicht ausgegeben wurden), egal ob die Software vorher fünf Jahre offline war und gerade erst wiederhergestellt wurde.
Eine Bitcoin Node speichert und aktualisiert alle UTXO (das „UTXO Set“ oder auch „Chainstate“) und kann somit blitzschnell Transaktionen validieren und Anfragen von Wallet Software, die beispielsweise wissen möchte wie viel Bitcoin sie kontrolliert, bearbeiten, ohne jedes mal die gesamte Blockchain abzusuchen. Ein Teil dieses UTXO Set wird auch als Buffer direkt im Arbeitsspeicher der Node verwaltet um noch effizienter zu validieren. Aktuell ist das UTXO Set etwa 5 GB groß.
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 (einen Geldschein) 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 ^[STXO: Spent transaction output]. 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, den wir Wechselgeld nennen.
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:
Das geht natürlich auch in die „andere“ Richtung, also aus wenigen oder nur einem Input kann ich viele neue Outputs erstellen (und damit z.B. Rechnungen bezahlen). Das nennt man dann payment batching und wird am prominentesten von Exchanges praktiziert, um Auszahlungen an Kunden möglichst effizient umzusetzen.
(Alle Transaktionen sind zufällig aus aktuellen Blöcken entnommen und nicht von mir)
Unsere Wallet wählt die UTXO für eine Transaktion nach einem bestimmten Algorithmus aus um z.B. Gebühren zu sparen oder mehr auf Privatsphäre zu achten. In den meisten Fällen ist diese automatische Auswahl auch am sinnvollsten und man muss sich nicht weiter darum kümmern. Ich bin in diesem Beitrag näher darauf eingegangen.
Gebühren sparen mit Konsolidierungen
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. Der eigentliche Bitcoin Betrag spielt dabei keine Rolle.
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!
Benutzt immer frische Adressen, wie von eurer Wallet Software vorgeschlagen.
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 ^[Dollar Cost Averaging: Wikipedia] 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 sehr hohe Gebühr zur Folge haben könnte.
Daher kann man, konkret in diesem Beispiel, folgendes tun:
-
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.
-
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 proaktiv berücksichtigen
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.
Teilt deshalb auch Adressen nur mit anderen wenn es wirklich notwendig ist. Selbst wenn auf einer Adresse erstmal nicht viel zu sehen ist kann es sein dass man in Zukunft durch unbewusste Konsoliderungen auf euren gesamten Bitcoin Bestand und alle Transaktionen schließen kann!
-
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.
Wie setzt man eine Konsolidierung um?
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 hat man mit der Sparrow Wallet die Möglichkeit die normalerweise auf Effizienz optimierte Auswahl der UTXO automatisch für mehr Privatsphäre zu optimieren, anstatt dies manuell mit Coin Control zu tun:
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 den Mempools gelöscht wurde.
Hier ein Video von Andreas Antonopoulos zur Frage der Konsolidierung, da wird eigentlich der Abschnitt oben nochmal zusammengefasst:
Quellen
- Was ist eigentlich eine UTXO? (Shift Crypto Blog)
- https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch06.asciidoc (Mastering Bitcoin, Kapitel 6, Andreas Antonopoulos)
- https://www.mempool.space (Bilder von Transaktionen)
- https://youtu.be/ZCsakXHiwlw (Andreas Antonopoulos)
- Explain Like I’m Not a Developer: Taproot Privacy | Braiins
Hier gibt’s noch mehr zu dem Thema im Forum:
- Bei günstigen On-chain Fees, Funds von mehreren Adressen auf eine Adresse schicken sinnvoll?
- Erste BTC-Abhebung vom Ledger Nano X / Mehrere (versteckte) Empfänger?!
- Anfängerfrage: UTXO konsolidieren
- Bitcoin Transaktion/ Überweisung wurde auf 2 Adressen aufgeteilt - #3 von skyrmion
- Unspent Transaktionen
- Pantos & Iota - Bitcoin UTXOs
- Coins alle saven oder ein paar auf der Börse lassen - #9 von sutterseba
- BitBox02 Adressen - #5 von Stadicus
- Blockgröße und Tranaktionsfees - #3 von sutterseba
Danke an @skyrmion und @Makowski für die vielen Beiträge zu diesem Thema!
Danke fürs Lesen, ich hoffe es war hilfreich und ihr konntet was neues lernen.
Bei Fragen, Anmerkungen oder Kritik gerne melden!
In den Antworten auf diesen Thread wurden auch noch einige weiter führende Fragen beantwortet, also schaut euch das gerne auch noch an.
Zum Beispiel: