Ce este Blockchain ?

in #not7 years ago (edited)

Sunt sigur că majoritatea ați auzit de Bitcoin şi Blockchain, însă mulți nu știu ce este defapt acest Blockchain(bloc de blocuri). Am încercat să nu folosesc cuvinte tehnice și să mențin totul cât mai simplu pentru a fi pe înțelesul tuturor. 

În loc să definim mai întâi Blockchain-ul, haideți să înțelegem problema pe care o rezolvă.  

Imaginează-ți că Andrei este cel mai bun prieten al tău. El este plecat în străinătate într-o vacanță, iar într-o zi te sună și-ți spune: "Salut, am nevoie de niște bani, am cam rămas fără. Mă poți ajuta?", iar tu îi răspunzi: "Da, cum să nu, o să îți trimit imediat". 

Există mai multe posibilități de a trimite banii, hai să ne limităm totuși doar la bancă, pentru a menține lucrurile cât mai simple, oricum ideea generală e aceeași indiferent de metoda pe care ai alege-o (Western Union, MoneyGram, Paypal, Skrill etc.). Să zicem că ai inițiat un transfer din contul tău bancar în contul lui Andrei în jurul sumei de 5000 de lei. Managerul de cont, care se va ocupa de acest transfer, în primul rând va verifica dacă ai soldul necesar pentru a realiza această tranzacție. Pentru că ești un om înstărit ai destui bani în cont, iar managerul de cont va trece acum în registrul băncii această tranzacție, ceva de genul că în imaginea de mai jos:   

 După ce ai inițiat transferul îl poți sună înapoi pe prietenul tău să-i spui că banii sunt pe drum. 

Ce s-a întâmplat? Tu și Andrei a trebuit să aveți încredere într-un intermediar și anume banca pentru a vă gestiona banii. Nu există o mișcare de facturi fizice pentru a transfera banii. Tot ce era necesar era o intrare în registru. Sau, mai precis, o intrare într-un registru pe care nici tu, nici Andrei nu îl controlezi sau deții.   

Asta este și problema sistemului actual. Pentru a stabili încrederea între noi, depindem de terțe părți. 

De ani de zile, am depins de acești intermediari în care a trebuit să avem încredere. S-ar putea să te întrebi, care este problema în a depinde de acești intermediari? Gândiți-vă ce s-ar întâmplă dacă acel registru în care a fost înregistrată tranzacția ar arde într-un incendiu. Dar dacă, din greșeală, managerul de cont scrie în registru 7000 lei ca suma de transfer în loc de 5000 lei? Dar dacă a făcut-o intenționat?  

Ar putea exista un sistem în care să putem transfera bani fără a avea nevoie de banca sau alt intermediar?  

Pentru a răspunde la această întrebare, va trebui să analizăm mai mult și să ne punem o întrebare mai bună (la urma urmei, numai întrebările bune conduc la răspunsuri mai bune). 

Gândiți-vă pentru o secundă, ce înseamnă transferarea mijloacelor bănești? Doar o intrare în registru. O întrebare mai bună ar fi atunci :   

  Există o modalitate de a menține registrul între noi în locul altcuiva care o face pentru noi ?  

Acum, aceasta este o întrebare care merită explorată. Iar răspunsul este ceea ce ați ghicit deja, Blockchain. Este o metodă de menținere a acestui registru în rândul nostru în loc de a depinde de altcineva să o facă pentru noi.  

Ești încă cu mine? Bun. Deoarece acum, când au apărut câteva întrebări în mintea dvs., vom afla cum funcționează acest registru distribuit.  

             Bun, dar cum funcționează? 

 

Cerința acestei metode este că trebuie să existe suficienți oameni care ar dori să nu depindă de un terț. Numai atunci acest grup poate menține registrul pe cont propriu.  

