UTXO staat voor Unspent Transaction Output, de fundamentele bouwsteen van het Bitcoin-transactiemodel. In het UTXO-model zijn er geen "rekeningen" of "saldi". In plaats daarvan registreert de blockchain individuele transactie-outputs die nog niet zijn uitgegeven.
Het 'saldo' van een gebruiker is de som van alle UTXO's die hij of zij beheert. Bij het uitvoeren van een transactie worden UTXO's als input gebruikt en worden er nieuwe UTXO's als output gecreëerd. Dit model biedt inherente bescherming tegen dubbele uitgaven en verbeterde privacy, en het vormt nog steeds het datamodel dat ten grondslag ligt aan Bitcoin en diverse andere belangrijke blockchains.
Hoe is het UTXO-model ontstaan en geëvolueerd?
2009: Satoshi Nakamoto ontwerpt Bitcoin vanaf het begin met behulp van het UTXO-model, voortbouwend op eerdere concepten voor elektronisch geld waarbij elke UTXO functioneert als een digitale bankbiljet.
Jaren 2010: Litecoin en Bitcoin Cash nemen hetzelfde UTXO-model over, omdat ze afsplitsen van Bitcoin of de architectuur ervan nauw volgen.
2015: Ethereum wordt gelanceerd met een fundamenteel ander ontwerp, het accountmodel, waarmee UTXO- en accountgebaseerde grootboeken de twee dominante paradigma's in de blockchainarchitectuur worden.
2021: Cardano introduceert zijn Extended UTXO (eUTXO)-model met de Alonzo-upgrade, waarbij een "datum"-veld aan UTXO's wordt toegevoegd zodat het model slimme contracten kan ondersteunen met behoud van een groot deel van de parallelle verwerking en voorspelbaarheid van het oorspronkelijke UTXO-ontwerp.
2024 tot 2026: Ergo en andere nieuwe blockchains bouwen voort op ontwerpen in de stijl van eUTXO, en tools voor UTXO-beheer worden aanzienlijk volwassener naarmate Bitcoin-wallets slimmere algoritmes voor muntselectie toevoegen om transactiekosten en de ophoping van ongebruikte cryptovaluta voor dagelijkse gebruikers te verminderen.
Hoe kun je een UTXO in eenvoudige bewoordingen uitleggen?
Bij Bitcoin heb je geen 'saldo' zoals bij een bankrekening. In plaats daarvan heb je een verzameling 'digitale munten' (UTXO's) van verschillende groottes. Als je UTXO's hebt ter waarde van 0.3 BTC, 0.5 BTC en 0.2 BTC, is je totale 'saldo' 1.0 BTC, maar dat saldo is in werkelijkheid gewoon de som van de drie afzonderlijke munten.
Bij het uitgeven van geld gebruik je hele UTXO's en krijg je wisselgeld terug, net zoals bij betalen met contant geld. Als je een artikel van $7 koopt met een biljet van $10, krijg je $3 wisselgeld terug. Op dezelfde manier krijg je 0.2 BTC wisselgeld terug als je een UTXO van 0.5 BTC gebruikt om een betaling van 0.3 BTC te doen, minus de netwerkkosten.
Waarom is het UTXO-model belangrijk?
Het voorkomen van dubbele uitgaven is de kerngarantie: elke UTXO kan slechts één keer worden uitgegeven, wat een fundamentele beveiligingseigenschap van het systeem is. De privacy verbetert vanzelfsprekend, omdat elke transactie een nieuw adres kan gebruiken, waardoor on-chain tracking moeilijker is dan bij hergebruikte, statische adressen. Parallelle verwerking wordt mogelijk omdat onafhankelijke UTXO's gelijktijdig kunnen worden gevalideerd in plaats van dat een enkele, gedeelde accountstatus sequentieel moet worden bijgewerkt. Verificatie blijft eenvoudig, omdat full nodes alleen hoeven te controleren of inputs geldige, niet-uitgegeven outputs zijn in plaats van een lopend saldo bij te houden. En inzicht in UTXO's is essentieel om te begrijpen hoe Bitcoin-transacties daadwerkelijk werken.
Hoe werkt een UTXO-transactie eigenlijk?
Laten we een eenvoudig voorbeeld nemen. Alice heeft twee UTXO's: UTXO A ter waarde van 0.5 BTC en UTXO B ter waarde van 0.3 BTC. Alice wil 0.6 BTC naar Bob sturen.
Haar transactie verbruikt beide UTXO's als input, met een totaal van 0.8 BTC. Vervolgens genereert de transactie drie outputs: 0.6 BTC gaat naar Bob als een gloednieuwe UTXO, 0.19 BTC keert terug naar Alice als wisselgeld-UTXO en 0.01 BTC gaat naar de miner als transactiekosten. UTXO A en UTXO B worden nu gemarkeerd als verbruikt en verwijderd uit de UTXO-set, terwijl twee nieuwe UTXO's, Bobs 0.6 BTC en Alices 0.19 BTC wisselgeld, eraan worden toegevoegd.
Welke eigenschappen definiëren een UTXO?
Een UTXO is ondeelbaar, wat betekent dat deze volledig moet worden verbruikt in een transactie en niet gedeeltelijk mag worden uitgegeven. Het is per definitie ongebruikt en verschijnt alleen in de UTXO-set als het nog niet elders als input is gebruikt. Het wordt vergrendeld door een script, meestal een script dat een geldige digitale handtekening vereist om te kunnen worden uitgegeven. En het is onveranderlijk zodra het is aangemaakt; een UTXO kan niet worden gewijzigd, alleen uitgegeven (waardoor het uit de set wordt verwijderd) of ongebruikt blijven.
Hoe verhoudt het UTXO-model zich tot het accountmodel van Ethereum?
| Kenmerk | UTXO-model (Bitcoin) | Accountmodel (Ethereum) |
|---|---|---|
| Land | Verzameling van ongebruikte outputs | Rekeningtegoeden plus contractopslag |
| Balance | Som van de UTXO's in bezit | Eén nummer per account |
| Privacy | Hoger (een nieuw adres per transactie is eenvoudig) | Lager (adreshergebruik komt vaak voor) |
| Parallellisme | Natuurlijke (onafhankelijke UTXO's) | Complexer (gedeelde status) |
| Slimme contracten | Beperkt, hoewel uitgebreid door ontwerpen zoals Cardano's eUTXO. | Volledige native ondersteuning |
| Transactiegrootte: | Varieert met het aantal in- en uitgangen. | Voorspelbaarder |
| Dubbele uitgavenbescherming | Dit is inherent, aangezien een UTXO eenmaal wordt verbruikt en daarna verdwijnt. | Afgehandeld via nonce-tracking per account. |
Wat zijn de voor- en nadelen van het UTXO-model?
De voordelen zijn aanzienlijk. UTXO's zijn van nature beschermd tegen dubbele uitgaven, omdat elke UTXO slechts één keer kan worden uitgegeven. Privacy wordt vanzelfsprekend gewaarborgd door het gebruik van een nieuw adres per transactie. Parallelle verwerking is mogelijk omdat onafhankelijke UTXO's gelijktijdig kunnen worden gevalideerd. Verificatie is eenvoudig, omdat validators alleen controleren of een bepaalde UTXO nog niet is uitgegeven, een binaire ja- of nee-vraag. De uitkomsten zijn deterministisch, omdat de transactieresultaten volledig worden bepaald door de input. En de UTXO-set biedt een duidelijk, controleerbaar overzicht van alle beschikbare munten op elk moment.
De nadelen zijn ook reëel. Het model is minder intuïtief dan op accounts gebaseerde saldi voor dagelijkse gebruikers. Het is lastiger te gebruiken voor stateful smart contracts, wat mede de reden is waarom Ethereum voor het accountmodel heeft gekozen. "UTXO dust", zeer kleine UTXO's die meer kosten om uit te geven dan ze waard zijn, kunnen zich in de loop der tijd ophopen. Wallets moeten actief de selectie van UTXO's beheren via algoritmes voor muntselectie, wat de complexiteit achter de schermen vergroot. Transacties met veel inputs zijn groter en duurder dan eenvoudige, op accounts gebaseerde overboekingen. En de totale UTXO-set groeit naarmate het netwerkgebruik toeneemt, wat gevolgen heeft voor de opslag en synchronisatietijden van de nodes.
Wat is een praktijkvoorbeeld van UTXO-management?
Scenario: Bitcoin-gebruikers die veel kleine betalingen ontvangen, zoals miners of handelaren die frequent kleine transacties accepteren, verzamelen in de loop der tijd honderden kleine UTXO's. Wanneer ze uiteindelijk een grote betaling willen doen, zou een transactie die 100 of meer UTXO's tegelijk verbruikt, ongebruikelijk groot en duur zijn vanwege de omvang.
Implementatie: Slimme gebruikers voeren "UTXO-consolidatie" uit tijdens perioden met lage netwerkkosten, waarbij ze vooraf veel kleine UTXO's samenvoegen tot één grotere. Dit is vergelijkbaar met het omwisselen van een pot met losse munten voor bankbiljetten: het verandert niets aan hoeveel geld je hebt, maar het maakt toekomstige transacties goedkoper en eenvoudiger.
Resultaat: Door transacties te consolideren tijdens perioden met lage transactiekosten in plaats van te wachten tot een grote betaling dringend nodig is, vermijden gebruikers het betalen van extra kosten wanneer de netwerkactiviteit, en dus de kosten, hoog zijn. Dit is een veelvoorkomend praktisch advies voor iedereen die in de loop der tijd veel kleine UTXO's verzamelt, van miningpools die kleine aandelen uitbetalen tot handelaren die frequent kleine transacties verwerken.
Veelgestelde vragen over UTXO's
Wat is UTXO-stof? UTXO-stof verwijst naar extreem kleine UTXO's, vaak rond de 0.00000546 BTC (546 satoshi), het ruwe minimum dat historisch gezien als economisch verantwoord werd beschouwd om uit te geven, waarvan de transactiekosten hoger zijn dan de waarde ervan. Stof kan zich ophopen door kleine transacties en wordt in feite onbruikbaar tijdens perioden met hoge netwerkkosten.
Hoe weet mijn wallet mijn saldo als er geen account is? Je wallet scant de volledige set UTXO's op outputs die aan jouw adressen zijn gekoppeld. Met behulp van je privésleutels telt de wallet de waarden van alle UTXO's die je kunt uitgeven bij elkaar op en geeft dit totaal weer als je 'saldo'. De blockchain zelf slaat het saldo nergens op; je wallet berekent het elke keer opnieuw op basis van de onderliggende UTXO-gegevens.
Wat is Extended UTXO (eUTXO)? Extended UTXO, gebruikt door Cardano, voegt een "datum", een dataveld, toe aan UTXO's, waardoor slimme contractfunctionaliteit binnen het UTXO-model mogelijk wordt. Dit behoudt de natuurlijke parallelle en deterministische aard van het UTXO-model, terwijl het toch programmeerbare logica ondersteunt. Deze aanpak bevindt zich tussen het eenvoudige UTXO-model van Bitcoin en het volledig stateful accountmodel van Ethereum.
Waarom koos Ethereum voor het accountmodel in plaats van UTXO? De makers van Ethereum wilden complexe, stateful smart contracts ondersteunen, die over het algemeen gemakkelijker te begrijpen en te implementeren zijn met behulp van accountsaldi en permanente contractopslag dan met een UTXO-set. De keerzijde hiervan is dat het accountmodel een deel van de natuurlijke privacy- en parallelle verwerkingsvoordelen van UTXO opoffert in ruil voor meer flexibele programmeerbaarheid.
Kunnen andere blockchains het UTXO-model gebruiken? Ja. Litecoin en Bitcoin Cash gebruiken in wezen hetzelfde UTXO-model als Bitcoin, aangezien beide nauw verwant zijn aan de codebasis van Bitcoin. Cardano en Ergo gebruiken varianten van Extended UTXO om ondersteuning voor smart contracts toe te voegen, terwijl de kernstructuur van UTXO behouden blijft. Het UTXO-model en het accountmodel blijven de twee dominante benaderingen binnen de blockchainarchitectuur in het algemeen.
Gerelateerde termen
Bitcoin : de originele blockchain en het netwerk dat het UTXO-model introduceerde.
Accountmodel : het alternatieve grootboekontwerp dat door Ethereum wordt gebruikt en dat saldi per account bijhoudt in plaats van ongebruikte outputs.
Double Spend Attack: de aanval die inherent wordt voorkomen door het gebruik van UTXO's, doordat elke output slechts één keer kan worden gebruikt.
Privésleutel: de cryptografische sleutel die nodig is om een UTXO te ontgrendelen en uit te geven. Wallet: de software die de UTXO-set scant en namens een gebruiker de muntselectie beheert.
Mining : het proces waarbij nieuwe transacties, waaronder nieuwe UTXO's, worden bevestigd en aan de blockchain worden toegevoegd.
Bronnen
Bitcoin whitepaper, “Bitcoin: een peer-to-peer elektronisch geldsysteem” (2008)
Bitcoin Core-ontwikkelaarsdocumentatie over de UTXO-set Cardano-documentatie over het Extended UTXO (eUTXO)-model









