begin
begin

Bitcoin is gedeeltelijk gebaseerd op een database die alle transacties registreert, ook wel een „Blockchain” genoemd. Deze term is inmiddels bekend, maar wist u dat er nog een database is die net zo belangrijk is voor de werking van Bitcoin-nodes? Dit veel minder bekende element is de UTXO-set.
In dit artikel nodig ik je uit om te ontdekken wat de UTXO-set is en wat zijn rol is in het functioneren van Bitcoin. We zullen ook onderzoeken waarom de evolutie ervan een bedreiging kan vormen voor de stabiliteit van Bitcoin op middellange termijn, en welke oplossingen worden overwogen om dit probleem aan te pakken.
EEN TUXO (Uitvoer van niet-gebruikte transacties) is een uitvoer van een Bitcoin-transactie die nog niet is uitgegeven. Concreet zijn dit min of meer grote stukken bitcoin die een gebruiker bezit en die beschikbaar zijn om te worden gebruikt bij een toekomstige transactie.
Elke UTXO vertegenwoordigt een bepaalde hoeveelheid bitcoin en is beveiligd met een script dat de voorwaarden bepaalt waaronder deze kan worden uitgegeven. Deze voorwaarden vereisen over het algemeen een handtekening die is verkregen met een privésleutel die de rechtmatige eigenaar heeft.
Simpel gezegd, de UTXO voor Bitcoin is wat het ticket is in de euro. Bitcoin is de rekeneenheid die op Bitcoin wordt gebruikt, en UTXO is het medium waarmee deze rekeneenheden kunnen worden weergegeven.

Een transactie bestaat uit het overboeken van bitcoins uit een reeks items (Ingangen) naar een set uitgangen (Uitgangen).
De boekingen van een transactie komen overeen met UTXO's van eerdere transacties, die tijdens deze nieuwe transactie worden verbruikt. Een handtekeningscript (ScriptSig) wordt gebruikt om elke UTXO in inzendingen te ontgrendelen door te voldoen aan de uitgavenvoorwaarden die zijn gedefinieerd bij het aanmaken van de UTXO.
In ruil daarvoor creëert de transactie nieuwe UTXO's in de output. Elke output koppelt een hoeveelheid bitcoins aan een nieuwe bestedingsvoorwaarde (Script PubKey), vaak met behulp van een ontvangstadres. Deze nieuw aangemaakte UTXO's zullen dan beschikbaar zijn om te worden gebruikt als input voor toekomstige transacties.

De UTXO-set vertegenwoordigt alle UTXO's die op een bepaald moment op Bitcoin bestaan. Met andere woorden, het is een uitputtende lijst van alle stukken bitcoin die beschikbaar zijn om te worden uitgegeven. Dus als we de bedragen van alle UTXO's die aanwezig zijn in de UTXO-set bij elkaar optellen, krijgen we de totale geldhoeveelheid die in omloop is op Bitcoin.
.png)
Elk knooppunt in het netwerk onderhoudt lokaal zijn eigen complete UTXO-set, parallel aan de Blockchain. Deze UTXO-set wordt voortdurend bijgewerkt wanneer nieuwe transacties in blokken worden geïntegreerd.
Wanneer een gebruiker op het netwerk een nieuwe transactie verzendt, controleert elk knooppunt of de UTXO's die als invoer worden gebruikt, aanwezig zijn in de UTXO-set. Dit zorgt ervoor dat de uitgegeven bitcoins daadwerkelijk bestaan en niet al zijn verbruikt bij een andere transactie. Als de UTXO legitiem is, wordt de transactie geaccepteerd, anders wordt deze afgewezen om dubbele uitgaven te voorkomen.

Zodra de transactie is gevalideerd, werkt het knooppunt zijn UTXO-set bij: het verwijdert de UTXO's die als invoer worden gebruikt en voegt de nieuwe UTXO's toe die als uitvoer zijn gemaakt. Als gevolg hiervan wordt de UTXO-set voortdurend bijgewerkt om de beschikbare bitcoinmunten weer te geven.