Câți oameni sunt suficienți? Cel puțin trei. Pentru exemplul nostru, vom presupune că zece persoane vor să renunțe la bănci sau la orice altă terță parte. În urma înțelegerii reciproce, ei au detaliile conturilor celorlalți(adresa,sold, etc.), fără să știe însă identitatea lor.  

             1. Un dosar gol

Toată lumea va avea un dosar gol pentru a începe. Pe măsură ce vom progresa, toate aceste zece persoane vor continua să adauge pagini la dosarele lor goale. Această colecție de pagini va forma registrul care urmărește tranzacțiile.  

             2. Când va avea loc o tranzacție

Toată lumea din rețea se află cu o pagină necompletată și cu un stilou în mâna. Toată lumea este gata să scrie orice tranzacție care are loc în cadrul sistemului. 

Acum, să presupunem că Silvia dorește să trimită 40 de lei lui George. 

Pentru a face tranzacția, Silvia le spune tuturor: "Vreau să-i transfer 40 de lei lui George. Deci, toată lumea, vă rog să notați acest lucru în paginile dvs."

Toată lumea verifică dacă Silvia are o balanță suficientă pentru a transfera 40 de lei lui George. Dacă are o balanță suficientă, toată lumea face o notă despre tranzacție pe pagina goală.  

Tranzacția este apoi considerată a fi completă.  

              3.  Tranzacțiile continuă să se întâmple 

Pe măsură ce trece timpul, mai mulți oameni din rețea simt nevoia de a transfera bani altora. Ori de câte ori doresc să facă o tranzacție, o anunță tuturor. De îndată ce o persoană ascultă anunțul, scrie tranzacția pe pagina sa.

Acest exercițiu continuă până când toată lumea va umple pagina curenta. Presupunând că o pagină are spațiu suficient pentru a înregistra zece tranzacții, de îndată ce se va efectua a zecea tranzacție, toată lumea va avea pagina plină.  

Este timpul să puneți pagina într-un dosar și să scoateți o pagină nouă, apoi să repetați procesul de la pasul 2 de mai sus. 

               4. Plasarea paginii într-un dosar

Înainte de a pune pagina în dosar, trebuie să o sigilăm cu o cheie unică pe care toți cei din rețea o acceptă. Prin sigilarea ei, ne vom asigura că nimeni nu poate face schimbări din momentul în care copiile sale au fost plasate în dosarele tuturor, nu azi, nu mâine și nici măcar după un an. Odată ajunsă în dosar, aceasta va rămâne mereu în dosar sigilată. În plus, dacă toată lumea are încredere în sigiliu, toată lumea are încredere în conținutul paginii. Această sigilare a paginii este esența acestei metode.  

Defapt acest sigiliu în lumea cripto-monedelor se numește "minare", însa pentru a simplifica lucrurile am ales să îi zicem sigiliu.  

Anterior, intermediarul ne-a dat încrederea că orice lucru scris în registru nu va fi niciodată modificat. Într-un sistem descentralizat ca al nostru, acest sigiliu va oferi încredere în schimb.  

             Interesant! Cum sigilăm pagina atunci?  


Înainte de a afla cum putem sigila pagina, va trebui să știm cum funcționează sigiliul în general. Și ca o condiție prealabilă pentru aceasta este învățarea despre ceva ce mie îmi place să numesc mașina magică

          Mașina magică

Imaginați-vă o mașină înconjurată de ziduri groase. Dacă trimiteți din stânga o cutie cu ceva înăuntrul ei, va scoate afară o cutie care conține altceva în partea dreaptă. 

Această mașină este numită defapt Funcție Hash, dar pentru a nu fi prea tehnici astăzi îi vom spune mașina magică.  

Să presupunem că trimiți din stânga numărul 4, descoperim astfel că a scos înapoi următorul cuvânt din dreapta: "dcbea".

Cum a convertit mașina numărul 4 la acest cuvânt? Nimeni nu știe. Mai mult decât atât, este un proces ireversibil. Având în vedere cuvântul "dcbea", este imposibil să se spună ce a fost introdus în mașină din partea stângă. Dar de fiecare dată când ați alimentat numărul 4 mașinii, ea va emite întotdeauna același cuvânt, "dcbea".  

