Wat is een Bitcoin unspent transaction output (UTXO)?

De beginnersgids voor het UTXO-model van Bitcoin 📕
Onbenutte transactie-output (UTXO) is de techniek die het Bitcoin-protocol gebruikt om saldi bij te houden terwijl ze tussen crypto-portefeuilles bewegen.
Als het gaat om het volgen en beheren van individuele crypto-saldi, gebruiken blockchain-gebaseerde protocollen meestal een van de twee verschillende boekhoudmodellen.
De ene wordt het Account/Saldo model genoemd. Projecten zoals Ethereum, Tezos en EOS gebruiken dit model om saldi bij te houden terwijl blockchain-gebruikers transacties uitvoeren. De andere wordt het Onbenutte Transactie Output (UTXO) model genoemd.
Bitcoin en veel andere cryptocurrencies zoals Litecoin, Cardano en Dogecoin gebruiken het UTXO-model.
Maar wat is het precies, hoe werkt het en wat zijn de voordelen van UTXO in vergelijking met het Account/Saldo model?
Begrijpen van het UTXO-model 💻
Geschiedenis
Adam Back en de overleden Hal Finney waren twee leden van de Cypherpunk cryptografie groep die bitcoin white paper auteur Satoshi Nakamoto frequenteerde. De twee worden gecrediteerd voor het onafhankelijk ontwikkelen van het UTXO-model tussen 1997 en 2004 respectievelijk.
Toen de maker van Bitcoin Satoshi Nakamoto het protocol in 2009 lanceerde, werd het het eerste operationele digitale valutasysteem dat het UTXO-model implementeerde.
Zowel Hal Finney als Adam Back worden al lange tijd verdacht Satoshi Nakamoto te zijn, hoewel het nooit met zekerheid is bewezen.
UTXO in een oogopslag
Wanneer je bitcoin naar iemand verstuurt, vinden er verschillende stappen programmatisch plaats. Een van de vroegste stappen in het transactieproces is dat je cryptocurrency portemonnee de blockchain scant voor het bedrag aan fondsen dat je hebt. Deze fondsen staan bekend als onbenutte transactie-output (UTXO's).
Je kunt UTXO's beschouwen als losgeld dat overblijft van eerdere bitcoin-transacties.
De fondsen worden als "onbenut" beschouwd omdat ze vrij beschikbaar zijn om naar iemand te sturen of naar een andere portemonnee te verplaatsen. Ze worden "transactie-output" genoemd omdat ze zijn gemaakt uit eerdere transacties.
Als je $12 aan lunch uitgeeft met een $20-biljet, heb je een $8-biljet over. In dit voorbeeld zou de resterende $8 een ongebruikte transactie-output zijn. Het zou terug in je portemonnee gaan, klaar om gebruikt te worden om iets anders te kopen.
Dit is precies hoe bitcoin UTXO's werken. Wanneer je een transactie maakt, worden outputs van eerdere bitcoin-transacties, d.w.z. je losse bitcoin-muntjes, gebruikt als inputs voor nieuwe transacties.
Een andere belangrijke vergelijking tussen fysieke contante transacties en UTXO's is dat beide volledig moeten worden besteed en niet kunnen worden onderverdeeld. Als je een UTXO van 5 bitcoin hebt en iemand 1 BTC wilt sturen, moet je de hele UTXO ter waarde van 5 bitcoin sturen en een nieuwe UTXO ter waarde van 4 BTC min eventuele kosten ontvangen.
Net zoals in het bovenstaande voorbeeld waar je een hele $20-bil overhandigt om voor een lunch van $10 te betalen.
Wanneer een UTXO wordt besteed, wordt deze als “geconsumeerd” beschouwd en wordt deze technisch gezien uit circulatie verwijderd.
Elke resterende verandering wordt gegenereerd als een geheel nieuwe UTXO. Dit deel van het UTXO-systeem is hoe Bitcoin het dubbel-uitgaveprobleem oplost.
Net zoals je een winkelier geen $5-bil kunt geven en dezelfde $5-bil aan iemand anders kunt geven, kan een bitcoin-gebruiker dezelfde ongebruikte transactie-output niet succesvol in twee afzonderlijke digitale transacties gebruiken.
Wanneer een persoon probeert dezelfde UTXO twee keer uit te geven, eindigen de twee transacties in een mempool - een soort wachtruimte voor uitstaande transacties. Ze blijven hier totdat succesvolle miners die de proof-of-work competitie winnen, ze in nieuwe blokken bundelen.
Je kunt meer leren over dit proces in ons artikel in het Kraken Learn Center Wat is bitcoin mining?
Zelfs als beide transacties in twee afzonderlijke blokken worden gebundeld en gelijktijdig worden verwerkt, zou vanwege tijdstempeling een van de transacties eerder worden geverifieerd dan de andere. Nadat er een aantal bevestigingen zijn gepasseerd (nieuwe blokken toegevoegd aan de blockchain), zouden andere knooppunten de tweede ongeldige transactie markeren en deze afwijzen.
Coinbase-transacties
De enige keer dat een bitcoin-transactie geen inputs heeft, is wanneer nieuw gemint BTC wordt gecreëerd uit mining.
Bekend als een coinbase transactie, vertegenwoordigt dit de eerste transactie in elk nieuw blok.
Elke satoshi (de subeenheden van bitcoin) in omloop kan worden herleid met behulp van het transparante blockchain-grootboek naar hun respectieve coinbase-transactie.
Waarom gebruikt Bitcoin het UTXO-model?
Rekeningtegoed
Om het saldo van een gebruiker, ook wel een UTXO-set genoemd, te identificeren, scant de crypto-walletsoftware de blockchain om alle UTXO's te vinden die zijn gekoppeld aan het bijbehorende openbare walletadres.
De totale som van alle UTXO's geeft een nauwkeurige weergave van hoeveel crypto een wallet-eigenaar controleert.
Wanneer een UTXO wordt uitgegeven, wordt het openbare walletadres van de ontvanger toegewezen aan het bedrag en wordt er een nieuwe UTXO geregistreerd op de blockchain zodra deze is uitgevoerd.
Opslag
Bitcoin UTXO's worden geregistreerd in verschillende transacties die zijn opgeslagen in blokken op de Bitcoin-blockchain. Deze informatie is echter niet duidelijk geïndexeerd, waardoor het moeilijk kan zijn om snel metadata te doorzoeken en samen te voegen.
Bij het gebruik van walletsoftware zoals de Bitcoin Core-client, worden UTXO-metadata opgeslagen en geïndexeerd met behulp van een LevelDB-database. LevelDB is een open-source opslagsysteem dat in 2011 door Google is gemaakt en maakt het lokaliseren van UTXO's veel sneller.
De Bitcoin Core-client is populaire software die wordt gebruikt om verbinding te maken met het Bitcoin-blockchainnetwerk. Oorspronkelijk gemaakt door Satoshi Nakamoto, wordt Bitcoin Core nu onderhouden door een gemeenschap van vrijwillige ontwikkelaars.
UTXO's onder de motorkap 🚗
Op een meer technisch niveau zijn er vier hoofdonderdelen van een transactie:
- Versie: Dit informeert netwerknodes welke versie van de clientsoftware wordt gebruikt. Verschillende versies volgen verschillende regels voor het verifiëren van transactiegegevens.
- Vergrendeltijd: Dit is de tijdsduur die bepaalt hoe snel een transactie aan de blockchain wordt toegevoegd. Deze invoer bepaalt wat de vroegst mogelijke tijd is voor de transactie om te worden verwerkt door mijnbouwnodes.
- Invoer: Informatie die verwijst naar de bron van fondsen of eerdere transacties waar de UTXO is geproduceerd. De invoer bevat ook iets dat het "ontgrendelingsscript" wordt genoemd.
- Uitvoer: Informatie over de waarde die wordt overgedragen, de portemonnee waar het eigendom van de fondsen aan wordt toegewezen en nieuwe UTXO's die worden gevormd. De uitvoer bevat ook een "vergrendelingsscript".
Hoe UTXO's verschillen van fysiek geld
De belangrijkste verschillen tussen de analogie van fysieke biljetten en het UTXO-model zijn dat bitcoin en andere UTXO-gebaseerde crypto-activa niet gebonden zijn aan vaste bedragen, d.w.z. $5, $10, $15, enz. Elke hoeveelheid bitcoin (tot acht decimalen) kan een ongebruikte transactie-uitvoer zijn.
Bijvoorbeeld, je kunt 0,0003847 BTC overhouden van een transactie.
Dit bedrag zou een nieuwe UTXO worden die volledig moet worden besteed als deze wordt gebruikt en niet kan worden verdeeld in kleinere bedragen.
Laten we zeggen dat John een crypto-portemonnee saldo van 1 bitcoin heeft. Zijn saldo en de samenstelling van dat saldo zijn twee verschillende dingen, net zoals je $100 in je portemonnee kunt hebben, maar het kan bestaan uit vier $20-biljetten, twee $5-biljetten en één $10.
Laten we zeggen dat de samenstelling van John’s 1 BTC-saldo bestaat uit 5 verschillende ongebruikte transactie-uitvoeren.
- 0,138 BTC
- 0,1 BTC
- 0,004 BTC
- 0,73 BTC
- 0,028 BTC
John wil 0,6 BTC naar Jane sturen. Om dit te doen, zal de portemonneesoftware van John automatisch een aantal UTXO's die hij beheert groeperen om deze transactie plus eventuele mijnwerkerskosten die betrokken zijn bij het verwerken ervan te dekken.
In dit voorbeeld, laten we zeggen dat zijn wallet-software automatisch John’s bitcoin UTXO ter waarde van 0,73 BTC naar Jane verzendt en het resterende bedrag minus transactiekosten terugstuurt naar John als een nieuwe UTXO.
Dit bedrag wordt automatisch naar een wisseladres gestuurd; een apart adres dat aan je crypto wallet is gekoppeld.
Vergrendelings- en ontgrendelingsscripts 🔒
Wanneer UTXO's worden aangemaakt, worden ze vergrendeld met het openbare wallet-adres van de ontvanger. Om die UTXO als invoer in een nieuwe transactie te gebruiken, moet deze eerst worden ontgrendeld met de digitale handtekening van de afzender.
Dit is nog een belangrijk punt om te begrijpen over bitcoin-transacties. Wanneer een transactie wordt gemaakt, wordt bitcoin niet digitaal van het ene account naar het andere verplaatst. In plaats daarvan worden ze ontgrendeld, opnieuw toegewezen aan een nieuwe eigenaar en vervolgens weer vergrendeld.
Dit betekent dat alleen de nieuwe eigenaar de fondsen kan ontgrendelen met hun digitale handtekening en ze ergens anders kan overdragen; naar een andere persoon of naar een andere wallet onder hun controle.
Script is een programmeertaal die door Bitcoin wordt gebruikt om transacties te verwerken, inclusief het vergrendelen en ontgrendelen van UTXO's.
- Vergrendelingsscript (ScriptPubKey): Wanneer een UTXO is vergrendeld, stelt het vergrendelingsscript (bekend als de ScriptPubKey) voorwaarden vast die moeten worden vervuld voordat de UTXO als invoer kan worden gebruikt. Dit houdt meestal in dat je moet bewijzen dat je de privésleutel bezit die overeenkomt met het openbare wallet-adres dat is gebruikt om de UTXO te vergrendelen door een digitale handtekening te geven.
- Ontgrendelingsscript (ScriptSig): Om een UTXO te ontgrendelen, moet je voldoen aan de voorwaarden die zijn vastgesteld door het vergrendelingsscript, d.w.z. een digitale handtekening geven die bewijst dat je de privésleutels beheert die overeenkomen met de openbare sleutel die is gebruikt om de UTXO te vergrendelen.
Dit voorkomt dat anderen toegang krijgen tot en die fondsen uitgeven.
Wat is Bitcoin-dust?
Bitcoin-dust verwijst naar UTXO's die kleine sporen van satoshi's bevatten die overblijven van eerdere transacties.
Op zichzelf zouden deze minuscule bedragen aan BTC meer kosten in transactiekosten om te verwerken dan ze waard zijn, en daarom blijven ze vaak in wisseladressen wachten om samen met andere UTXO's te worden gebundeld en uitgegeven.
Wat is een dusting-aanval?
Dusting-aanvallen verwijzen naar oplichters die stof naar honderden duizenden verschillende wallet-adressen sturen. Het idee erachter is om potentiële doelwitten voor social engineering-aanvallen vast te stellen.
Een oplichter zal adressen in de gaten houden die de stof bevatten die ze hebben gestuurd, wachtend op de eigenaar om een transactie te doen die UTXO's van verschillende adressen die aan hun wallet zijn gekoppeld, bundelt. Omdat stof-UTXO's zo klein zijn, is de kans groot dat ze samen met andere worden gegroepeerd en als invoer worden gebruikt.
Zodra dit gebeurt, kan de oplichter een idee krijgen van welke fondsen een persoon heeft. Ze kunnen er dan voor kiezen om phishingberichten in transacties te embedden die de eigenaar uitnodigen om op een link te klikken die malware downloadt, of om valse websites te bezoeken die legitieme landingspagina's imiteren en om persoonlijke informatie vragen.
Hoe gevaarlijk zijn bitcoin dusting-aanvallen?
Dusting-aanvallen geven oplichters geen toegang tot uw fondsen.
Ze dienen slechts om te verduidelijken welke adressen worden beheerd door een bepaalde crypto-wallet.
Om uw risico op dusting-aanvallen te minimaliseren, is het het beste om nooit op links te klikken of websites te bezoeken die aan stoftransacties zijn gekoppeld.
Begin met Bitcoin kopen
Nu je alles hebt geleerd over het unspent transaction output-model, ben je klaar om je crypto-reis voort te zetten en bitcoin te kopen?
Neem een kijkje in onze Kraken-Leercentrum-gids voor meer informatie over Hoe te kopen Bitcoin (BTC) en registreer je vandaag nog voor een account bij Kraken.