1 mai 2021 15:29

Cum previne un lanț de blocuri cheltuirea dublă a Bitcoins?

Una dintre principalele preocupări ale oricărui dezvoltator de criptomonede este problema cheltuielilor duble. Aceasta se referă la incidența unei persoane care cheltuie un echilibru al acelei criptomonede de mai multe ori, creând în mod efectiv o diferență între înregistrarea cheltuielilor și suma acelei criptomonede disponibile, precum și modul în care este distribuită.

Problema dublei cheltuieli este o problemă pe care numerarul nu o are; dacă plătiți pentru un sandviș cu o factură de 10 USD, întorcând această factură către producătorul sandvișului, nu puteți să vă întoarceți și să cheltuiți aceiași 10 USD în altă parte. Cu toate acestea, o tranzacție care utilizează o monedă digitală precum bitcoin, are loc în totalitate digital. Aceasta înseamnă că este posibil să copiați detaliile tranzacției și să le retransmiteți astfel încât același BTC să poată fi cheltuit de mai multe ori de către un singur proprietar. Mai jos, vom examina modul în care dezvoltatorii de criptomonede s-au asigurat că nu se pot întâmpla cheltuieli duble.

Chei de luat masa

  • O problemă tehnică care apare odată cu noțiunea de monedă digitală este capacitatea pentru cineva de a duplica banii digitali și de a-i cheltui simultan în două sau mai multe locuri.
  • Această problemă „dublă cheltuială” este prevenită în criptomonedele bazate pe blockchain, cum ar fi Bitcoin, utilizând un mecanism de consens cunoscut sub numele de dovadă a muncii (PoW).
  • Acest PoW este realizat de o rețea descentralizată de „mineri” care nu numai că asigură fidelitatea tranzacțiilor anterioare pe registrul blockchain, ci și detectează și previn cheltuielile duble.

Înțelegerea Blockchain-ului

Blockchain-ul care suportă o monedă digitală precum bitcoin nu este capabil să prevină cheltuielile duble pe cont propriu. Mai degrabă, toate tranzacțiile care implică criptomoneda relevantă sunt înregistrate în blockchain, unde sunt verificate separat și protejate printr-un proces de confirmare. În cazul bitcoin și al multor alte criptomonede, tranzacțiile care au fost confirmate în acest mod devin ireversibile; sunt postate public și menținute în perpetuitate.

Bitcoin a fost prima monedă digitală majoră care a rezolvat problema cheltuielilor duble. A făcut acest lucru prin implementarea acestui mecanism de confirmare și menținerea unui sistem de registru universal comun. În acest fel, blockchain-ul bitcoin păstrează înregistrări ale tranzacțiilor marcate cu timp care revin la fondarea criptomonedei în 2009.

În termeni Bitcoin, un „ bloc ” este un fișier de date înregistrate permanent. Toate tranzacțiile recente sunt scrise în blocuri, la fel ca un registru de tranzacții de acțiuni pe o bursă. Informațiile din blocuri sunt adăugate în registru la fiecare câteva minute; toate nodurile din rețea păstrează o copie a registrului blockchain. Utilizatorii pot naviga în blockchain pentru bitcoin și pot revizui tranzacțiile numai în termeni de cantitate. Detaliile despre identitatea cumpărătorului și a vânzătorului în orice tranzacție sunt protejate prin criptare la nivel înalt, care protejează, de asemenea, registrul împotriva manipulării de către surse externe. Când registrul blockchain este actualizat, la fel și toate portofelele bitcoin.

Tratarea cheltuielilor duble

Imaginați-vă că aveți 1 BTC și încercați să-l cheltuiți de două ori în două tranzacții separate. Puteți încerca să faceți acest lucru trimițând același BTC la două adrese de portofel bitcoin separate. Ambele tranzacții vor intra apoi în grupul de tranzacții neconfirmate. Prima tranzacție ar fi aprobată prin intermediul mecanismului de confirmare și apoi verificată în blocul ulterior. Cu toate acestea, a doua tranzacție ar fi recunoscută ca nevalidă prin procesul de confirmare și nu ar fi verificată. Dacă ambele tranzacții sunt extrase din pool pentru confirmare simultan, tranzacția cu cel mai mare număr de confirmări va fi inclusă în blockchain, în timp ce cealaltă va fi aruncată.

