Wat is double-spending?

20 maart 2024
4 min leestijd
blocks

De term double-spending staat voor het probleem waar dezelfde hoeveelheid valuta meerdere malen wordt uitgegeven. Dit probleem is ontstaan in het digitale tijdperk. Fysiek geld kan immers maar 1 keer worden overhandigd. Maar digitaal geld bestaat slechts als code in databases, en code kan gemanipuleerd en gedupliceerd worden.

Gecentraliseerde partijen als banken lossen dit probleem vrij eenvoudig op met een zorgvuldig onderhouden grootboek. Maar hoe zit dat met blockchains? In dit artikel leggen we kort het double-spending probleem uit in relatie tot cryptovaluta en hoe het wordt opgelost.

Double-spending aanvallen

De meeste blockchains zijn gedecentraliseerde systemen. Dit betekent dat er niet 1 autoriteit is die de integriteit van het grootboek waarborgt, zoals bij een bank, maar vele servers verspreid over de wereld die elk hun eigen kopie van het grootboek onderhouden. Deze servers ontvangen continu nieuwe transacties en het duurt even voordat iedere transactie bij elke server is geregistreerd. Daarna duurt het ook nog even voordat de transactie wordt gevalideerd en meegenomen in een blok. Deze aspecten van decentralisatie maken een aantal typen aanvallen mogelijk.

Race attack

Een hacker stuurt op hetzelfde moment vanuit 1 wallet meerdere transacties via verschillende nodes om bij een of meer entiteiten aankopen te doen, terwijl de wallet niet genoeg crypto heeft voor alle betalingen. Pas bij het minen van een blok worden zulke transacties geweigerd, maar als deze entiteiten dit niet controleren en automatisch de betalingen accepteren, dan heeft de hacker dus aankopen gedaan met crypto die niet bestaat. Immers zal alles behalve 1 transactie op de blockchain worden afgekeurd.

Finney attack

Een hacker met een grote hoeveelheid hashing kracht zet een miner node op. Dan bouwt deze een transactie op tussen 2 wallets die allebei van de hacker zijn, en voegt die toe aan zijn eigen blok. Dit blok wordt lokaal gemined en bewaard, maar nog niet uitgezonden. Vervolgens zoekt de hacker een entiteit op waar hij met onbevestigde transacties aankopen kan doen. Nadat de hacker de onbevestigde betaling aan de entiteit doet, stuurt deze snel zijn eigen blok het netwerk op. Omdat het blok al gemined is en daarom gevalideerd, zal dit blok meteen aan de blockchain worden toegevoegd. Omdat dit blok de transactie bevat die de crypto naar een van zijn eigen wallets doorstuurt, zal de nog onbevestigde transactie naar de entiteit worden afgekeurd, en zal de hacker zowel zijn crypto als de aankoop weten te behouden.

51% attack

Deze aanval vereist dat de hackers meer dan 50% van de totale hashing kracht van het netwerk in handen hebben. Zo kunnen zij bijvoorbeeld transacties aan een blok toevoegen die veel meer crypto overmaken aan henzelf dan dat er werkelijk op de wallets staan. Miners in handen van de hackers zullen het blok onrechtmatig goedkeuren, ook al zullen alle andere miners het afkeuren. Maar omdat de hackers in de meerderheid zijn, zal het blok worden toegevoegd aan de blockchain.

Hoe wordt double-spending voorkomen?

De meeste double-spending aanvallen kunnen worden voorkomen door te wachten op meerdere blockchain bevestigingen. Als voorbeeld nemen we Bitcoin. Een “bevestiging” vindt plaats op het moment dat een blok wordt gemined. Het blok krijgt een “hash” met daarin een tijdstip, informatie van het vorige blok, en de transacties in het blok. Op dit moment zijn alle transacties gevalideerd en finaal. Deze informatie is dan voor altijd te raadplegen op het openbare grootboek en kan als onveranderbaar worden beschouwd.

Bij Bitcoin is het de norm om te wachten op 2 to 6 bevestigingen. Dit is niet alleen om double-spend aanvallen te voorkomen, maar ook om problemen te voorkomen wanneer 2 miners exact op hetzelfde moment een valide blok minen. In dit geval loopt de blockchain tijdelijk uiteen, waar miners het ene of het andere blok in de blockchain accepteren afhankelijk van welke zij het eerst ontvangen. Het systeem herstelt dit automatisch wanneer één van de chains weer het volgende blok mined door de langste chain te kiezen als "hoofd chain". Op dat moment wordt het blok van de andere chain ongedaan gemaakt, zodat het een zogeheten orphaned block wordt. Diens transacties worden terug in de mempool geplaatst voor herevaluatie. De kans dat dit voorkomt is erg klein, en dat het meerdere malen achter elkaar gebeurt astronomisch klein.

Aangezien een groot deel van de hashing kracht van het Bitcoin netwerk in handen is van een aantal grote zogeheten “miner pools”, is het praktisch onmogelijk om als individuele aanvaller een malefide transactie of blok op de blockchain te krijgen of de huidige blockchain te veranderen, omdat zulke acties meteen zullen worden afgekeurd door alle andere miners die er schade aan zouden ondervinden.

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

Abonneer op onze nieuwsbrief

Alles over Bitcoin, marktontwikkelingen én Blockrise in een beknopte maandelijkse e-mail.