Fundamenteel bouwblok van een bitcointransactie; een wallet bestaat uit allemaal UTXO’s en kan gebruikt worden als invoer voor een nieuwe transactie, waarna de UTXO is uitgegeven en een nieuwe UTXO vastgelegd wordt op de blockchain; UTXO staat voor Unspent Transaction Output.
Bitcoin is een voorbeeld van een cryptovaluta die het UTXO-model gebruikt.
Het UTXO-model lijkt op het uitgeven van fysiek geld: A geeft 1 BTC aan B, bestaande uit 5 UTXO’s van 0,2 BTC per stuk. Samen 1 BTC. Bitcoinadres B heeft nu 1 BTC in 1 UTXO staan. De uitgegeven bitcoins zijn nu uitgegeven, dus niet meer ‘unspent’ en dus zijn het geen UTXO’s meer.
Stel nu voor dat A 0,45 BTC in zijn wallet heeft zitten en 0,4 aan B moet betalen. Zijn 0,45 BTC bestaat uit 0,3 en 0,15 BTC. Hij stuurt 0,4 BTC aan het adres in de wallet van B en 0,05 BTC aan ‘wisselgeld’ naar een nieuw adres in zijn eigen wallet. Nu heeft A een niet-uitgegeven transactie-uitvoer van 0,05 BTC in zijn wallet en B heeft een niet-uitgegeven transactie-uitvoer van 0,4 BTC in zijn wallet.
Full-nodes en prunned-nodes van onder andere bitcoin houden alle beschikbare outputs bij in een set, de UTXO-set. De set groeit en wordt kleiner elke keer als een UTXO is gemaakt en wanneer die weer wordt uitgegeven, afhankelijk of er meer of minder UTXO’s zijn na de transacties.
De verzameling UTXO’s is de totale waarde van een wallet. Daarmee wordt duidelijk dat een bitcoin-wallet geen bitcoins bevat, maar UTXO’s die het kan uitgeven met de geheime sleutels die de wallet beheren. De balans in een wallet kan bestaan uit UTXO’s uit vele honderden transacties, verdeeld over honderden blokken van de blockchain. Het eens in de zoveel tijd samenvegen van deze transacties zodat de wallet minder UTXO’s heeft, kan verstandig zijn om hoge fees in de toekomst te vermijden.
Transacties die uit veel UTXO’s bestaan zijn in de regel kostbaarder dan die met weinig.
Een ander systeem is een account-gebaseerd systeem, meer vergelijkbaar met rekeningen. Dit wordt onder andere door ethereum gebruikt.