Să încercăm să trimitem un număr diferit. Ce ziceți de 24?  

Avem "94c8e" de data asta. Interesant! Deci, cuvintele pot conține și cifre.  

Ce ziceți dacă v-aș întreba acum următorul lucru:  

Puteți să-mi spuneți ce ar trebui să trimit din partea stângă a mașinii astfel încât să primesc un cuvânt care să înceapă cu trei zerouri din partea dreaptă a acesteia? De exemplu, 000ab sau 00098 sau 000fa sau orice altceva?

Gândiți-vă bine la aceasta întrebare pentru câteva momente.

V-am spus că mașina are o proprietate în așa fel încât nu putem calcula ce trebuie să trimitem din partea stângă pentru a avea un rezultat dorit de noi în partea dreaptă. Așadar cum putem răspunde la întrebarea de mai sus ?

Mă gândesc la o metodă. De ce să nu încercăm fiecare număr din univers unul câte unul până când vom primi un cuvânt care să înceapă cu trei zerouri?

Dacă suntem optimiști, după câteva mii de încercări vom găsi un număr care va da rezultatul necesar în dreapta. 

A fost extrem de dificil să ajungem totuși la un rezultat. Dar, în același timp, va fi întotdeauna incredibil de ușor să verificați dacă intrarea prevăzută oferă randamentul necesar. Țineți minte că mașina va emite același cuvânt pentru același număr de fiecare dată.  

Cât de greu credeți că este răspunsul dacă vă dau un număr, sa spunem 72533, și vă întreb, acest număr, când este introdus în mașină, dă un cuvânt care începe cu trei zerouri ?

Tot ce trebuie să faceți este să introduceți numărul în mașină și să vedeți ce ați obținut în partea dreaptă a acesteia. Asta e tot.  

Cea mai importantă proprietate a acestor mașini este aceea că având o ieșire, este extrem de dificil să calculați intrarea, dar având în vedere intrarea și ieșirea, este destul de ușor să verificați dacă intrarea conduce la ieșire.

                 Cum să folosiți aceste mașini pentru a sigila o pagină?


Ca întotdeauna, vom începe cu o situație fictivă.  

Imaginează-ți că îți dau două cutii. Prima cutie conține numărul 20893. Atunci te întreb, poți să-mi zici un număr care, atunci când este adăugat la numărul primei cutii și introdus în mașina, ne va da un cuvânt care începe cu trei zerouri?

Aceasta este o situație similară cu cea văzută anterior și am aflat că singura modalitate de a calcula un astfel de număr este încercarea fiecărui număr disponibil în întregul univers.  

După câteva mii de încercări, vom ajunge la un număr, să zicem 21191, care, atunci când este adăugat la 20893 (și anume 21191 + 20893 = 42084) și introdus în mașină, va da un cuvânt care satisface cerințele noastre. 

Într-un astfel de caz, acest număr 21191 devine sigiliu pentru numărul 20893. Să presupunem că există o pagină care conține numărul 20893 scris pe ea. Pentru a sigila acea pagină (astfel încât nimeni să nu poate schimba conținutul), vom pune o insignă cu eticheta "21191". De îndată ce numărul de sigilare (adică 21191) este blocat pe pagină, pagina este sigilată și nu se vor putea aduce modificări ulterior.  

Numărul de sigilare este denumit Proof of work (Dovada muncii), ceea ce înseamnă că acest număr reprezintă dovada că au fost făcute eforturi pentru a se calcula. Noi o să îi spunem în continuarea tot număr de sigilare pentru a face totul cât mai simplu.  

