Det hÀr Àr dubbla utgifter
Hem
Artiklar
Det hÀr Àr dubbla utgifter

Det hÀr Àr dubbla utgifter

Avancerad
Publicerad Feb 17, 2020Uppdaterad Jan 31, 2023
7m

Vad Àr en dubbel utgift?

Dubbla utgifter Ă€r ett potentiellt problem i ett digitalt kontantsystem, dĂ€r samma tillgĂ„ng skickas till tvĂ„ mottagare samtidigt. Utan nĂ„gra ordentliga motĂ„tgĂ€rder blir ett protokoll som inte löser problemet i grunden vĂ€rdelöst – anvĂ€ndarna har inget sĂ€tt att verifiera att de tillgĂ„ngar de har fĂ„tt inte redan har spenderats nĂ„gon annanstans.

NÀr det gÀller digitala kontanter Àr det av största vikt att se till att specifika enheter inte kan dupliceras. Hela systemet skulle gÄ under om Alice kunde ta emot 10 enheter, kopiera och klistra in dem 10 gÄnger och dÀrmed inneha 100 enheter. PÄ liknande sÀtt kan ett sÄdant system inte fungera om hon kan skicka samma 10 enheter till bÄde Bob och Carol samtidigt. SÄ för att digitala pengar ska fungera mÄste det finnas fungerande mekanismer för att förhindra detta beteende.


Hur kan dubbla utgifter förhindras?

Det centraliserade tillvÀgagÄngssÀttet

Det centraliserade sÀttet Àr betydligt enklare att implementera Àn decentraliserade alternativ. Detta innebÀr vanligtvis att en övervakare hanterar systemet och kontrollerar utfÀrdandet och distributionen av alla enheter. Ett bra exempel pÄ en centraliserad lösning pÄ problemet med dubbla utgifter Àr David Chaums eCash. 

För att ge anvĂ€ndarna en digital tillgĂ„ng som efterliknar kontanter (som klarar av utbyte av tillgĂ„ngar anonymt och via peer-to-peer) kan en bank anvĂ€nda blinda signaturer – vilka beskrivs av kryptografen David Chaum i hans artikel Blind Signatures for Untraceable Payments frĂ„n 1982.

Om en anvÀndare (lÄt oss kalla honom Dan) vill fÄ 100 dollar i digitala kontanter, Àr han i ett sÄdant sammanhang skyldig att informera banken först. Förutsatt att han har den balansen pÄ sitt konto kommer han sedan att generera ett slumpmÀssigt nummer (eller mÄnga sÄdana för mindre valörer). LÄt oss anta att han producerar fem nummer och var och ett ska tilldelas ett vÀrde pÄ 20 dollar. För att förhindra att banken spÄrar specifika enheter döljer Dan slumptalen genom att lÀgga till en blind faktor till var och en av dem.

Han överlÀmnar sedan dessa uppgifter till banken, som debiterar 100 dollar frÄn hans konto och undertecknar meddelanden som intygar att var och en av de fem delarna med information kan lösas in för 20 dollar. Dan kan nu spendera tillgÄngarna som utfÀrdats av banken. Han gÄr till Eriks restaurang och köper en mÄltid som kostar honom 40 dollar. 

Dan kan ta bort den blinda faktorn för att exponera slumptalet som Àr associerat med varje digital "kontantrÀkning", vilken fungerar som en unik identifierare för varje enhet (ungefÀr som ett serienummer). Han avslöjar tvÄ av dessa för Erik, som nu mÄste lösa in dem omedelbart med banken för att hindra Dan frÄn att spendera dem pÄ ett annat stÀlle. Banken kommer att kontrollera att signaturerna Àr giltiga och om allt verkar stÀmma kommer den att kreditera Eriks konto med 40 dollar.

De rÀkningar som har anvÀnts Àr nu i huvudsak brÀnda och fler mÄste utfÀrdas om Erik vill spendera sin nya balans pÄ samma sÀtt.

