Care este problema cheltuielilor duble?

Problema dublei cheltuieli este o problemă potențială în sistemele digitale de numerar în care aceleași fonduri sunt plătite la doi beneficiari în același timp. Fără contramăsuri adecvate, protocolul singur nu poate rezolva complet această problemă. La urma urmei, utilizatorii nu au nicio modalitate de a verifica dacă fondurile pe care le primesc au fost plătite altora.

În lumea numerarului digital, este necesar să se asigure că o anumită unitate monetară nu poate fi copiată. Dacă Alice ar putea primi 10 unități valutare, să le copieze și să le lipească de 10 ori și apoi să aibă ea însăși 100 de unități valutare, întregul sistem s-ar prăbuși. La fel, dacă ar putea trimite aceleași 10 unități valutare lui Bob și Carol în același timp, nici sistemul nu ar funcționa. Prin urmare, trebuie să existe mecanisme care să prevină acest lucru, pentru a asigura funcționarea corespunzătoare a monedelor digitale.


Cum să preveniți problema cheltuielilor duble?

Abordare centralizată

Abordările centralizate sunt mai ușor de implementat decât soluțiile descentralizate, care necesită, de obicei, un supervizor care să gestioneze sistemul și să controleze emiterea și emiterea unităților valutare. eCash lui David Chaum rezolvă problema dublei cheltuieli printr-o abordare centralizată.​

Băncile pot folosi semnături oarbe pentru a emite utilizatorilor active digitale asemănătoare numerarului (care pot permite tranzacții anonime peer-to-peer). Acest lucru este detaliat în lucrarea din 1982 „Blind Signature Techniques for Untraceable Payments” a criptografului David Chaum.

În acest caz, dacă utilizatorul Dan dorește să primească 100 USD în numerar digital, trebuie să anunțe banca mai întâi. Dacă există un sold în contul său, va fi generat un număr aleatoriu (mai mult dacă denumirea este mai mică). Să presupunem că sunt generate cinci numere aleatorii, fiecare valorând 20 USD. Pentru a împiedica băncile să urmărească anumite unități valutare, Dan confundă situația adăugând un factor orbitor la fiecare număr aleatoriu.

Apoi a dat aceste date băncii, care a dedus soldul de 100 de dolari din contul său și a semnat mesajul, dovedind că fiecare dintre cele cinci mesaje poate fi răscumpărat cu 20 de dolari. În acest moment, Dan poate folosi numerar digital emis de bancă. A mers la restaurantul lui Erin pentru o masă și a cheltuit 40 de dolari.​

Dan elimină factorul orbitor și expune nonce asociat cu fiecare „notă” digitală de numerar, care este un identificator unic pentru fiecare unitate de monedă (aproximativ echivalent cu un număr de serie). El îi dezvăluie două dintre numerele aleatorii lui Erin, care trebuie să schimbe imediat fondurile cu banca pentru a-l împiedica pe Dan să plătească altor comercianți. Banca va verifica dacă semnătura este validă și, dacă este corectă, va depune 40 USD în contul lui Erin.

„Bancnotele” folosite sunt apoi distruse, iar dacă Erin dorește să-și folosească soldul contului în același mod, trebuie emise mai multe bancnote.

Mecanismul Chaumian eCash este extrem de valoros pentru transferurile private. Cu toate acestea, mecanismul eCash în sine nu are rezistență Deoarece băncile sunt noduri centralizate, odată ce sistemul merge prost, toată lumea va avea de suferit. Bancnotele emise de bancă nu au valoare în sine; valoarea lor provine în întregime din disponibilitatea băncii de a schimba bancnotele în dolari americani. Clienții sunt supuși băncii și trebuie să se bazeze pe reputația băncii pentru a opera fonduri. Aceasta este exact problema pe care criptomonedele își propun să o rezolve.


Abordare descentralizată

Evitarea problemei dublei cheltuieli într-un ecosistem fără mecanisme de supraveghere este și mai dificilă. Participanții cu putere egală trebuie să se coordoneze între ei în conformitate cu același set de reguli pentru a preveni frauda și pentru a stimula toți utilizatorii să acționeze cu integritate.

Cea mai mare inovație prezentată în cartea albă Bitcoin este soluția la problema dublei cheltuieli. Satoshi Nakamoto a propus o structură de date fără precedent, cunoscută acum sub numele de blockchain.

Blockchain este de fapt doar o bază de date cu unele proprietăți unice. Participanții la rețea (numite noduri) rulează software specializat care le permite să-și sincronizeze propriile copii ale bazei de date între ele. În acest fel, întreaga rețea poate audita istoricul tranzacțiilor care datează de la blocul geneză. Deoarece blockchain-ul este vizibil public, va fi mai ușor să detectați și să preveniți frauda, ​​cum ar fi identificarea tentativelor de tranzacții cu cheltuieli duble.

Când un utilizator publică o tranzacție, aceasta nu este adăugată imediat în blockchain și trebuie mai întâi extrasă înainte ca blocul să poată fi încărcat. Prin urmare, doar atunci când blocul este introdus în lanț, beneficiarul poate confirma că tranzacția este valabilă. În caz contrar, destinatarul va risca să piardă fonduri dacă expeditorul plătește același simbol în altă parte.​