Dacă cineva dorește să verifice dacă pagina a fost modificată, tot ce ar trebui să facă este să introducă conținutul paginii cu numărul de sigilare în mașina magică. Dacă mașina dă un cuvânt cu trei zerouri, conținutul a fost neatins. Dacă cuvântul care iese nu corespunde cerințelor noastre, putem arunca pagina, deoarece conținutul ei a fost compromis și nu ne este de folos.  

Vom folosi un mecanism de sigilare similar pentru a sigila toate paginile noastre și pentru a le aranja eventual în dosarele noastre.  

                În cele din urmă, sigilarea paginii...  


Pentru a ne sigila pagina care conține tranzacțiile rețelei, va trebui să găsim un număr care, atunci când este adăugat la lista de tranzacții și alocat mașinii, primim un cuvânt care începe cu trei zerouri de la dreapta.  

ATENȚIE: Folosesc fraza "cuvânt care începe cu trei zerouri" doar ca exemplu. Acesta ilustrează modul în care funcționează funcțiile Hashing. Provocările reale sunt mult mai complicate defapt.  

Odată ce acest număr este calculat și după ce ați pierdut timp și energie electrică cu mașina magică, pagina este sigilată. Dacă vreodată cineva încearcă să schimbe conținutul paginii, numărul de sigilare va permite oricui să verifice integritatea paginii.  

Acum, când știm despre sigilarea paginii, vom reveni la momentul când am terminat de scris cea de-a zecea tranzacție pe pagină și am rămas fără spațiu pentru a scrie mai multe.  

De îndată ce toată lumea a rămas fără spațiu în pagină pentru a scrie alte tranzacții, ei încep calcularea numărului de sigilare pentru pagină, astfel încât pagina să poată fi depusă în dosar. Toată lumea din rețea face calculul. Primul din rețea care află numărul de sigilare îi anunță pe ceilalți.  

Imediat după auzirea numărului de sigilare, toată lumea verifică dacă emite ieșirea necesară sau nu. Dacă numărul de sigilare este cel corespunzător, atunci fiecare își etichetează pagina cu acest număr și o depune în dosar.  

Dar dacă pentru cineva, să zicem Cosmin, numărul de sigilare care a fost anunțat nu dă randamentul necesar? Astfel de cazuri nu sunt neobișnuite. Motivele posibile ar putea fi:  

  • S-ar putea să fi auzit greșit tranzacțiile anunțate în rețea;
  • S-ar putea să fi scris greșit tranzacțiile anunțate în rețea;
  • Ar fi putut încerca să trișeze sau să fie necinstit atunci când a scris tranzacțiile, fie pentru a se favoriza pe sine sau pe altcineva din rețea.  

Indiferent care este motivul, Cosmin are doar o singură alegere, să renunțe la pagina sa și să ia o copie de la altcineva, astfel încât și el să o poată pune în dosar. În cazul în care nu își pune pagină corectă într-un dosar, nu poate continua să scrie alte tranzacții, interzicându-i-se să facă parte din rețea.  

Atunci de ce toți oamenii cheltuiesc resurse efectuând calculul știind că totuși cineva la urma urmei va anunța rezultatul pentru toți? De ce să nu să așteptați anunțul fără să vă mai chinuiți să calculați?  

Excelentă întrebare. Aici este punctul în care apar recompensele. Toți cei care fac parte din Blockchain sunt eligibili pentru recompense. Primul care calculează numărul de sigilare este răsplătit cu bani gratuiți pentru eforturile sale.  

Pur și simplu imaginați-vă, dacă George calculează numărul de sigilare al unei pagini el primește recompense sub formă de bani gratis, de exemplu 10 lei. Cu alte cuvinte, soldul contului lui George este incrementat cu 10 lei fără a scădea soldul contului altcuiva.  

Așa a apărut Bitcoin. A fost prima monedă care a fost tranzacționată pe un Blockchain. Și în schimb, pentru a menține eforturile în rețea, oamenii au fost premiați cu Bitcoin.  

Iar odată ce toată lumea își plasează pagina în dosarele lor, vor scoate o nouă pagină goală și vor repeta întregul proces din nou și din nou pentru totdeauna.  

