Hoe werkt double-spending?
article-7751

Hoe werkt double-spending?

Alice Cooper · 27 september 2025 · 6m ·

Basisprincipes

In de wereld van digitaal geld is double-spending een kritisch probleem. Dit treedt op wanneer dezelfde gelden tegelijkertijd naar twee ontvangers worden gestuurd. Zonder passende tegenmaatregelen wordt het protocol fundamenteel aangetast, omdat gebruikers niet kunnen verifiëren dat ze unieke gelden hebben ontvangen die niet elders al zijn uitgegeven.

Om de integriteit van digitaal geld te waarborgen, is het cruciaal om duplicatie van specifieke eenheden te voorkomen. Het hele systeem zou instorten als een gebruiker eenheden kon kopiëren en plakken, wat zou leiden tot een overvloed aan geld. Evenzo zou het onmogelijk zijn voor Alice om tegelijkertijd dezelfde 10 eenheden naar zowel Bob als Carol te sturen. Daarom moeten er mechanismen zijn om dit gedrag te verhinderen en ervoor te zorgen dat digitaal geld effectief kan functioneren.

Oplossingen voor het double-spending probleem

Er zijn twee benaderingen om double-spending in digitale transacties te voorkomen: de gecentraliseerde aanpak en de gedecentraliseerde aanpak. De gecentraliseerde aanpak omvat één toezichthouder die het systeem beheert en de uitgifte en distributie van eenheden controleert, terwijl de gedecentraliseerde aanpak vereist dat even krachtige deelnemers coördineren rond een set regels om fraude te voorkomen.

Gecentraliseerd

David Chaum’s eCash is een voorbeeld van een gecentraliseerde oplossing voor het double-spend-probleem. Het is aanzienlijk eenvoudiger te implementeren dan gedecentraliseerde alternatieven, omdat één toezichthouder het systeem beheert en de uitgifte en distributie van eenheden controleert. Om gebruikers van digitale activa te voorzien, kan een bank blind signatures gebruiken zoals beschreven in David Chaum’s 1982 paper Blind Signatures for Untraceable Payments.

Stel dat een gebruiker, Frank, $100 in digitaal geld wil ontvangen. Frank moet de bank informeren en een willekeurig nummer genereren, waarbij hij een blinding factor toevoegt aan elk nummer om te voorkomen dat de bank specifieke eenheden kan volgen. Frank dient deze gegevens vervolgens in bij de bank, die zijn rekening debiteert en berichten ondertekent die certificeren dat elk van de vijf informatiestukken inwisselbaar is voor $20. Frank kan nu de door de bank uitgegeven gelden uitgeven.

Ter illustratie: Emily’s restaurant accepteert digitaal geld en Frank besluit daar te eten. Hij onthult twee willekeurige nummers, die dienen als unieke identificatoren voor elke eenheid, om zijn maaltijd van $40 te betalen. Emily moet deze onmiddellijk bij de bank inwisselen om te voorkomen dat Frank ze bij een andere handelaar uitgeeft. De bank controleert of de handtekeningen geldig zijn, schrijft $40 bij op Emily’s rekening en vernietigt de gebruikte biljetten. Als Emily haar nieuwe saldo op dezelfde manier wil uitgeven, moeten er meer biljetten worden uitgegeven.

Hoewel Chaumiaanse eCash waardevol kan zijn voor privétransfers, faalt het op veerkracht omdat de bank een centraal enkelvoudig foutpunt is. De waarde van het uitgegeven biljet is volledig afhankelijk van de bereidheid van de bank om het voor dollars in te wisselen, en klanten moeten op haar goede trouw vertrouwen om geld functioneel te laten zijn. Dit is het probleem dat cryptocurrency probeert op te lossen.

Gedecentraliseerd

In een gedecentraliseerd systeem is het voorkomen van double-spending uitdagend. Alle deelnemers moeten zich aan een reeks regels houden die fraude voorkomen en eerlijk gedrag stimuleren. Het Bitcoin white paper introduceerde een oplossing voor dit probleem: de blockchain.

Een blockchain is een database met unieke eigenschappen die deelnemers in het netwerk in staat stelt hun kopieën van de database te synchroniseren met die van hun peers. Door de blockchain publiekelijk zichtbaar te maken, is het eenvoudig om frauduleuze activiteiten, zoals double-spending, te detecteren en te voorkomen.

