Een gerespecteerde cryptocurrency kan alleen succesvol zijn wanneer zij het double-spending probleem opgelost hebben. Dit probleem is een cruciale uitdaging voor elke digitale valuta. Als het niet effectief wordt aangepakt, brengt het de integriteit in gevaar. In dit artikel leggen we kort uit wat het double-spending probleem is, en hoe dit wordt opgelost.

Wat is double-spending en waarom is het een probleem?

Double-spending betekent dat dezelfde hoeveelheid van een valuta twee keer gespendeerd zou kunnen worden.

Met fysiek geld kan dat natuurlijk niet: als ik een briefje van 50 euro heb, kan ik niet zowel mijn buurman als mijn neef 50 euro betalen. Voor online bankieren geldt dat doorgaans banken of andere derde partijen controleren of geld goed wordt verstuurd en ontvangen.

Voor crypto ligt dat wat gecompliceerder. Heel platgeslagen: ik heb precies 0.1 BTC, en ik beloof zowel mijn buurman als mijn neef 0.1 BTC te betalen. Als dat zou lukken, zou dat voor ongecontroleerde inflatie zorgen en daarnaast het vertrouwen in het systeem ernstig schaden. De blockchain moet juist een database zijn van alle transacties ooit, en die bestand is tegen fraude. Dat zijn kernwaarden of principes waarop de eerste blockchain ooit gebouwd is.

Double-spending als een aanval

Er wordt wel eens gepoogd misbruik te maken van de blockchain, door middel van double-spending. Eén van de mogelijke soorten aanvallen is een “race-aanval”. In dit geval stuurt een hacker twee transacties heel snel achter elkaar, waarna er maar één wordt bevestigd op de blockchain. De hacker hoopt dan iets aan te kopen met een nog onbevestigde transactie en deze te invalideren voordat het wel bevestigd wordt. Dit werkt alleen als de ontvanger van de crypto nog onbevestigde betalingen accepteert.

Ook een Finney-aanval, wat alleen door miners op een Proof-of-Work blockchain gedaan kan worden, is alleen mogelijk als de ontvanger nog onbevestigde betalingen accepteert.

In theorie kan een kwaadwillende partij ook een double-spend aanval uitvoeren als het meer dan 50% van de totale hashing power van het netwerk in handen heeft. Door de grootte van het Bitcoin netwerk is de kans hierop bijna (maar nooit helemaal) nihil. Voor kleinere blockchains is dit echter wel een risico.

Hoe wordt double-spending voorkomen?

Zoals hiervoor omschreven, is het vrij lastig om een double-spending aanval uit te voeren, zeker bij een grote blockchain zoals die van Bitcoin.

Wanneer er een nieuw blok op de blockchain wordt gemaakt, krijgt deze een “hash” met daarin een tijdstip, informatie van het vorige blok in de keten, en de transacties die erin zitten. De informatie in dit blok wordt geverifieerd en dan bevestigd. Deze informatie is dan voor altijd te raadplegen op het openbare grootboek. Daarnaast is deze informatie niet veranderbaar.

De kans dat een kwaadwillende een “fout” blok in de blockchain kan injecteren is klein, omdat elk nieuw blok gevalideerd en geaccepteerd dient te worden door het netwerk. En dit gaat heel erg snel. Het foute blok zal dus bijna altijd “te laat” zijn.

Meerdere bevestigingen

Doordat de meeste partijen zoals exchanges zelfs meerdere bevestigingen (confirmations) afwachten, wordt het risico nog verder verlaagd dat iemand misbruik kan maken van double-spending.

Bijvoorbeeld, voor Bitcoin is het de norm om 2 tot 6 bevestigingen (aantal mined blocks) te hebben voordat het op een platform wordt geaccepteerd. In de tussentijd worden mogelijk foute transacties dus nog niet als finaal beschouwd.

Reden hiervoor is dat door puur toeval het kan voorkomen dat 2 verschillende miners een block minen, en ieder 1 van de double-spend transacties in hun block toevoegen. Ieder van de blokken heeft dan 1 bevestiging en zo loopt de blockchain tijdelijk uiteen. Het systeem herstelt dit automatisch wanneer één van de chains een nieuw blok maakt, door de langste chain te kiezen als "hoofd chain". Op dat moment worden de blokken van de andere chain ongedaan gemaakt: dit noemt men orphaned blocks. Diens transacties worden terug in de mempool geplaatst voor herevaluatie. De kans dat het meerdere malen achter elkaar voorkomt dat 2 miners exact op hetzelfde moment een nieuw blok minen is astronomisch klein.

Byzantine Fault Tolerance

Met Byzantine Fault Tolerance (BFT) in het protocol van een cryptocurrency, wordt double-spending verder voorkomen. BFT houdt in dat een systeem moet blijven werken, ook al zijn er een paar kinken in de kabel. Dus als een paar computers in het netwerk de boel willen bedriegen of zich niet naar behoren gedragen, moet het systeem gewoon doorgaan zonder hen. Dit is cruciaal om de integriteit van de gegevens te waarborgen.

Conclusie

Het double-spending probleem is een van de grootste uitdagingen binnen de wereld van cryptocurrency. Voor kleinere blockchains is dit probleem groter dan voor gevestigde blockchains zoals Bitcoin. Door gebruik te maken van blockchain-technologie, cryptografie en Byzantine Fault Tolerance kunnen cryptocurrencies het nagenoeg onmogelijk maken dat dezelfde munten meer dan eens worden uitgegeven. Dit helpt de integriteit en betrouwbaarheid van crypto.

De informatie verstrekt in onze artikelen is uitsluitend bedoeld voor algemene informatieve doeleinden en vormt geen (financieel) advies.

Abonneer op onze nieuwsbrief

Alles over crypto, investeren én Blockrise in een beknopte maandelijkse e-mail.