UpplÀgget med David Chaums eCash kan vara anvÀndbart för privata överföringar. Men det Àr inte flexibelt, eftersom banken Àr en central felpunkt. En utfÀrdad rÀkning Àr inte vÀrd nÄgot i sig, eftersom dess vÀrde enbart kommer frÄn bankens vilja att byta ut den mot dollar. Kunderna Àr beroende av banken och mÄste förlita sig pÄ dess goda vilja för att pengarna ska kunna anvÀndas. Det Àr just detta problem som kryptovalutor försöker ÄtgÀrda.


Det decentraliserade tillvÀgagÄngssÀttet

Att se till att tillgÄngar inte kan spenderas dubbelt i ett ekosystem utan övervakare Àr svÄrare. Deltagare med samma makt mÄste samordna kring en uppsÀttning regler som förhindrar bedrÀgerier och uppmuntrar alla anvÀndare att agera Àrligt.

Den största innovationen som presenterades i Bitcoins vitbok var en lösning pĂ„ problemet med dubbla utgifter. Även om det inte refereras till som sĂ„dant, föreslog Satoshi datastrukturen som nu Ă€r allmĂ€nt kĂ€nd som en blockkedja.

En blockkedja Àr egentligen bara en databas med vissa unika egenskaper. Deltagarna i nÀtverket (kallas noder) kör en specialiserad programvara, vilken gör det möjligt för dem att synkronisera sin kopia av databasen med de andra. Resultatet blir att hela nÀtverket kan granska historien om transaktionerna hela vÀgen tillbaka till genesis-blocket. Genom att göra blockkedjan offentligt synlig Àr det enkelt att upptÀcka och förhindra skadliga handlingar, till exempel transaktioner som försöker dubbla utgifterna.

NĂ€r en anvĂ€ndare sĂ€nder en transaktion lĂ€ggs den inte omedelbart till i blockkedjan – den mĂ„ste först inkluderas i ett block genom utvinning. DĂ€rför bör mottagaren endast betrakta transaktionen som giltig efter att dess block har lagts till i kedjan. Annars riskerar denne att förlora tillgĂ„ngarna, eftersom avsĂ€ndaren kan spendera samma coin nĂ„gon annanstans. 

NĂ€r transaktionen har bekrĂ€ftats kan coin inte spenderas dubbelt, eftersom Ă€gandet tilldelas en ny anvĂ€ndare – och hela nĂ€tverket kan verifiera detta. Det Ă€r av denna anledning som mĂ„nga rekommenderar att du vĂ€ntar pĂ„ flera bekrĂ€ftelser innan du godkĂ€nner en betalning som giltig. Varje efterföljande block ökar drastiskt mĂ€ngden anstrĂ€ngning som krĂ€vs för att Ă€ndra eller skriva om kedjan (vilket kan intrĂ€ffa under en 51 %-attack).

LÄt oss gÄ tillbaka till restaurangscenariot. Dan ÄtervÀnder till restaurangen och ser nu ett klistermÀrke med texten "Vi accepterar Bitcoin som betalning" pÄ fönstret. Han gillade maten han Ät förra gÄngen, sÄ han bestÀller den igen. Den kostar honom 0,005 BTC. 

Erik ger honom en offentlig adress som han mÄste skicka tillgÄngarna till. Dan skickar transaktionen, som i huvudsak Àr ett undertecknat meddelande om att 0,005 BTC som var i Dans Àgo nu Àr i Eriks. Utan att gÄ in pÄ för mÄnga detaljer kan alla som presenteras med Dans undertecknade transaktion verifiera att han verkligen hade dessa coin och dÀrför hade befogenhet att skicka dem.

Som nĂ€mnts tidigare Ă€r transaktionen dock endast giltig om den ingĂ„r i ett block som bekrĂ€ftas. Att acceptera obekrĂ€ftade transaktioner Ă€r ungefĂ€r som att acceptera 40 dollar i eCash frĂ„n föregĂ„ende exempel, utan att omedelbart lösa in dem med banken – detta gör att avsĂ€ndaren kan spendera dem nĂ„gon annanstans. SĂ„ det rekommenderas att Erik vĂ€ntar pĂ„ minst 6 blockbekrĂ€ftelser (ungefĂ€r en timme) innan han accepterar Dans betalning.