Wanneer een gebruiker een transactie uitzendt, moet deze eerst via mining in een block worden opgenomen voordat hij aan de blockchain wordt toegevoegd. Als gevolg daarvan moet de ontvanger de transactie pas als geldig beschouwen nadat het block aan de keten is toegevoegd. Eenmaal bevestigd kunnen de coins niet dubbel worden uitgegeven omdat het eigendom is toegewezen aan een nieuwe gebruiker en het hele netwerk dit kan verifiëren.

In het scenario van het kopen van een maaltijd in een restaurant, als het restaurant Bitcoin accepteert, moet de klant de gelden naar het openbare adres van het restaurant sturen. Iedereen die de ondertekende transactie te zien krijgt, kan verifiëren dat de klant de bevoegdheid had om de coins te verzenden. Het wordt echter aangeraden dat het restaurant minstens zes blockbevestigingen (ongeveer een uur) afwacht voordat het de betaling accepteert om fraude te voorkomen.

Hoewel de blockchain het double-spending probleem in een gedecentraliseerd systeem oplost, is het niet onfeilbaar. Het accepteren van onbevestigde transacties is riskant en kan de afzender in staat stellen dezelfde coins elders uit te geven. Hoe meer blockbevestigingen een transactie heeft, hoe veiliger deze is.

Double-spending oplossen in Bitcoin

Bitcoin is ontworpen om double-spending aanvallen te voorkomen, maar dit werkt alleen als transacties in een block worden bevestigd. Als individuen op bevestiging wachten, is het niet eenvoudig voor de afzender om de transactie ongedaan te maken. De blockchain zou dan "omgekeerd" moeten worden, wat onrealistisch is zonder een buitensporige hoeveelheid hashing-power.

Echter, double-spending aanvallen zijn mogelijk wanneer partijen onbevestigde transacties accepteren. Bijvoorbeeld, een handelaar wil misschien niet wachten tot transacties in een block worden opgenomen voor lage waarde aankopen. In een druk fastfoodrestaurant is het niet praktisch om op elke aankoop te wachten tot deze bevestigd is. Als een bedrijf "directe" betalingen toestaat, wordt het kwetsbaar voor double-spending. Iemand kan een burger kopen en ervoor betalen, en vervolgens direct dezelfde gelden naar zijn eigen adres sturen. Met een hogere fee wordt de nieuwe transactie waarschijnlijk eerst bevestigd en zal deze de vorige ongeldig maken.

Er zijn drie populaire methoden om een double-spend uit te voeren.

  • De eerste is een 51%-aanval, die plaatsvindt wanneer een entiteit of organisatie meer dan 50% van de hashrate controleert, waardoor zij transacties kunnen uitsluiten of de volgorde kunnen wijzigen.
  • De tweede methode is een race-aanval, waarbij twee conflicterende transacties achter elkaar worden uitgezonden, maar slechts één transactie wordt bevestigd. Het doel van de aanvaller is de betaling ongeldig te maken door alleen de transactie te laten valideren die hen bevoordeelt.
  • Tot slot omvatten Finney-aanvallen een aanvaller die vooraf één transactie in een block mineert zonder deze onmiddellijk uit te zenden, vervolgens dezelfde coins in een andere transactie uitgeeft, en pas daarna het eerder geminede block uitzendt, wat de betaling kan ongeldig maken.

Om het risico slachtoffer te worden van double-spends te minimaliseren, moet een handelaar wachten op blockbevestigingen voordat hij een betaling accepteert.

Conclusie

Het probleem van double-spending doet zich voor wanneer een gebruiker hetzelfde geld meerdere keren gebruikt in een elektronisch betaalsysteem om financieel voordeel te behalen. Dit is lange tijd een onbevredigend probleem geweest en heeft vooruitgang in het veld belemmerd.

De oplossing die blind signatures voorstelt, heeft echter een interessante aanpak geboden voor gecentraliseerde financiële schema's. Later gaven de opkomst van Proof of Work-mechanismen en blockchaintechnologie aanleiding tot Bitcoin als een krachtige vorm van gedecentraliseerd geld, wat op zijn beurt duizenden andere cryptocurrencyprojecten heeft geïnspireerd.

Double Spending
Blockchain
Lees meer

Laat je crypto groeien met tot 20% APY

Simpelweg storten, ontspannen, en je saldo zien groeien — veiligBegin met Verdienen