Gândiți-vă la o pagină ca un bloc de tranzacții, iar dosarul ca lanț de pagini (blocuri), transformându-l într-un Blockchain(bloc de blocuri).  Și asta, prieteni, este modul în care funcționează Blockchain.  

Mai este totuși un mic detaliu pe care nu l-am discutat încă.  

Imaginați-vă că există deja cinci pagini în dosar, toate fiind sigilate cu un număr de sigilare. Ce se întâmplă dacă mă întorc la a doua pagină și modific o tranzacție pentru a mă favoriza? Numărul de sigilare va permite oricui să detecteze incoerența tranzacțiilor, nu? Ce se întâmplă dacă merg mai departe și calculez un număr nou de sigilare pentru tranzacțiile modificate și etichetez pagina cu acesta ?  

Pentru a preveni această problemă a unei persoane care se întoarce și modifică o pagină (bloc), precum și numărul de sigilare, există o mică schemă a modului în care se calculează numărul de sigilare.  

               Protejarea modificărilor numerelor de sigilare  


Îți amintești când ți-am spus că ți-am dat două cutii, una conținând numărul 20893 și alta goală pentru a calcula tu? În realitate, pentru a calcula numărul de sigilare într-un Blockchain, în loc de două cutii, există trei, două prescrise și una care urmează să fie calculată.  

Și când conținutul tuturor acestor trei cutii este alocat mașinii, răspunsul care iese din partea dreaptă trebuie să satisfacă condițiile cerute.  

Știm deja că o cutie conține lista de tranzacții, iar o cutie conține numărul de sigilare. Cea de-a treia cutie conține ieșirea mașinii magice pentru pagina anterioară.  

Cu acest mic truc, ne-am asigurat că fiecare pagină depinde de pagina anterioară. Prin urmare, dacă cineva trebuie să modifice o pagină, va trebui să schimbe conținutul și numărul de sigilare al tuturor paginilor după aceasta pentru a menține coerența blocului.  

Dacă un individ, dintre cei zece pe care ni i-am imaginat la început, încearcă să trișeze și să modifice conținutul Blockchain-ului (dosarul care conține paginile cu lista tranzacțiilor), va trebui să ajusteze mai multe pagini și să calculeze noul număr de sigilare pentru toate aceste pagini. Știm cât de greu este să calculăm numărul de sigilare. Prin urmare, o persoana necinstită în rețea nu-i poate înșela pe cei nouă oameni cinstiți.  

Defapt aceea persoana ar crea un alt bloc în rețea, dar acel bloc nu ar fi capabil niciodată să țină pasul cu lanțul cinstit, pur și simplu pentru că eforturile și viteza unui singur om nu pot învinge cumulativ eforturile și viteza a nouă oameni. Prin urmare, lanțul cel mai lung dintr-o rețea este lanțul cel mai onest.  

Ce se întâmplă dacă, în loc de unul, șase oameni devin necinstiți?  

În acest caz, protocolul va cădea și se numește " 51% Attack". Dacă majoritatea persoanelor din rețea decid să se răzgândească și să trișeze restul rețelei, protocolul va da greș.  

Și acesta este singurul motiv vulnerabil pentru care Blockchain s-ar putea prăbuși dacă se va întâmpla vreodată. Cu toții știm însă că este puțin probabil să se întâmple, dar trebuie să cunoaștem punctele vulnerabile ale sistemului. Totul se bazează pe presupunerea că majoritatea unei mulțimi este întotdeauna cinstită.  

Sort:  

Foarte bun articolul. :)

Bun, bravo!

Wow, un articol genial, nu stiam aceste lucruri. Mult succes in continuare!

Congratulations @bogdan95! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Coin Marketplace

STEEM 0.23
TRX 0.26
JST 0.040
BTC 98098.76
ETH 3483.62
USDT 1.00
SBD 3.27