UTXO versus account-based blockchains: werking, verschillen en toepassingen

Wat zijn UTXO- en account-based blockchains?
UTXO- en account-based blockchains zijn twee verschillende manieren waarop een blockchain bijhoudt wie welke crypto bezit en hoe transacties worden verwerkt.
Bekende voorbeelden van blockchains die met het UTXO-model werken zijn Bitcoin, Litecoin, Dogecoin en Bitcoin Cash. Cardano gebruikt een uitgebreidere variant, het eUTXO-model, waarmee ook complexere logica en smart contracts mogelijk zijn.
Bekende account-based blockchains zijn Ethereum, Solana en de C-Chain van Avalanche. Bij zulke blockchains wordt de toestand bijgehouden in accounts, bijvoorbeeld via saldi en andere opgeslagen gegevens. Ethereum gebruikt bijvoorbeeld accounts met onder meer een saldo en nonce, terwijl Solana alle toestand in accounts opslaat.
Een UTXO is kort voor Unspent Transaction Output: een stukje crypto uit een eerdere transactie dat nog niet is uitgegeven. Je kunt het vergelijken met losse digitale briefjes. Elk briefje heeft een bepaalde waarde en kan maar één keer worden uitgegeven.
Wanneer je bijvoorbeeld een Bitcoin-transactie doet, gebruik je één of meerdere bestaande UTXO's als input. Die worden daarna als uitgegeven beschouwd. Tegelijk ontstaan er nieuwe UTXO's voor de ontvanger en eventueel voor het wisselgeld dat teruggaat naar de afzender.
Een account-based model werkt meer zoals een gewone bankrekening. Een account heeft een actuele toestand, zoals een saldo dat omhoog of omlaag gaat wanneer transacties worden verwerkt. Op Ethereum bevat zo'n account naast het ETH-saldo bijvoorbeeld ook een nonce en, afhankelijk van het type account, informatie over code en opgeslagen data.
Het belangrijkste verschil zit dus in de administratie. Een UTXO-blockchain houdt losse, nog niet uitgegeven stukken waarde bij, terwijl een account-based blockchain vooral het actuele saldo en andere gegevens per account bijhoudt.
Dit zegt niet automatisch iets over bijvoorbeeld consensus, privacy of de mogelijkheden voor smart contracts. Er bestaan bovendien uitgebreidere UTXO-modellen, zoals eUTXO, die ook complexere logica ondersteunen.
Korte samenvatting
- Een UTXO-model houdt waarde bij als losse, nog niet uitgegeven outputs uit eerdere transacties.
- Een account-based model houdt een veranderlijk saldo en andere gegevens per account bij.
- Bitcoin gebruikt het UTXO-model en Ethereum is een bekend voorbeeld van een account-based blockchain.
- Bij UTXO wordt een bestaande output verbruikt en worden nieuwe outputs gemaakt.
- Beide modellen kunnen op openbare blockchains pseudonieme, maar goed te volgen transacties hebben.
Hoe werkt het UTXO-model?
Het UTXO-model werkt met losse stukken crypto die nog niet zijn uitgegeven. Zo'n UTXO komt voort uit een eerdere transactie en kan alleen worden gebruikt als aan de bijbehorende voorwaarden wordt voldaan. Meestal bewijs je met een digitale handtekening dat jij bevoegd bent om die UTXO uit te geven.
Wanneer je een nieuwe transactie maakt, verwijst die naar één of meerdere bestaande UTXO's. Het netwerk controleert vervolgens of die UTXO's nog niet eerder zijn uitgegeven en of aan de voorwaarden is voldaan.
Belangrijk om te weten: een UTXO kun je niet gedeeltelijk opgebruiken. Zodra je hem gebruikt, wordt de hele UTXO uitgegeven. Daarom ontstaan er bij een betaling vaak meerdere nieuwe UTXO's: één voor de ontvanger en eventueel één voor het resterende bedrag dat teruggaat naar de afzender. Dat laatste wordt ook wel de change output genoemd.
Voorbeeld: Stel dat je crypto wallet één UTXO van 1 BTC kan uitgeven en je 0,4 BTC naar iemand wilt sturen.
De volledige UTXO van 1 BTC wordt dan gebruikt als input. De transactie kan bijvoorbeeld 0,4 BTC naar de ontvanger sturen en het resterende bedrag, na aftrek van de transactiekosten, als nieuwe UTXO terugsturen naar een adres dat jij beheert.
De oude UTXO van 1 BTC bestaat daarna niet meer. In plaats daarvan zijn nieuwe UTXO's ontstaan.
Je zichtbare saldo bestaat dus niet uit één enkel bedrag op de blockchain. Het is de optelsom van alle UTXO's die jouw wallet kan uitgeven.
Ook de waarde van een transactie is eenvoudig te controleren. De totale waarde van de nieuwe outputs mag niet hoger zijn dan de waarde van de gebruikte inputs. Het verschil tussen beide kan als transactievergoeding naar de miner gaan die het blok produceert.
Bij Bitcoin kunnen aan een UTXO ook extra voorwaarden worden gekoppeld via scripts. Zo'n script bepaalt onder welke voorwaarden de UTXO mag worden uitgegeven. Dat maakt Bitcoin programmeerbaar voor bepaalde vormen van autorisatie, maar het Bitcoin-scriptmodel is veel beperkter dan de uitgebreide smart contracts van bijvoorbeeld Ethereum.
Hoe werkt het account-based model?
Het account-based model werkt met accounts die ieder een actuele toestand hebben. Denk bijvoorbeeld aan een saldo en een nonce. Een nonce is een oplopend nummer dat bijhoudt hoeveel transacties een account heeft verstuurd. Zo kan het netwerk voorkomen dat dezelfde transactie-opdracht opnieuw wordt uitgevoerd.
Bij een gewone ETH-transactie wordt het saldo van de afzender verlaagd en het saldo van de ontvanger verhoogd. Daarna wordt de nieuwe toestand van beide accounts opgeslagen op Ethereum.
Ethereum kent twee soorten accounts:
- Externally owned accounts (EOA's): accounts die worden beheerd met een private key. Dit zijn meestal de accounts die gebruikers via een wallet beheren. Een EOA kan zelf een transactie starten.
- Contractaccounts: accounts waar smart-contractcode aan gekoppeld is. Ze hebben geen private key en starten niet zelfstandig een externe transactie. Ze voeren code uit wanneer ze door een transactie of ander contract worden aangeroepen.
Een transactie vanuit een EOA bevat onder meer informatie over de bestemming, het bedrag, de nonce, de handtekening, eventuele extra data en hoeveel gas maximaal mag worden gebruikt. Gas bepaalt hoeveel rekenwerk Ethereum voor een transactie mag uitvoeren.
Gaat een transactie alleen naar een normaal account, dan kan er bijvoorbeeld ETH worden verstuurd. Gaat de transactie naar een contractaccount, dan kan de EVM, de uitvoeromgeving van Ethereum, de code van dat contract uitvoeren.
Daardoor kan één transactie veel meer doen dan alleen ETH versturen. Een smart contract kan bijvoorbeeld tokens verplaatsen, opgeslagen gegevens aanpassen of andere smart contracts aanroepen.
Validators controleren en verwerken transacties volgens dezelfde regels. Als de transactie geldig is, worden de nieuwe saldi en andere wijzigingen onderdeel van de nieuwe toestand van Ethereum.
Wat zijn de belangrijkste verschillen tussen beide modellen?
Het grootste verschil zit in de manier waarop een blockchain bijhoudt wat iemand bezit.
Bij een UTXO-model bestaat de huidige toestand uit losse stukken crypto die nog niet zijn uitgegeven. Bij een account-based model heeft ieder account juist een actuele toestand, zoals een saldo, nonce en eventueel opgeslagen contractdata.
Bij UTXO gebruik je bestaande outputs op en ontstaan er nieuwe outputs. Bij accounts wordt de bestaande toestand rechtstreeks aangepast. Denk bijvoorbeeld aan een saldo dat lager wordt, een nonce die stijgt of gegevens in een smart contract die veranderen.
Ook dubbele uitgaven worden anders voorkomen. Bij UTXO mag dezelfde output maar één keer worden gebruikt. Bij een account-based model helpt de nonce om transacties van hetzelfde account in de juiste volgorde te verwerken en te voorkomen dat dezelfde opdracht opnieuw wordt uitgevoerd.
Het is te simpel om te zeggen dat UTXO alleen geschikt is voor betalingen en account-based blockchains alleen voor smart contracts. Uitgebreide UTXO-modellen, zoals eUTXO, kunnen ook complexere logica en smart contracts ondersteunen.
Hoe een blockchain in de praktijk werkt, hangt bovendien niet alleen af van het UTXO- of accountmodel. Ook bijvoorbeeld de crypto wallet, transactiekosten, virtuele machine en eventuele privacytechnieken spelen een rol.
Hoe verschillen transacties en saldo-administratie?
Bij een UTXO-transactie gebruikt je wallet één of meerdere bestaande UTXO's als input. De wallet zoekt genoeg losse bedragen bij elkaar om de betaling en transactiekosten te kunnen betalen. Dit wordt ook wel coin selection genoemd.
Zijn de gekozen UTXO's samen meer waard dan het bedrag dat je wilt versturen? Dan ontstaat er meestal een nieuwe UTXO met het resterende bedrag. Dat wordt de change output genoemd.
Je saldo bestaat bij een UTXO-model dus uit meerdere losse UTXO's die samen jouw totale beschikbare saldo vormen.
Bij een account-based model werkt dit anders. Een account heeft één saldo dat rechtstreeks wordt aangepast. Verstuur je bijvoorbeeld ETH, dan gaat het saldo van jouw account omlaag en dat van de ontvanger omhoog.
Transacties vanuit hetzelfde Ethereum-account hebben daarnaast ieder een nonce. Daardoor weet Ethereum in welke volgorde die transacties moeten worden verwerkt. Dat is belangrijk, omdat een eerdere transactie invloed kan hebben op een latere. Je saldo kan bijvoorbeeld veranderen of een smart contract kan inmiddels een andere toestand hebben.
Een Ethereum-transactie is daardoor niet goed te vergelijken met één input en één output. De transactie begint wel vanuit één account, maar een smart contract kan tijdens de uitvoering meerdere accounts, tokens en opgeslagen gegevens aanpassen.
Hoe verschillen privacy en traceerbaarheid?
Openbare UTXO- en account-based blockchains zijn meestal pseudoniem. Dat betekent dat een adres niet automatisch jouw naam laat zien, maar dat transacties en adressen wel openbaar op de blockchain staan.
Bij Bitcoin worden vaak verschillende adressen gebruikt voor verschillende transacties. Ook het wisselgeld van een transactie kan naar een nieuw adres gaan. Daardoor is niet altijd meteen zichtbaar welke adressen bij dezelfde persoon horen.
Toch kunnen analisten patronen herkennen. Als meerdere adressen bijvoorbeeld samen worden gebruikt als input voor één Bitcoin-transactie, kan dat erop wijzen dat dezelfde partij controle heeft over die adressen. Dat is alleen geen hard bewijs.
Bij Ethereum gebruiken mensen vaak hetzelfde accountadres voor veel verschillende activiteiten. Daardoor kunnen transacties, tokenbewegingen en interacties met smart contracts vanaf dat adres makkelijker aan elkaar worden gekoppeld.
Geen van beide modellen is automatisch anoniem of privacyvriendelijker. Extra technieken, zoals zero-knowledge proofs, mixers of shielded transacties, kunnen de privacy vergroten. Dat zijn aanvullende technieken en geen standaardonderdeel van het UTXO- of accountmodel.
Welke voor- en nadelen hebben UTXO- en account-based blockchains?
Beide modellen hebben sterke en zwakke punten. Welke aanpak beter werkt, hangt af van wat een blockchain of applicatie moet doen.
Voordelen van het UTXO-model
-
Duidelijke transactiestructuur Bij een UTXO-transactie is precies zichtbaar welke bestaande outputs worden gebruikt en welke nieuwe outputs ontstaan. Daardoor is de geldstroom binnen een transactie duidelijk te volgen.
-
Mogelijkheid tot parallelle verwerking Transacties die niet dezelfde UTXO's gebruiken, kunnen in sommige UTXO-modellen onafhankelijk van elkaar worden gecontroleerd. Dat kan ruimte geven voor parallelle verwerking.
-
Duidelijke controle op dubbele uitgaven Een UTXO kan maar één keer worden uitgegeven. Zodra die is gebruikt, bestaat hij niet meer als beschikbare output.
Nadelen van het UTXO-model
-
Meer werk voor wallets Een crypto wallet moet bepalen welke UTXO's worden gebruikt voor een betaling. Dit heet coin selection. Ook change outputs en grote aantallen kleine UTXO's moeten worden beheerd.
-
Gedeelde toestand kan ingewikkelder zijn Als meerdere transacties dezelfde UTXO nodig hebben om contractlogica uit te voeren, kunnen ze met elkaar in conflict komen. Zodra één transactie die UTXO gebruikt, moet de andere transactie mogelijk opnieuw worden opgebouwd met de nieuwe toestand.
Voordelen van het account-based model
-
Eenvoudige saldo-administratie Een account heeft een actueel saldo dat rechtstreeks wordt aangepast. Daardoor hoeft een wallet niet eerst verschillende losse UTXO's bij elkaar te zoeken.
-
Handig voor gedeelde en blijvende toestand Account-based blockchains zoals Ethereum kunnen gegevens rechtstreeks aan accounts en smart contracts koppelen. Dat past goed bij applicaties waarin veel transacties voortbouwen op dezelfde opgeslagen informatie.
-
Geschikt voor complexe smart contracts Een smart contract kan tijdens één uitvoering verschillende saldi, accounts en opgeslagen gegevens aanpassen. Dat maakt het model praktisch voor veel verschillende soorten blockchainapplicaties.
Nadelen van het account-based model
-
Transacties zijn sterker afhankelijk van de huidige toestand De uitkomst van een transactie kan afhangen van het saldo, de nonce of de contractdata op het moment dat de transactie wordt uitgevoerd. Een eerdere transactie kan die toestand ondertussen al hebben veranderd.
-
Volgorde van transacties is belangrijk Transacties vanuit hetzelfde account moeten in de juiste nonce-volgorde worden uitgevoerd. Ook bij smart contracts kan de volgorde waarin transacties worden verwerkt invloed hebben op de uiteindelijke toestand.
-
Meer gedeelde toestand kan verwerking complexer maken Wanneer veel transacties dezelfde accounts of contractgegevens proberen aan te passen, zijn die transacties niet altijd volledig onafhankelijk van elkaar.
Kort gezegd: geen van beide modellen is automatisch sneller, goedkoper, veiliger of beter voor privacy. Zulke eigenschappen hangen af van het complete ontwerp van de blockchain en van de manier waarop het UTXO- of accountmodel daarin is uitgewerkt.
Wanneer is welk blockchainmodel geschikt?
Een UTXO-model past goed bij toepassingen waarbij waarde als losse bedragen wordt bijgehouden en iedere output maar één keer kan worden uitgegeven. Dat werkt bijvoorbeeld goed voor betalingen, waarbij duidelijk moet zijn welke bedragen worden gebruikt en welke nieuwe bedragen daarna ontstaan.
Wil je complexere toepassingen bouwen, dan kan een UTXO-model nog steeds geschikt zijn. Uitgebreide varianten, zoals eUTXO, kunnen ook smart contracts en complexere regels ondersteunen.
Wel moet bij zulke toepassingen goed worden nagedacht over hoe meerdere gebruikers tegelijk met dezelfde gegevens werken. Als veel transacties steeds dezelfde UTXO nodig hebben, kunnen ze met elkaar botsen. Door de gegevens over meerdere UTXO's te verdelen, kunnen zulke conflicten soms worden beperkt.
Een account-based model past juist goed bij applicaties waarin gegevens vaak worden aangepast en meerdere acties op dezelfde opgeslagen toestand voortbouwen. Op Ethereum kan een transactie bijvoorbeeld ETH versturen én tegelijk een smart contract aanroepen dat daarna opgeslagen gegevens wijzigt.
Welke aanpak het meest geschikt is, hangt daarom niet alleen af van het label UTXO of account-based. Kijk vooral naar wat de applicatie moet doen, hoeveel gebruikers tegelijk dezelfde gegevens willen aanpassen, hoe complex de smart contracts zijn en welke gebruikservaring je voor wallets wilt bieden.
Conclusie
UTXO en account-based blockchains lossen hetzelfde basisprobleem op, maar doen dat op een andere manier. UTXO werkt met losse, eenmalig uitgeefbare outputs, terwijl een accountmodel een veranderlijke toestand per account bijhoudt.
Voor simpele betalingen is het verschil goed te zien: bij UTXO worden oude digitale bedragen verbruikt en nieuwe gemaakt, terwijl bij accounts saldo's worden bijgewerkt. Bij complexere toepassingen wordt de keuze interessanter. UTXO-varianten kunnen smart contracts ondersteunen, en accountmodellen kunnen ook prima waarde overdragen.
Het belangrijkste is daarom niet welk model in het algemeen beter is. Het gaat erom welk model het beste past bij wat een blockchain of applicatie moet doen.