Wat is een UTXO?
UTXO staat voor Uitvoer van niet-bestede transacties (TX). In feite is het de hoeveelheid overgebleven cryptocurrency-wijziging die u van elke transactie ontvangt. Om verder uit te leggen, moeten we eerst opsplitsen hoe een typische cryptotransactie werkt. Laten we Bitcoin als voorbeeld gebruiken, aangezien het de meest bekende cryptocurrency is die UTXO’s gebruikt.
Een UTXO-transactievoorbeeld
Als je naar je Bitcoin-portemonnee kijkt, zie je een saldo. Laten we voor dit voorbeeld dat instellen op 100 bitcoin. Hoewel je gewoon observeert een saldo, uw geld bestaat feitelijk uit meerdere UTXOs. Mogelijk hebt u vier UTXO’s met een waarde van 25 bitcoin elk, twee UTXO’s met een waarde van 50 of een set UTXO’s met een waarde van 37, 18, 40 en 5 bitcoin. De specifieke bedragen doen er niet toe, maar ze moeten optellen bij uw totale saldo, in dit geval 100.
Laten we verder gaan met het voorbeeld en aannemen dat u op zoek bent naar een nieuwe auto. Jij werkt hard; je verdient het. Als je het Lambo-stereotype tegengaat, kies je voor een Porche die 35 bitcoin kost. Welnu, uw portemonnee bevat alleen UTXO’s die elk gelijk zijn aan 15, 17, 28 en 40 bitcoin. Je hebt er geen met een waarde van precies 35 bitcoin.
Het is onmogelijk om UTXO’s te splitsen, dus er is geen manier om de exacte 35 bitcoin te betalen die u verschuldigd bent.
In plaats daarvan besteed je de 40 bitcoin UTXO. In plaats daarvan pepert het netwerk twee nieuwe UTXO’s: een ter waarde van 35 bitcoin en een ter waarde van 5 bitcoin. De autodealer ontvangt de 35 bitcoin UTXO terwijl jij de 5 bitcoin UTXO als wisselgeld ontvangt.
U kunt ook de 17 en 28 bitcoin UTXO’s uitgeven en 10 bitcoin als wisselgeld ontvangen. Een transactie kan elke combinatie van UTXO’s gebruiken; u heeft echter geen controle over welke.
Net zoals u een UTXO in afzonderlijke instanties kunt splitsen, kunt u ze ook combineren in grotere transacties, waardoor u er minder op het netwerk kunt maken.
Hoe zit het met transactiekosten?
Transactiekosten worden ook in transacties opgenomen en afgetrokken van de UTXO die u als wisselgeld ontvangt. De vergelijking ziet er ongeveer zo uit:
Nieuwe UTXO = (Som van UTXO’s in de transactie) – (Transactiebedrag) – (Transactiekosten)
Voortzetting van ons meest recente voorbeeld met een transactiekost van één bitcoin:
Nieuwe UTXO = (17 + 18) – (35) – (1) = 9 bitcoin
UTXO-belang en mogelijke problemen
Het implementeren van UTXO’s vereenvoudigt de boekhoudmethoden van de blockchain aanzienlijk. In plaats van elke afzonderlijke transactie te moeten volgen en op te slaan, hoeven we alleen de niet-uitgegeven munten te volgen, ook wel bekend als de UTXO’s..
U ziet, elke munt in het Bitcoin-ecosysteem kan maar één keer worden uitgegeven. Dus elke bitcoin in een portemonnee is op dit moment niet uitgegeven omdat:
- Een mijnwerker ontving het als een mijnbeloning, of
- Het werd geslagen tijdens een transactie. (Herinner je je ons voorbeeld van eerder?)
UTXO’s zijn van cruciaal belang om aanvallen met dubbele uitgaven te voorkomen, en ze voorkomen dat u munten uitgeeft die niet bestaan. Netwerkknooppunten registreren en onderhouden een database die elke UTXO (d.w.z. niet-uitgegeven munt) bevat die beschikbaar is voor uitgaven. Als u een transactie probeert te verzenden met een munt die niet in die database staat, zullen de knooppunten deze weigeren.
Mogelijke opslagproblemen
Nodes slaan de UTXO-database op in RAM, dus het is belangrijk om de dataset beheersbaar te houden. Naarmate het groeit, groeien de kosten van het draaien van een volledig knooppunt mee. Als het runnen van een volledig knooppunt te duur wordt, kunnen we verdere centralisatie in het Bitcoin-netwerk zien bij de weinigen die het zich kunnen veroorloven om ze te beheren.
Bitcoin UTXO-databasegrootte in de loop van de tijd via Blockchain
Dit risico van centralisatie is een van de belangrijkste argumenten tegen het vergroten van de Bitcoin-blokgrootte. Bitcoin-ontwikkelaar Gavin Andresen beschrijft het het beste in zijn artikel UTXO uh-oh …:
“Een blok van één megabyte is ruimte voor ongeveer 100 miljoen 500-byte transacties per jaar. Als elk van hen de UTXO-set met 500 bytes zou verhogen, zou dat de UTXO-set met 50 gigabytes per jaar doen toenemen. ”
Een blokgrootte van één megabyte stelt een bovengrens in voor de mate waarin de UTXO-database elk jaar kan groeien. Hij gaat door:
“Door meer transacties toe te staan zonder andere wijzigingen, zou de groei van de UTXO-set zeer waarschijnlijk versnellen, waardoor het duurder en sneller zou worden om een volledig validerende node te draaien.”
Zodat we de woorden van Andresen niet hakken: Zijn artikel pleit eigenlijk voor het vergroten van de blokgrootte. Hij stelt dat de impact op de UTXO-setgrootte niet drastisch is zoals anderen denken. En gezien de complexiteit van schaaloplossingen op de tweede laag, moeten we op korte termijn grotere blokken implementeren voordat die oplossingen op de lange termijn beschikbaar zijn..
Oplossingen
Gelukkig zijn er enkele oplossingen voor de mogelijke opslagproblemen. Ten eerste hoeven knooppunten niet de volledige UTXO-database in RAM op te slaan. Ze kunnen ervoor kiezen om een deel ervan op een goedkopere solid-state disk (SSD) of draaiende harde schijf op te slaan. Hoewel deze opslagtypen leiden tot langzamere validatietijden voor elk knooppunt, zou er geen probleem moeten zijn zolang ze nog onder de gemiddelde bloktijd van tien minuten liggen.
Bovendien verbeteren Bitcoin-ontwikkelaars continu de transactiemechanismen om de UTXO-database te optimaliseren.
Ten slotte vertragen Segregated Witness (Segwit) en vergelijkbare schaaloplossingen indirect de groei van de UTXO-database. Rechtstreeks uit trekken Bitcoin Core-documentatie
“Segwit verbetert de situatie hier door het maken van handtekeninggegevens, die geen invloed hebben op de UTXO-setgrootte, 75% minder kosten dan gegevens die wel invloed hebben op de UTXO-setgrootte. Dit zal naar verwachting gebruikers aanmoedigen om de voorkeur te geven aan het gebruik van transacties die de impact op de UTXO-set minimaliseren om de kosten te minimaliseren, en om ontwikkelaars aan te moedigen slimme contracten en nieuwe functies te ontwerpen op een manier die ook de impact op de UTXO-set minimaliseert. “
Conclusie: UTXO-alternatieven?
We hebben vandaag consequent Bitcoin gebruikt in ons voorbeeld, maar er zijn tal van andere cryptocurrencies die UTXO’s implementeren, waaronder Bitcoin Cash, Litecoin en Komodo en vele anderen.
Er zijn ook veel andere crypto’s die andere boekhoudmechanismen gebruiken. Ethereum heeft bijvoorbeeld een op rekeningen gebaseerd transactiemodel. Dit mechanisme levert over het algemeen betere ruimtebesparing en eenvoudigere code op om mee te werken; U verliest echter een niveau van transactieprivacy en loopt onderweg tegen mogelijke schaalbaarheidsproblemen aan.
Als je een zaal met tien crypto-ontwikkelaars vraagt naar de beste boekhoudmethoden, krijg je waarschijnlijk tien verschillende antwoorden. Het is een fel bediscussieerd onderwerp in de hele gemeenschap dat nog steeds geen perfecte oplossing heeft. En vanwege de complexiteit zal het waarschijnlijk nooit gebeuren.