Odată ce o tranzacție este confirmată, proprietatea token-ului este atribuită noului utilizator și verificată de întreaga rețea, astfel încât tokenurile nu mai pot fi cheltuite dublu. Din acest motiv, mulți oameni recomandă să așteptați mai multe confirmări înainte de a accepta o plată validă. Fiecare bloc ulterior crește semnificativ cantitatea de muncă necesară pentru a modifica sau rescrie lanțul (cum ar fi în cazul unui atac de 51%).

Să revenim la situația restaurantului. Dan s-a întors la restaurant și de data aceasta a observat autocolantul de pe fereastră care scria „Acest magazin acceptă plata Bitcoin”. Nu și-a putut uita ultima masă și a comandat din nou aceeași mâncare, costând 0,005 Bitcoin.​

Erin îi arată lui Dan adresa publică, care este adresa de transfer. Anunțul lui Dan despre tranzacție este în esență un mesaj semnat care anunță că cei 0,005 Bitcoin pe care îi deține sunt acum deținute de Erin. Fără a intra în prea multe detalii, oricine vede tranzacția semnată de Dan poate confirma că jetoanele sunt într-adevăr ale lui și, prin urmare, Dan are autoritatea de a le trimite.

Cu toate acestea, așa cum am menționat anterior, tranzacția este valabilă numai după ce a fost încărcată în bloc și confirmată. Primirea unei tranzacții neconfirmate este ca și cum ați primi 40 USD în eCash, dacă nu este încasat imediat prin bancă, expeditorul poate cheltui fondurile în altă parte. Prin urmare, Erin ar trebui să aștepte cel puțin 6 confirmări de bloc (aproximativ o oră) înainte de a accepta plata de la Dan.


Problema dublei cheltuieli a Bitcoin

Bitcoin este proiectat cu atenție pentru a preveni atacurile cu cheltuieli duble, cel puțin dacă protocolul este utilizat conform intenției. Adică, dacă cineva așteaptă o tranzacție pentru a primi confirmarea blocării, expeditorul nu va putea inversa cu ușurință tranzacția. Numai prin „inversarea” blockchain-ului poate fi inversată o tranzacție, ceea ce necesită cantități enorme de putere de hashing.

Cu toate acestea, unele atacuri cu cheltuieli duble vizează în mod specific utilizatorii care acceptă tranzacții neconfirmate. De exemplu, cu achiziții mici, comercianții nu doresc să aștepte până când tranzacția este inclusă în bloc. Este posibil ca restaurantele fast-food aglomerate să nu poată aștepta atât timp cât rețeaua durează pentru a procesa fiecare tranzacție. Prin urmare, dacă un comerciant are plățile „instantanee” activate, acesta se poate confrunta cu o problemă de dublare a cheltuielilor. Cineva poate comanda un burger și poate plăti pentru el, apoi trimite imediat aceleași fonduri înapoi la propria adresă. Atâta timp cât taxa de gestionare a tranzacției ulterioare este mai mare, aceasta poate fi confirmată mai întâi, ceea ce face ca tranzacția anterioară să devină invalidă.

În prezent, există trei atacuri comune cu cheltuieli duble:

  • 51% atac: o singură entitate sau organizație reușește să controleze mai mult de 50% din rata hash pentru a șterge sau modifica ordinea tranzacțiilor. Este extrem de puțin probabil ca acest tip de atac să apară în rețeaua Bitcoin, dar a avut loc și pe alte rețele.

  • Atacul cursei: Două tranzacții conflictuale sunt publicate succesiv folosind aceleași fonduri, dar este confirmată o singură tranzacție. Scopul atacatorului este de a invalida o altă plată prin validarea unei tranzacții în favoarea sa. De exemplu, trimiterea de fonduri la o adresă pe care o controlează. Un atac de rasă implică de obicei ca destinatarul să accepte o tranzacție neconfirmată ca plată.

  • Atacuri Finney: un atacator preminează o tranzacție și o pune într-un bloc, dar nu o publică imediat în rețea. În schimb, a plătit același simbol într-o altă tranzacție înainte de a publica un bloc minat anterior, invalidând astfel plata. Condițiile necesare pentru un atac Fenney sunt ca evenimentele să aibă loc într-o anumită ordine, iar succesul depinde și de faptul dacă destinatarul acceptă tranzacția neconfirmată.

După cum putem vedea, comercianții își pot reduce foarte mult riscul și pot evita să cadă victima cheltuielilor duble, pur și simplu așteptând cu răbdare confirmările de blocare.


Rezuma

Utilizatorii pot folosi atacuri cu cheltuieli duble pentru a modifica sistemele electronice de numerar peer-to-peer și pot folosi aceleași fonduri de mai multe ori pentru a căuta câștiguri nedrepte. În trecut, pentru că această problemă trebuia rezolvată bine, dezvoltarea acestui domeniu a stagnat.

Din fericire, utilizarea semnăturilor oarbe a devenit o soluție atrăgătoare în soluțiile financiare centralizate. Ulterior, dezvoltarea mecanismului proof-of-work și a tehnologiei blockchain a dat naștere Bitcoin, o formă puternică de monedă descentralizată, care, la rândul său, a inspirat mii de proiecte de criptomonede.