Dovada Muncii
Dovada muncii ( în engleză proof-of-work, POW, PoW ) este principiul protejării sistemelor de rețea împotriva abuzului de servicii (de exemplu, de atacuri DoS sau organizarea de corespondență spam ), pe baza necesității de a efectua niște lucrări destul de lungi pe partea client (găsirea soluției problemei), rezultatul căruia este ușor și rapid verificat pe partea serverului (vezi funcția unidirecțională ). Caracteristica principală a calculelor utilizate este asimetria costurilor de timp - acestea sunt semnificative pentru găsirea unei soluții și foarte mici pentru verificare [1] . Astfel de scheme sunt cunoscute și sub numele de puzzle client ( funcția de puzzle client ),puzzle de calcul sau funcția de stabilire a prețului procesorului .
Această metodă de protecție nu trebuie confundată cu captchas , care oferă sarcini care sunt ușoare pentru o persoană, dar dificile sau complet de nerezolvat pentru un computer. Dovada muncii se concentrează inițial pe găsirea unei soluții folosind un algoritm cunoscut anterior într-un timp finit, dar este necesar un număr relativ mic de operații pentru a verifica soluția rezultată [1] . Tehnologiile POW au primit cea mai mare distribuție și dezvoltare în sistemele de criptomonede.
Istorie
Cerința pentru dovada muncii a fost prezentată pentru prima dată în articolul „Prețul prin procesare sau combatere a mesajelor nedorite” [1] în 1993. Autorii au propus următoarea idee: pentru a accesa o resursă partajată, utilizatorul trebuie să calculeze o anumită funcție, care este foarte complexă și consumatoare de resurse, dar poate fi rezolvată într-un timp rezonabil. Calcularea unei funcții pe partea client ar trebui să fie mult mai dificilă decât verificarea rezultatului pe partea serverului. Una dintre cerințele obligatorii pentru o funcție este neamortizarea acesteia — dacă se găsesc mai multe soluții, timpul ar fi necesar proporțional cu numărul acestora. Potrivit autorilor, astfel de calcule suplimentare nu creează obstacole pentru trimiterea mai multor scrisori obișnuite de pe computerul unui utilizator obișnuit, dar necesitatea unor calcule constante face ca trimiterea de spam să consume foarte mult resurse. Potrivit estimărilor independente, astfel de sisteme conduc de fapt la o limitare semnificativă a numărului de scrisori care pot fi trimise pe zi de la un computer [2] .
În 1997, Adam Back a lansat proiectul Hashcash , dedicat protecției împotriva spamului. Sarcina a fost formulată după cum urmează: „Găsiți o valoare x astfel încât hash-ul SHA(x) să conțină N biți zero înainte.”
În 1999, apare termenul de dovadă a muncii – a fost folosit în articolul „Proofs of Work and Bread Pudding Protocols” (autori – Markus Jacobsson și Ari Jewels) din revista Communications and Multimedia Security [3] .
Pe 16 august 2004, Hal Finney , în scrisoarea sa către forumul cypherpunk , a propus folosirea dovezilor de lucru reutilizabile ( RPOW , RPoW ) pentru a organiza moneda electronică [4] .
Satoshi Nakamoto a propus în curând criptomoneda bitcoin , în care dovada de lucru este folosită pentru a complica foarte mult cheltuielile duble . S-a propus găsirea hash-ului unui bloc de informații folosind funcția SHA-256 cu selecția parametrilor, astfel încât rezultatul să aibă un număr dat de biți mari de zero. Ulterior, în alte criptomonede (de exemplu , Litecoin ), în loc de SHA-256, a început să fie folosit KDF , precum scrypt , bcrypt , PBKDF2 și altele [5] .
Exemple de funcții aplicabile
Lista celor mai frecvente funcții utilizate în sistemele de verificare a lucrului:
- Hashing cu inversare parțială . Cea mai cunoscută aplicație este sistemul Hashcash [6] , care folosește hashing cu inversare parțială atunci când este trimis prin e-mail. Pentru a calcula antetul unei litere, sunt necesare aproximativ 252 de calcule hash, care trebuie recalculate pentru fiecare literă nouă. În același timp, verificarea corectitudinii codului calculat este rapidă - se folosește un singur calcul SHA-1 cu o etichetă pre-preparată [7] [8] [9] .
- Funcții bazate pe arbori Merkle [10] . Cel mai faimos exemplu al acestei variante poate fi găsit în sistemul Bitcoin , unde hashingul pe mai multe niveluri este folosit ca dovadă de lucru - hash-ul blocului anterior devine un element al celui următor. Astfel, nu există nicio modalitate de a schimba un bloc fără modificarea hash-urilor din toate blocurile ulterioare. În același timp, verificarea integrității întregului lanț se limitează la un singur calcul al hashurilor blocului curent și al celui anterior. Un hash este recunoscut ca adevărat numai dacă valoarea oricărei caracteristici a sumei hash satisface criteriul selectat, de exemplu, în bitcoin - numărul de zerouri de început ale sumei hash este mai mare sau egal cu valoarea unui parametru special care determină dificultatea de exploatare necesară în momentul de față pentru menținerea aspectului de viteză planificată a blocurilor noi. Pentru a căuta o astfel de sumă hash, este necesar să o recalculați de mai multe ori cu enumerarea valorilor arbitrare ale parametrului nonce [11] .
- Reziduu patratic modulo un număr prim mare [12]
- Semnătură protocol Fiat - Shamira [12]
- Funcție bazată pe protocolul Diffie-Hellman [13]
- Funcție legată de memorie ( en: Funcție legată de memorie ) [14]
- Hașarea cucului [15]
Potențiale vulnerabilități și atacuri asupra sistemelor informaționale bazate pe POW
Experții continuă să dezbată dacă protecția POW este suficient de eficientă împotriva atacurilor DoS și a spam-ului [16] [17] .
Atacul 51%
Bitcoin , la fel ca multe alte criptomonede, poate fi supus unui „atac de 51%”: dacă un atacator controlează mai mult de jumătate din toată puterea de calcul a rețelei, atunci el are posibilitatea de a-și confirma doar propriile blocuri, ignorând în același timp altele. . Acest lucru nu numai că îi permite să primească toată criptomoneda emisă în același timp, dar și să blocheze toate tranzacțiile sau selectate, ceea ce poate duce la „dispariția” din conturile criptomonedei primite din acele tranzacții care nu vor fi incluse în noua versiune a blockchain-ului [11] .
Cheltuieli duble
Cheltuirea dublă (cheltuirea dublă) este transferul repetat al acelorași active. Acest atac este împărțit în mai multe subtipuri.
- Atac de cursă . _ _ Atacatorul efectuează tranzacția X, plătind achiziția de bunuri, în timp ce transferă simultan aceiași bani în celălalt cont al său cu tranzacția Y. Dacă vânzătorul nu a așteptat confirmarea tranzacției și a expediat bunurile, atunci și-a asumat un mare risc , deoarece există o șansă de 50% ca tranzacția Y să poată intra în lanțul adevărat, iar această probabilitate crește dacă atacatorul selectează intenționat nodurile de rețea pentru a efectua cutare sau cutare operațiune [18] .
- Atacul lui Finney este următorul: atacatorul încearcă să găsească un bloc care conține tranzacția sa Y. Totuși, odată ce blocul este găsit, atacatorul trimite tranzacția X, după care cumpără bunurile. Vânzătorul așteaptă confirmarea tranzacției X și expediază mărfurile. Dacă în acest moment apare un bloc cu tranzacția Y, atunci se creează o situație de furcă în care minerii trebuie să aleagă unul dintre cele două blocuri pentru a continua lanțul blockchain. Prin concentrarea unei cantități mari de resurse de calcul în mâinile unui atacator, acesta poate crește semnificativ probabilitatea de a alege un bloc cu operația Y. Astfel, o tranzacție confirmată nu este garantată a fi valabilă [19] .
Mineritul egoist
În minerit egoist, scopul atacatorului este să controleze rețeaua, în ciuda faptului că are resurse de calcul cu o capacitate totală mai mică de 50%. Acest lucru se realizează prin faptul că atacatorul susține că pool-ul său este mai profitabil pentru minerit decât alte pool-uri, ceea ce atrage mineri terți. Atacatorul publică blocuri în așa fel încât resursele de calcul ale altor mineri și pool-uri să fie irosite. Cursul aproximativ al algoritmului este următorul:
- Bazinul își extrage în secret lanțul privat de la toată lumea.
- Dacă piscina găsește un bloc nou pentru lanțul său privat, atunci:
- Dacă lanțul original este bifurcat, atunci atacatorul își publică blocul, astfel lanțul său devine mai lung și devine adevărat, iar lanțul de mineri cinstiți este aruncat.
- Dacă nu există încă nicio furcă, atunci bazinul continuă să-și mine în secret lanțul privat, crescându-și avansul.
- Dacă lanțul public găsește un bloc pentru lanțul public, atunci:
- Dacă lanțul public este înaintea celui secret, atunci grupul atacatorului își renunță blocurile nepublicate și începe să exploateze din noul bloc public.
- Dacă lanțurile sunt egale, atunci grupul atacatorului își publică toate blocurile, intrând astfel în golul din lanțul său.
- Dacă lanțul public se află la câteva (N) blocuri în spatele lanțului privat, atunci grupul publică încă un bloc (N+1), care izolează un nou bloc cinstit.
În aproape orice rezultat, minerii cinstiți sunt perdanți, forțându-i să se alăture grupului criminal [20] .
Critica sistemelor informatice bazate pe POW
Oponenții abordării POW, pe lângă o serie de potențiale probleme de securitate , evidențiază următoarele dezavantaje:
- Probabilitatea de a crea cu succes următorul bloc de către miner este direct proporțională cu puterea de calcul pe care o are, ceea ce duce la o creștere constantă a cantității și calității echipamentelor pentru fiecare membru al rețelei. Astfel, mineritul folosind algoritmi POW necesită o cantitate extrem de mare de energie electrică. Prin urmare, abordarea POW nu este cea mai bună soluție în ceea ce privește eficiența energetică [21] [22] .
- Rezultatele calculării funcțiilor hash nu sunt necesare nicăieri decât în rețea însăși. De la apariția tehnologiei, comunitatea a încercat să găsească o modalitate de a direcționa toate resursele de calcul ale rețelei pentru a rezolva o problemă matematică sau industrială utilă, dar aceasta nu a fost implementată în forma sa pură [23] .
Încercările de a scăpa de neajunsurile POW au dus la apariția POS ( în engleză proof-of-stake , proof of stake) și a numeroase opțiuni hibride.
Exemple de tehnologii hibride
Exemple de scheme hibride care combină ideile de POS și POW pot fi găsite în multe criptomonede. În ele, blockchain-ul constă din blocuri de ambele tipuri, ceea ce face ca rescrierea istoriei tranzacțiilor să fie o sarcină dificilă, deoarece blocurile POW servesc drept puncte de control, având în vedere complexitatea totală a muncii din întregul lanț. De obicei, în astfel de algoritmi, blocurile POW servesc ca indicatori ai muncii reale, ceea ce oferă o garanție suplimentară de fiabilitate pentru comercianți atunci când lucrează cu tranzacții. Blocurile POW pot fi folosite pentru a emite valută, iar blocurile POS pot fi considerate ca venituri potențiale din depozit [24] .
Dovada activității
Un prototip de algoritm care nu a fost încă implementat, care constă în faptul că deținătorii intră în procesul general numai după ce au fost efectuate unele lucrări de către participanții la POW, ceea ce reduce șansele unui atac cu 51%, deoarece proprietarul majoritar nu va putea pentru a controla exclusiv crearea de noi blocuri [25] .
Cum funcționează algoritmul:
- Minerul POW caută un hash de dificultatea corespunzătoare.
- Hash-ul găsit este trimis în rețea, în timp ce nu este un bloc, ci doar primul pas, un fel de șablon necesar pentru crearea lui.
- Un hash format din 256 de biți pseudo-aleatorii este interpretat ca N numere, fiecăruia fiind atribuit câte un satoshi.
- Se stabilește o relație unu-la-unu între fiecare satoshi și cheia publică a proprietarului său actual.
- De îndată ce toți N proprietari își pun semnătura pe acest bloc, rezultatul este un bloc cu drepturi depline.
- Dacă unul dintre deținători nu este disponibil sau nu participă la minerit, atunci restul minerilor continuă să genereze șabloane cu diferite combinații de deținători candidați.
- La un moment dat, blocul necesar va fi semnat de numărul necesar de ori. Recompensa de bloc este distribuită între minerul POW și toți deținătorii N.
Dovada arsurii
Banii sunt trimiși la o adresă care este un hash al unui număr aleatoriu; este garantat că nu pot fi cheltuiți de la această adresă, deoarece probabilitatea de a ridica cheile de la acesta tinde spre zero. În schimb, minerul are o șansă permanentă de a găsi un bloc PoB și de a primi o recompensă pentru el. Mineritul în acest caz este aranjat în așa fel încât șansele de reușită să depindă de numărul de monede arse. Prin analogie, arderea este ca un depozit POS nerambursabil sau o investiție în hardware virtual pentru minerit POW. Din punct de vedere economic, acest algoritm este mai potrivit pentru etapele ulterioare ale dezvoltării criptomonedei, când cea mai mare parte a masei monetare a fost deja generată [26] .
Dovada capacității
Algoritmul de dovadă a capacității (sau dovada spațiului ) este următorul: pentru minerit, este necesar să se aloce o cantitate semnificativă de memorie pe computer, după care se creează un număr mare de blocuri mari de date din cheia publică și numere aleatorii prin hashing repetat . În fiecare bloc de date, obținem un index din ultimul antet, după care selectăm o mică bucată din bloc cu acest index, o bucată . Cu cât este alocată mai multă memorie, cu atât primim mai multe bucăți. Trebuie îndeplinită condiția ca hash-ul fragmentului și ultimul antet să fie mai mici decât ținta. Astfel, fiecare megaoctet de memorie este folosit ca un analog al unui bilet de loterie și crește șansa de succes în minerit [27] .
Dovada cercetării
Algoritmul proof of research a fost dezvoltat de proiectul GridCoin cu scopul de a direcționa puterea de calcul a rețelelor PoW pentru a rezolva probleme științifice pe platforma BOINC . Proof of research folosește simultan dovada muncii pentru a recompensa participanții pentru calculele finalizate și dovada mizei pentru a încuraja participarea pe termen lung la proiect [28] .
Ineficiență energetică
Sistemele bazate pe POW sunt extrem de intensive în resurse.
- În 2013, puterea totală de calcul cheltuită pe POW în rețeaua Bitcoin a depășit de 256 de ori primele 500 de supercomputere cele mai puternice din lume în acel an combinate [29] .
- În 2017, a fost nevoie de o medie de 163 kWh de energie pentru a finaliza o tranzacție în sistemul Bitcoin . Cu această cantitate de energie, este posibil să se satisfacă pe deplin nevoile unei familii de trei persoane care trăiesc într-o casă mică cu un etaj timp de cinci zile și jumătate. Exploatarea criptomonedelor în rețelele Bitcoin și Ethereum a consumat în total mai multă energie decât a consumat întreaga populație a Siriei [21] [22] .
Vezi și
Note
- ↑ 1 2 3 Prețuri prin procesarea sau combaterea corespondenței nedorite Arhivat 12 decembrie 2017 la Wayback Machine (1993 )
- ↑ „Proof-of-Work” Proves Not to Work Arhivat 20 ianuarie 2017 la Wayback Machine , 2004 „Dacă încercăm să facem neeconomic să trimitem spam, atunci trebuie să limităm expeditorii la 1.750 de mesaje pe zi”
- ↑ Proofs of Work și Bread Pudding Protocols Arhivat 26 iulie 2017 la Wayback Machine (1999 )
- ↑ RPOW - Dovezi de lucru reutilizabile Arhivat 5 octombrie 2017 la Wayback Machine (2004 )
- ↑ Dovada de funcționare în criptomonede: scurtă istorie. Partea 1 Arhivat pe 5 septembrie 2017 la Wayback Machine (2015 )
- ↑ Hashcash - A Denial of Service Counter-Measure (2002 )
- ↑ Înapoi, Adam HashCash . Preluat la 25 iunie 2022. Arhivat din original la 29 septembrie 2017. (nedefinit) Sistem popular de dovadă a muncii. Prima anunț a fost în martie 1997.
- ↑ Gabber, Eran; Jakobsson, Markus; Matias, Yossi; Mayer, Alain J. Curbing junk e-mail prin clasificare securizată (neopr.) // Financial Cryptography. - 1998. - S. 198-213 .
- ↑ Wang, Xiao-Feng; Reiter, Michael. Apărarea împotriva atacurilor de denial-of-service cu licitații puzzle // Simpozionul IEEE privind securitatea și confidențialitatea '03 : jurnal. - 2003. - Mai.
- ↑ Coelho, Fabien Un (aproape) efort constant de verificare a unui protocol de dovezi de lucru bazat pe arbori Merkle . Arhiva Criptologie ePrint, Raport . Preluat la 29 octombrie 2017. Arhivat din original la 26 august 2016. (nedefinit)
- ↑ 1 2 Bitcoin: A Peer-to-Peer Electronic Cash System Arhivat 20 martie 2014 la Wayback Machine
- ↑ 1 2 Dwork, Cynthia; Naor, Moni Prețuri prin procesare, sau, combaterea mesajelor nedorite, progrese în criptologie // CRYPTO'92: Note de curs în informatică nr. 740: jurnal. - Springer, 1993. - P. 139-147 .
- ↑ Waters, Brent; Juels, Ari; Halderman, John A.; Felten, Edward W.Noi tehnici de externalizare a puzzle-ului clientului pentru rezistența la DoS (neopr.) // A 11-a Conferință ACM privind securitatea computerelor și comunicațiilor. — 2004.
- ↑ Dwork, Cynthia; Goldberg, Andrew; Naor, MoniDespre funcțiile legate de memorie pentru combaterea spamului (neopr.) // Advances in Cryptology: CRYPTO 2003. - Springer, 2003. - Vol. 2729 . - S. 426-444 .
- ↑ Tromp, John. Ciclul Cucului; o dovadă de lucru teoretică cu grafice legate de memorie // Criptografie financiară și securitate a datelor: BITCOIN 2015 : jurnal. - Springer, 2015. - P. 49-62 .
- ↑ Laurie, Ben; Clayton, Richard. Dovada muncii dovedește că nu funcționează (neopr.) // WEIS 04. - 2004. - mai.
- ↑ Liu, Debin; Camp, L. Jean. Dovada muncii poate funcționa (neopr.) // Al cincilea atelier privind economia securității informațiilor. - 2006. - Iunie.
- ↑ Attacks in the World of Cryptocurrencies Arhivat 19 septembrie 2016 la Wayback Machine
- ↑ Analiza dublei cheltuieli bazate pe hashrate Arhivat 4 septembrie 2017 la Wayback Machine (2012 )
- ↑ Attacks in the World of Cryptocurrencies Arhivat 19 septembrie 2016 la Wayback Machine (2015 )
- ↑ 1 2 Bitcoin Energy Consumption Index Arhivat 25 ianuarie 2022 la Wayback Machine
- ↑ 1 2 Ethereum Energy Consumption Index (beta) Arhivat 11 octombrie 2017 la Wayback Machine
- ↑ Dovada de funcționare în criptomonede: scurtă istorie. Partea 2 Arhivat pe 14 martie 2016 la Wayback Machine
- ↑ Alternative for Proof of Work, Partea 2 Arhivat 4 martie 2016 la Wayback Machine (2015 )
- ↑ Dovada activității: Extinderea dovezii de lucru a Bitcoin prin Proof of Stake Arhivată 17 octombrie 2017 la Wayback Machine
- ↑ A Peer-to-Peer Crypto-Currency with Proof-of-Burn „Mining without Powerful Hardware” Arhivat 10 octombrie 2017 la Wayback Machine (2014 )
- ↑ Proofs of Space: When Space is of the Essence Arhivat 5 noiembrie 2017 la Wayback Machine
- ↑ Dovada de cercetare - Gridcoin . wiki.gridcoin.us. Preluat la 4 septembrie 2018. Arhivat din original la 4 septembrie 2018.
- ↑ Puterea globală de calcul Bitcoin acum de 256 de ori mai rapidă decât primele 500 de supercomputere, combinate! Arhivat 8 iunie 2017 la Wayback Machine (2013 )