Op de meerderheidsclient Bitcoin Core wordt de UTXO-set bewaard in het bestand”Chainstate”.
➤ Meer informatie over hoe een Bitcoin-node werkt.
UTXO groeit continu en snel op Bitcoin. Vanwege talrijke externe en interne factoren in het systeem is de gemiddelde verhouding van UTXO's die door UTXO wordt verbruikt zeer onevenwichtig. Deze uitbreiding is deels het gevolg van de stijging van de prijs van Bitcoin, wat het gebruik van kleinere UTXO's aanmoedigt, waardoor hun totale aantal toeneemt. De toenemende acceptatie zorgt ook voor een grotere behoefte aan UTXO's.
Er is ook de klassieke structuur van Bitcoin-betalingstransacties, meestal één invoer voor twee uitgangen, waardoor twee UTXO's ontstaan voor een enkele verbruikte transactie. Ten slotte heeft de CIOH (Heuristiek van gemeenschappelijke input-eigendom), vormt een probleem op het gebied van vertrouwelijkheid bij de consolidatie van verschillende UTXO's, en vormt een extra belemmering om het aantal UTXO's te verminderen. UTXO en knopen zijn dus bestemd voor natuurlijke en onvermijdelijke groei.
Dit probleem is al enkele jaren bekend bij de ontwikkelaars van Bitcoin Core. De SegWit-update van 2017 introduceerde ook een economische stimulans voor consolidatie door de kosten te verlagen voor transacties die meer inputs verbruiken en minder outputs opleveren. Deze maatregel was echter niet voldoende om het fenomeen een halt toe te roepen.
Het probleem met deze groei is dat voor het onderhoud van de UTXO-set steeds meer RAM nodig is. Om transacties effectief te kunnen valideren, moet een deel van de UTXO-set in het RAM-geheugen worden opgeslagen, omdat dit een snelle verificatie mogelijk maakt. Dit probleem heeft ook invloed op de initiële synchronisatietijd (IBD), d.w.z. de tijd die nodig is om de volledige blockchain te downloaden en te valideren wanneer een nieuw knooppunt wordt gelanceerd.
Naarmate de grootte van de UTXO toeneemt, neemt ook de RAM-behoefte toe. De toename van de RAM-capaciteit van de computer (de wet van Moore) volgt echter niet dezelfde curve als de groei van de UTXO-set. Als deze trend zich voortzet, wordt het exploiteren van een Bitcoin-node steeds duurder in termen van hardware.
Deze verhoging van de hardwarevereisten om een node te laten draaien, kan gevolgen hebben voor de decentralisatie en beveiliging van het Bitcoin-netwerk. Als de kosten voor het onderhoud van een node stijgen, kunnen minder mensen dat doen, waardoor het aantal nodes afneemt en de distributie en robuustheid van het netwerk afneemt. De omvang van de UTXO is daarom een grote uitdaging voor de levensvatbaarheid van Bitcoin op middellange termijn.
De oplossing die lijkt te ontstaan om dit probleem van de toenemende omvang van de UTXO-set op Bitcoin op te lossen, is Utreexo.
Utreexo is een oplossing die is uitgevonden door Tadge Dryja (die ook de mede-maker is van het Lightning Network) om de UTXO-set te comprimeren met behulp van een accumulator op basis van Merkle-bomen. De klassieke UTXO, die alle UTXO's bevat, heeft veel opslagruimte nodig. Met Utreexo wordt deze beperking verlicht, aangezien Bitcoin-knooppunten niet langer alle UTXO's bewaren, maar slechts enkele cryptografische vingerafdrukken. Dit vermindert de RAM- en opslagvereisten drastisch.
Wanneer een gebruiker een transactie compatibel maakt met Utreexo, levert hij zowel het bewijs van bezit van de gebruikte UTXO's als de bijbehorende Merkle-paden. Het knooppunt controleert dit bewijs vervolgens om er zeker van te zijn dat UTXO's in het algemeen bestaan op basis van hun cryptografische voetafdruk, zonder dat alle gegevens moeten worden opgeslagen.

Utreexo kan op twee manieren worden geïmplementeerd. De eerste is om het gebruik ervan te generaliseren, zodat alle transacties dit bewijs bevatten. Dit zou echter de blokgrootte vergroten, wat van invloed zou zijn op de bandbreedte en opslagbehoeften. De tweede methode is gebaseerd op”Brugknooppunten”: volledige knooppunten die ook de volledige UTXO-set opslaan en het nodige bewijs leveren voor de Utreexo-knooppunten. Utreexo zou dan een optie zijn voor gebruikers die zich geen volledig knooppunt kunnen veroorloven. In beide gevallen is er een compromis, of het nu gaat om de benodigde middelen of de afhankelijkheid van Bridge Nodes.
➤ Ontdek wat Mempool is op een Bitcoin-node.
De UTXO-set is een grote lijst van alle bitcoinstukken die op een bepaald moment bestaan, die door elk knooppunt wordt bijgehouden. Het speelt een belangrijke rol in de manier waarop Bitcoin werkt, maar de snelle en bijna natuurlijke groei zal voor uitdagingen zorgen voor de toekomst. Als de omvang van de UTXO blijft toenemen, kunnen de kosten voor het runnen van een node voor sommige gebruikers onbetaalbaar worden.
Utreexo biedt een oplossing door de RAM-vereisten te verminderen door het gebruik van cryptografische accumulatoren. Dit protocol houdt echter noodzakelijkerwijs compromissen in, hetzij wat betreft de grootte van de blokken, hetzij wat betreft de afhankelijkheid van Bridge Nodes. In de toekomst kunnen er andere oplossingen komen, maar het is zeker dat het een technisch debat zal zijn dat in de komende jaren aan de orde zal moeten komen.