Dubbla utgifter inom Bitcoin

Bitcoin Àr noggrant utformat för att förhindra attacker med dubbla utgifter, Ätminstone nÀr protokollet anvÀnds som förvÀntat. Med detta menas att om man vÀntar pÄ att transaktionen ska bekrÀftas i ett block, finns det inget enkelt sÀtt för avsÀndaren att ta tillbaka den. För att göra detta skulle denne behöva "vÀnda" blockkedjan, vilket krÀver en orealistisk mÀngd hashkraft.

Det finns dock en del attacker med dubbla utgifter som riktar in sig pÄ dem som accepterar obekrÀftade transaktioner. För ett litet köp kanske en handlare inte vill vÀnta pÄ att transaktionen ska inkluderas i ett block. En populÀr snabbmatsrestaurang har förmodligen inte rÄd att vÀnta pÄ att nÀtverket bearbetar varje köp. SÄ om ett företag accepterar "omedelbara" betalningar riskerar de dubbla utgifter. NÄgon kan bestÀlla en hamburgare, betala för den och sedan omedelbart skicka samma tillgÄngar till sin egen adress. Med en högre avgift kommer denna nya transaktion sannolikt att bekrÀftas först och kommer dÀrför att ogiltigförklara den tidigare.

Det finns tre populÀra metoder för att utföra dubbla utgifter:

  • 51 %-attacker: nĂ€r en enda enhet eller organisation lyckas kontrollera mer Ă€n 50 % av hashhastigheten, vilket gör att den kan utesluta eller Ă€ndra ordningen pĂ„ transaktioner. En sĂ„dan attack Ă€r mycket osannolik pĂ„ Bitcoin, men har intrĂ€ffat i andra nĂ€tverk.

  • Race-attacker: tvĂ„ motstridiga transaktioner sĂ€nds i följd med samma tillgĂ„ngar – men bara en transaktion bekrĂ€ftas. Angriparens mĂ„l Ă€r att ogiltigförklara betalningen genom att endast validera transaktionen som gynnar hen (till exempel skicka samma tillgĂ„ngar till en adress som hen kontrollerar). Race-attacker krĂ€ver att mottagaren accepterar en obekrĂ€ftad transaktion som betalning.

  • Finney-attacker: en angripare utvinner en transaktion i ett block i förvĂ€g utan att omedelbart skicka den till nĂ€tverket. IstĂ€llet spenderar hen samma coin i en annan transaktion och skickar dĂ€refter sitt tidigare utvunna block, vilket kan ogiltigförklara betalningen. Finney-attacker krĂ€ver att ett specifikt hĂ€ndelseförlopp intrĂ€ffar och Ă€r ocksĂ„ beroende av mottagarens godkĂ€nnande av obekrĂ€ftade transaktioner.

Som vi kan se kommer en handlare som vÀntar pÄ blockbekrÀftelserna att avsevÀrt minska riskerna för att bli offer för dubbla utgifter.


Sammanfattningsvis

En dubbel utgift gör det möjligt för en anvÀndare att anvÀnda ett elektroniskt kontantsystem för ekonomisk vinning och anvÀnda samma tillgÄngar mer Àn en gÄng. Traditionellt sett har bristen pÄ bra lösningar pÄ problemet stÄtt i vÀgen för framsteg inom omrÄdet.

Som tur Ă€r föreslog dock anvĂ€ndningen av blinda signaturer en intressant lösning för centraliserade finansiella system. Senare introducerade skapandet av mekanismen arbetsbevis och blockkedjeteknik Bitcoin, som en kraftfull form av decentraliserade pengar – vilket i sin tur har inspirerat tusentals andra kryptovalutaprojekt.

Dela inlÀgg
Registrera ett konto
OmsÀtt din kunskap i praktiken genom att öppna ett Binance-konto idag.