- Objavljeno datuma
Blockchain: uvod i uloge
- Autori
- Ime
- Vladimir Stevic
- X
Uvod
U ovom članku pokušaću kroz primjer da objasnim šta je to blockchain, koje su pojedinačne uloge učesnika i kako on funkcioniše.
Prvenstveno hajde da vidimo koja je to opšta definicija blockchain-a:
Blockchain je sistem u kojem su sačuvani podaci transakcija (kriptovaluta). Ovaj sistem se održava pomoću računara koji su uvezani u peer-to-peer mreži.
Da bi razumijeli ovo bolje, te sveli stvari koliko možemo na manje tehničko objašnjenje pokušajmo odgovoriti na sljedeća pitanja:
- Koja je svrha čuvanja podataka transakcija?
- Gdje se on nalazi?
- Šta je to peer-to-peer mreža?
- Ko održava blockchain i garantuje sigurnost i pozudanost?
Dobro je znati, da skoro ništa od ovog pojedinačno nije novo otkiće, ljudi odavno čuvaju spiskove transakcija, peer-to-peer mreža je stara koliko i internet. Međutim tek 2008 godine dolazi do pojave prve kriptovalute, u kojoj vidimo spoj poznatih tehnologija sa određenim novim dodacima.
Zašto čuvamo podatke transakcija?
Čuvanje podataka o transakcijama je starije od samog novca, vuče korijene još iz stare Mesopotamije. Ovo čuvanje podataka imalo je jasnu svrhu: bilježiti dugovanja, transakcije i zalihe robe. Međutim, ovdje ćemo se fokusirati na period kada se pojavljuje novac.
Pogledajmo jedan prost primjer, zamislite knjigu u kojoj imamo sljedeće podatke:
- Jovana poslala 10 evra Nikoli
- Nikola poslao 3 evra Mariji
- Nikola poslao 1 evra Sofiji
Ovakva knjiga u nekom opštem smislu naziva se Ledger, ona služi za praćenje ne samo transakcija, nego i stanja. Kada fizički novac ne bi postojao, mi bi i dalje mogli tačno, na osnovu ove knjige, da zaključimo ko od naših upisanih ima koliko novca:
- Sada vidimo da Nikola ima 10 evra koje dobija od Jovane. Zatim on šalje Mariji 3 pa Sofiji 1 evro, što znači da Nikola sada ima 6 evra.
- Marija ima 3 evra, koja je primila od Nikole
- Sofija ima 1 evro
Ovakav sistem smo svi mogli da vidimo u praksi unutar banke koju koristimo: mjesečni izvodi, uplate na naš račun, isplate - plaćanje našom karticom i slično. Sve ovo su transakcije koje su zabilježene pojedinačno kod banke koju koristimo.
Danas, Ledger nisu proste knjige, nego vidimo u primjeru banke da su to digitalni zapisi u određenim bazama podataka. Korak dalje, u blockchain svijetu danas, ovim zapisima imaju pristup svi, ovaj zapis je javan, za razliku od banaka gdje svaka čuva pojedinačno svoje zapise.
Vjerujem da nam je situacija sa bankama prilično jasna, već možemo zamisliti jedan računar u centrali banke koji ima sačuvane zapise svih transakcija izvršenih kroz nju. Sve ostale poslovnice iste banke putem internet-a mogu da vide ove transakcije. Mi kao korisnik ove banke naravno vidimo samo naše transakcije.
Postavlja se pitanje, a gdje su ti podaci kada je u pitanju blockchain tehnologija i kako su zapravo javni i dostupni svima?
Gdje se nalazi blockchain?
Za razliku od jednog računara u centrali banke, u blockchain tehnologiji bilo ko može putem interneta da se spoji u "blockchain mrežu", te na taj način preuzme sve transakcije. Dakle, vi sa svojim računarom uz malo tehničkog znanja možete da se uključite u peer-to-peer mrežu Bitcoin-a te dobijete kompletan Ledger na vaš računar.
Zaključujemo da nam ova tehnologija donosi jednu novost, svi imaju pristup svim transakcijama. Imajte na umu da u bankama transakcije sadrže podatke o konkretim licima i preduzećima:
- Firma "Nešto d.o.o." šalje 1000 evra Nikoli Simiću.
Dok, ti podaci u blockchain-u su malo drugačiji (više o samoj transakciji ovdje):
- Adressa "bc1p5eu...24seypzzy" šalje 1000 evra Adresi "bc1p6m2v...gdeptd".
Da se vratimo na temu, da li bi trenutni sistem banke bio jednak sistemu blockchain-a kada bi omogućio da svi imamo pristup transakcijama?
Odgovor je ne, iz razloga što blockchain nije tu samo da čuva podatke transakcija, nego postoji nešto više.
Banka u našem primjeru pored samog čuvanja istorije transakcija, prikazuje nam stanje na našem računu i ona je garant da je ono tačno. Pored ovoga, banka nam je garant da Jovana ne može doći u poslovnicu i prebaciti novac sa Nikolinog računa na svoj.
Sada otvaramo sljedeće pitanje, ko je garant u blockchain tehnologiji da samo ja imam pristup svom novcu?
Peer-to-peer mreža
Da bi smo odgovorili na pitanje, prvo moramo razjasniti pojam peer-to-peer mreže. Ovaj pojam jeste način povezivanja računara direktno jedan s drugim, bez centrale. Nasuprot ovog načina povezivanja stoji klijent - server relacija. Gdje su računari povezani sa drugima preko poslužitelja, centrale.
Navedimo primjere:
- Kada želite nešto reći grupi prijatelja, vi šaljete svima SMS poruke. Vaša poruka putuje preko mreže do centrale vašeg poslužitelja (onoga čiju SIM karticu koristite) te dolazi do vaših prijatelja. U ovom slučaju vidimo centralizaciju, dakle i vi i vaši prijatelji kojima šaljete poruku ste spojeni sa poslužiteljem koji vrši transport poruke. Ovo bi bila klijent - server relacija.
- Sada zamislite da je grupa prijatelja pored vas, vi njima direktno govorite vašu poruku, nema posrednika. Dakle, vi ste sada fizički blizu, nema centrale koja je potrebna da prenosi vašu poruku. Možete pojedinačno reći svakom prijatelju šta želite, kao i oni vama. Ovo bi bio primjer decentralizovane mreže.
U blockchain-u svi imamo komunikaciju sa svima i spojeni smo direktno jedni sa drugima.
Ko održava blockchain i garantuje sigurnost i pouzdanost?
Sada možemo da se vratimo na prethodno pitanje: ko je garant u blockchain tehnologiji da samo ja imam pristup svom novcu? Da bi shvatili moramo pogledati načine na koji svako može da učestvuje u blockchain-u, te objasniti kako se postiže koncenzus i šta on predstavlja.
Zamislite sada grupu ljudi koji su se skupili sa jasnim ciljem i pod jasnim pravilima. Recimo to ovako:
- Svi ovi ljudi su u jednoj velikoj kući (blockchain)
- Svaki pojedinačno ima svoju sobu (računar spojen u blockchain)
- Svako u svojoj sobi ima identične kutije, u svakoj kutiji 200 papira - transakcija. Dakle svi imaju kopiju istih podataka. (Ledger)
- Svako u svojoj sobi pokušava da riješi nasumičnu zagonetku (miner - proof of work)
- U međuvremenu ljudi im dostavljaju transakcije: Nikola poslao Jovani 10 evra; Siniša poslao Mariji 30 evra...
- Ko prvi od njih (uz pomoć malo sreće i znanja) riješi ovu zagonetku objavljuje svima ostalima: Ja imam riješenje!
- Zatim taj isti uzima transakcije pristigle u medjuvremenu, provjerava svaku te stavlja u novu kutiju i pokazuje sadržaj svima.
- Svi ostali sada provjeravaju da li je svaka transakcija iz ove nove kutije validna, tako što vide da li zaista Nikola ima 10 evra koje pokušava da pošalje i da li je njegov potpis na transakciji zaista njegov.
- Kada se svi slože, onaj ko je prvi riješio zagonetku dobija nagradu, a svi sada ovu novu kutiju dodaju u svoju sobu uz ostale kutije i kreće nova zagonetka.
- Ukoliko onaj koji je riješio zagonetku pokuša da napravi prevaru, pa u kutiju doda transakciju koja nije validna te pokuša prevariti ostale, svi ostali će vidjeti, te neće prihvatiti ovu kutiju. Ne samo to, nego sav trud koji je uložio u riješavanje zagonetke će biti uzaludan, neće dobiti nagradu.
- Ako on odluči da samo on ovu kutiju sačuva, ne moraju svi ostali - njegov glas se više ne važi, jer preko 51% ostalih će imati iste kutije, a on različite.
Slično ovome funkcioniše i blockchain, imamo računare na kojima je program koji ovo radi u pozadini, bez potrebe čovjeka da nešto ručno provjerava ili radi. Dakle, svako od nas na svoj računar može da instalira Bitcoin program i spoji se u ovu mrežu sa svima ostalima.
Spajajući se, mi možemo da postavimo da naš računar bude:
- NODE (čvor) koji neće riješavati zagonetku, ali će imati ledger (podatke svih transakcija, dakle sve kutije sa svim transakcijama). Pored toga njegova uloga je da kada miner (rudar) objavi da je riješio zagonetku i prikaže novi blok sa transakcijama (kutiju), provjeri validnost svake pojedinačno. Ako utvrdi da je sve ispravno, sačuva novi blok u svoj ledger. Veoma bitna stavka je takođe da blok sadrži identifikacioni broj (hash) od prethodnog bloka, da bi se stvorio chain ili veza. Tako da tačno znamo da je blok 3 bio prije bloka 4, iz razloga da ne bi neko od nas pokušao da ode u istoriju i razmijeni informacije u nekom bloku.
- MINER (rudar), pored svega ovoga riješava nasumičnu zagonetku mehanizmom poznatim pod nazivom PoW (proof of work u Bitcoin-u). Dakle, mineri koriste električnu energiju da riješe zagonetku.
Da zaključimo, u blockchain tehnologiji nam dakle ne treba centrala - banka, da bi bila garant naših transakcija, te da bi osigurala da Nikola ne može potrišiti Jovanin novac. Ovo upravo rade svi učesnici u mreži postižući koncenzus kroz mehanizam proof of work.
Proof of work
Postoje različiti mehanizmi koji osiguravaju koncenzus, u Bitcoin-u je to PoW pa ćemo za sada još jednom sumirati kako PoW osigurava mrežu.
Složenost zagonetki: Rješavanje zagonetki u PoW mehanizmu zahtijeva značajnu računarsku snagu i resurse. Ovo znači da rudari troše vrijeme i energiju da bi pronašli rešenje. Kada rudar uspješno riješi zagonetku, on objavljuje novi blok sa transakcijama.
Verifikacija od strane drugih čvorova: Kada se novi blok objavi, svi ostali čvorovi (node-ovi) u mreži preuzimaju taj blok i verifikuju sve transakcije u njemu. Ovo uključuje provjeru da li su svi potpisi validni i da li su svi potrebni uslovi ispunjeni. Samo ako većina nodova potvrdi validnost bloka, on se dodaje njihovim ledger-ima.
Lanac blokova: Svaki novi blok sadrži hash prethodnog bloka, što čini vezu između blokova nepromjenljivom. Ako neko pokuša da promjeni bilo koji blok, to će promjeniti njegov hash, što bi zahtjevalo da svi sljedeći blokovi budu takođe promjenjeni. S obzirom da je teško riješiti zagonetku i dobiti odobrenje od većine node-ova, to bi značilo da bi prevarant morao da ima više od 50% računarske moći mreže (poznato kao napad 51%) da bi uspješno izmenio lanac.
Za kraj
Ledger: Ledger je digitalna knjiga ili evidencija koja čuva sve transakcije u blockchain mreži. To je centralno mjesto gde su zabilježeni svi podaci o transferima kriptovaluta između učesnika
Konsenzus: Konsenzus u kontekstu blockchain-a označava način na koji svi učesnici u mreži dolaze do zajedničkog dogovora o stanju blockchain-a
Miner (Rudar): Miner je računar u blockchain mreži koji učestvuju u procesu rudarenja, odnosno verifikaciji i dodavanju novih transakcija u blockchain
Node (Čvor): Node je računar povezan u blockchain mreži koji čuva kopiju cijelokupnog blockchain-a i učestvuje u verifikaciji transakcija
Proof of work: Mehanizam konsenzusa koji zahteva od miner-a da riješe složene matematičke probleme kako bi dodali nove blokove u blockchain i osigurali mrežu