Deși acest lucru se ocupă în mod eficient de problema cheltuielilor duble, nu este lipsit de problemele sale. De exemplu, destinatarul celei de-a doua tranzacții (eșuate) nu va participa la tranzacția în sine eșuată și totuși acea persoană nu va primi bitcoinul pe care îl anticipase. Mulți comercianți așteaptă cel puțin 6 confirmări ale unei tranzacții (ceea ce înseamnă că șase blocuri ulterioare de tranzacții au fost adăugate la blockchain după tranzacția în cauză). În acest moment, comerciantul poate presupune în siguranță că tranzacția este valabilă.

În acest sistem rămân alte vulnerabilități care ar putea permite atacuri cu cheltuieli duble. De exemplu, dacă un atacator este cumva capabil să controleze cel puțin 51% din puterea rețelei, poate să cheltuiască dublu. Dacă un atacator ar putea cumva să obțină controlul asupra acestei puteri de calcul, ar putea să inverseze tranzacțiile și să creeze un blockchain privat separat. Cu toate acestea, creșterea rapidă a bitcoinului a asigurat practic că acest tip de atac este imposibil.

S-a explicat dovada muncii și „mineritul”

Acum să devenim puțin mai tehnici. Modul în care utilizatorii detectează manipularea, cum ar fi o încercare de a cheltui dublu în practică, este prin  hashuri, șiruri lungi de numere care servesc drept dovadă a muncii (PoW). Introduceți un set dat de date printr-o funcție hash (bitcoin folosește SHA-256) și va genera doar un hash. Datorită „efectului avalanșei”, totuși, chiar și o mică modificare a oricărei porțiuni din datele originale va avea ca rezultat un hash total de nerecunoscut. Oricare ar fi dimensiunea setului de date original, hash-ul generat de o funcție dată va avea aceeași lungime. Hash-ul este o funcție unidirecțională: nu poate fi utilizat pentru a obține datele originale, doar pentru a verifica dacă datele care au generat hash-ul se potrivesc cu datele originale.

Generarea oricărui hash pentru un set de tranzacții bitcoin ar fi banală pentru un computer modern, astfel încât, pentru a transforma procesul în „lucru”, rețeaua bitcoin stabilește un anumit nivel de „dificultate”. Această setare este ajustată astfel încât un bloc nou să fie „ minat ” – adăugat la blockchain prin generarea unui hash valid – aproximativ la fiecare 10 minute. Stabilirea dificultății se realizează prin stabilirea unei  „ținte” pentru hash : cu cât ținta este mai mică, cu atât este mai mic setul de hash-uri valide și cu atât este mai greu să generezi una. În practică, aceasta înseamnă un hash care începe cu un șir lung de zerouri: hash-ul pentru blocul # 429818, de exemplu, este 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Blocul respectiv conține 2.012 tranzacții care implică puțin peste 1.000 de bitcoin, precum și antetul blocului anterior. Dacă un utilizator ar schimba o sumă de tranzacție cu 0,0001 bitcoin, hash-ul rezultat ar fi de nerecunoscut, iar rețeaua ar respinge frauda.

Deoarece un anumit set de date poate genera doar un hash, cum se asigură minerii că generează un hash sub țintă? Acestea modifică intrarea prin adăugarea unui număr întreg, numit  nonce  („număr folosit o dată”). Odată găsit un hash valid, acesta este transmis în rețea, iar blocul este adăugat la blockchain.

Mineria este un proces competitiv, dar este mai mult o loterie decât o cursă. În medie, cineva va genera dovezi acceptabile ale muncii la fiecare zece minute, dar cine va fi este presupunerea oricui. Minerii se reunesc pentru a-și spori șansele de blocuri miniere, ceea ce generează comisioane de tranzacție și, pentru o perioadă limitată de timp, o recompensă a bitcoinelor nou create.

Dovada muncii face extrem de dificilă modificarea oricărui aspect al blockchain-ului, deoarece o astfel de modificare ar necesita reexaminarea tuturor blocurilor ulterioare. De asemenea, îngreunează pentru un utilizator sau un grup de utilizatori monopolizarea puterii de calcul a rețelei, deoarece mașinile și puterea necesare pentru a finaliza funcțiile hash sunt scumpe.