Šta je blockchain i kako funkcioniše

Podijeli

Vjerovatno da je rijetko ko bio spreman na sve što se ove godine dešavalo u sviietu kriptovaluta. Cijena bitkoina je porasla skoro 20 puta od januara, što je posebno šokantan podatak ako se ima u vidu da bitkoin spada u one kriptovalute koje su ove godine imale umjereniji rast.

Ova luda godina još nije gotova, pa ćemo se retrospektivom baviti početkom sljedeće godine. Do tada, ne bi bilo loše da se malo vratimo osnovama i onome što je neodvojivo od kriptovaluta, a to je blokčein (blockchain) tehnologija.

Razumijevanje blokčein tehnologije je ključno za razumijevanje rasta koji su cijene kriptovaluta ove godine imale. Onima koji je ne razumiju, sve ovo što se dešava djeluje kako mehur. Onima koji razumijju, shvataju da smo tek na početku i da, šta god bilo sa cijenom pojedinačnih kriptovaluta, blokčein i kriptovalute kao koncept su sila koja se više ne može zaustaviti i koja polako, ali sigurno, osvaja svijet.

Za početak, bitno je da dobro razumijemo probleme koje blokčein rješava. Zato nećemo odmah početi sa blokčeinom, već ćemo do blokčeina doći posredno – preko posrednika.

Posrednici

Kada koristimo posrednike?

Kada god imamo potrebu da nešto pošaljemo nekome ko nije na istoj lokaciji kao mi, moramo da koristimo posrednika ili više njih. Ako se radi o poruci koju šaljemo putem mobilnog telefona, posrednik može biti telekomunikacioni operator (ako šaljemo SMS). Takođe, može biti ViberWhatsappTelegram… mogu biti društvene mreže kao što je FacebookTwitter ili Linkedin. Opcija za slanje poruke ima mnogo, ali sve one imaju jednu zajedničku stvar – uvijek nam treba posrednik. Isto je kad šaljemo e-mail. Tada posrednik može biti GmailYahooHotmail ili bilo koji drugi e-mail provajder. Poruku možemo poslati i pismom, u tom slučaju posrednik je Pošta.

Ako šaljemo paket, opet imamo puno opcija – Pošta, DHLFedex i razne druge kurirske službe. Oni koji bi da uštede na troškovima slanja ponekad koriste vozače autobusa kao posrednike, ali tad imaju veoma ograničen broj lokacija na koje mogu da pošalju.

Slanje novca je posebno zanimljiva tema imajući u vidu da se na ovom kursu bavimo kriptovalutama. Mogućnosti su brojne – u lokalu možemo koristiti banke, PostNet ili ponovo vozače autobusa. Za slanje van zemlje opet imamo banke, Western UnionPayPal itd.

Uglavnom, samo kada se fizički nalazimo na istom mjestu kao i osoba kojoj nešto želimo da damo, možemo to uraditi samostalno. U svakom drugom slučaju neophodan nam je posrednik ili često više njih (Obično kada šaljemo nešto u inostranstvo imamo više posrednika uključenih u proces – više banaka, više mobilnih operatera…).

Problemi sa posrednicima

Posrednici su veoma važni jer nam omogućuju interakciju sa ljudima sa kojima se ne nalazimo na istoj lokaciji. Međutim, pored toga što su neophodni, posrednici često mogu biti i problem. Koje su to stvari koje mogu biti problematične kad su posrednici u pitanju?

  1. Trošak: Usluge posrednika uglavnom nijesu besplatne (izuzetak je komunikacija putem interneta – SkypeViber, e-mail, WhatsApp…). Cijene tih usluga mogu biti simbolične, a mogu biti i prilično velike – tolike da cijena ponekad postaje dominantan faktor pri izboru posrednika.
  2. Kašnjenje: Posrednici uglavnom unose neko kašnjenje u proces slanja. Ponovo je izuzetak komunikacija putem interneta gde se to kašnjenje najčešće mjeri djelovima sekunde. Primjer situacije gdje to kašnjenje može biti značajno je slanje novca u drugu zemlju preko bankovnog računa. Na tome dosta profitiraju servisi kao što su Western Union i Moneygram koji brzinom transfera (neuporedivo brži od banke) opravdavaju izuzetno visoke provizije.
  3. Povjerenje: Da li možemo vjerovati posredniku da će za nas uraditi ono što nam potrebno? U većini slučajeva povjerenje se podrazumijeva i u većini slučajeva posrednik opravda to povjerenje. Desi se ponekad da se paket izgubi ili da novčana transakcija značajno kasni zbog propusta posrednika, ali su ovakvi slučajevi ipak relativno rijetki.
  4. Privatnost: Ovo se nekako nadovezuje na povjerenje. Posrednik često raspolaže privatnim podacima svojih klijenata. Postoji opravdan strah da bi posrednik te podatke mogao da zloupotrebi. Takođe, potencijalno može biti veliki problem ako posrednik te podatke ne čuva na dovoljno bezbjedan način. U tom slučaju do njih mogu doći hakeri i zloupotrebiti ih.

Problem vizantijskih generala

Problem vizantijskih generala je definisan još davne 1982. godine i ilustruje problematiku komunikacije preko posrednika koji nijesu pouzdani. Zamislimo da vizantijski generali opsijedaju neprijateljski grad i da treba da se dogovore oko zajedničkog plana akcije. Da bi napad uspio, potrebno je da svi napadnu u isto vrijeme. Ako neki od generala ne izvrše napad u dogovoreno vrijeme, veoma je vjerovatno da napad neće uspjeti. Pošto se generali nalaze na različitim lokacijama oko grada, ne mogu se uživo dogovarati, već komuniciraju preko kurira. Ovdje imamo dva potencijalna problema. Prvi problem je ako su neki od generala izdajnici. Oni će namjerno sabotirati dogovor i preko svojih kurira slati informacije tako da i među poštenim generalima izazovu konfuziju.

U jednostavnijem scenariju, svi generali su pošteni, ali nijesu svi kuriri pošteni. Da još dodatno pojednostavimo slučaj, zamislimo da imamo 3 generala i svaki general po 2 kurira (kao na slici 2), pri čemu svaki šalje po jednog kurira svakom od svojih kolega. U ovom primjeru, jedan od kurira prvog generala je izdajnik i on namjerno trećem generalu prenosi pogrešnu poruku. Prvi i drugi general misle da je dogovor postignut i kreću u napad. Treći general dobija drugačije poruke od svojih kolega i zbog toga ne napada jer smatra da nije postignut dogovor. Umjesto cijele vojske, u napad kreće 2/3 vojske i to znatno umanjuje šanse za pobjedu.

Na ovom jednostavnom primjeru smo vidjeli da je dovoljno da je samo 1 od 6 kurira izdajnik da bi šanse za uspjeh napada značajno smanjile. U većim i kompleksnijim sistemima, broj učesnika (a često i broj izdajnika) ja značajno veći, što samo dodatno komplikuje situaciju.

Ovaj problem posebno je izražen u sistemima koji nijesu centralizovani i gdje je broj učesnika prevelik da bi svako sa svakim direktno komunicirao. Bitkoin predstavlja upravo jedan takav sistem – veliki i decentralizovan.

Kod centralizovanih sistema, gdje problem komunikacije ne postoji, svi primaju informacije direktno sa vrha i do svih stižu iste informacije. Kod takvih sistema postoji druga vrsta problema – šta ako onaj koji je na vrhu donosi pogrešne odluke? Ipak, taj problem nije zanimljiv iz ugla ovog teksta, pa se nećemo na njemu duže zadržavati.

Blokčein

Priča o kriptovalutama počinje bitkoinom, pa ćemo i priču o blokčeinu početi bitkoinovim blokčeinom. Blokčein je registar svih transakcija koje su se ikad desile u bitkoinovom sistemu. To samo po sebi nije ništa spektakularno, jer svaki sistem u kojem se vrše neka plaćanja vodi evidenciju o tim transakcijama i čuva ih kao neku bazu podataka. Ono što je kod blokčeina velika inovacija je način na koji se informacije o transakcijama šalju i skladište.

Pođimo od samog imena. Blockchain je sastavljen od reči Block (blok) i chain (lanac). Dakle, bukvalno prevedeno, blokčein je lanac blokova. Naime, kod bitkoina se transakcije pakuju u blokove, a blokovi se vezuju u lanac. Za vezivanje blokova koristi se kriptografija, preciznije HASH funkcija, na način da je nemoguće promijeniti sadržaj jednog bloka, a da se ne promijeni sadržaj svih blokova koji idu nakon njega. Ovo je izuzetno bitno svojstvo blokčeina jer obezbjeđuje nepromjenjivost podataka koji su upisani u blokčein.

Kao što vjerovatno već znamo, bitkoin je decentralizovan, što znači da ne postoji centralni server ili bilo šta slično, na šta se korisnici povezuju. Svi korisnici bitkoina su povezani u peer-to-peer mrežu i svaki korisnik predstavlja jedno čvorište (node) te mreže. Pošto je peer-to-peer mreža takva da svaki korisnik može biti direktno povezan samo sa nekoliko drugih korisnika, to znači da je sa svima ostalima povezan indirektno.

Informacija kroz peer-to-peer mrežu putuje tako što svaki učesnik šalje poruku samo onima sa kojima je direktno povezan, zatim svaki od njih tu poruku dalje šalje onima sa kojima je direktno povezan i tako sve dok poruka ne dođe do svih učesnika u mreži. Dakle, ovdje imamo primjer slanja informacija preko velikog broj posrednika i sjajan primjer problema vizantijskih generala, samo mnogo komplikovaniji primjer od onog kojeg smo prethodno razmatrali.

Da bismo shvatili kako bitkoin rješava problem vizantijskih generala, bitno je da napomenemo još jednu bitnu osobinu bitkoina. Naime, neka od čvorišta (takva čvorišta se nazivaju full node) u mreži imaju na svom hard disku kompletan blokčein (bazu svih transakcija koje su se ikada desile) i takvih čvorišta je na hiljade. Pošto svi oni stalno međusobno komuniciraju, uvijek provjeravaju da li se njihova kopija blokčeina slaže sa ostalima. Ako se ne slaže, oni automatski ažuriraju svoju verziju tako da se slaže sa ostatkom mreže. Zamislite to kao bazu podataka koja je replicirana na hiljadama računara i koja se na svim tim računarima ažurira u realnom vremenu. Koliko je teško izmijeniti neki podatak u takvoj bazi?

Svaki korisnik bitkoina ima privatni ključ, javni ključ i bitkoin adresu. Javni ključ se kreira od privatnog ključa, ali na način da je nemoguće uraditi obrnut proces, to jest, od javnog ključa napraviti privatni. Zatim se od javnog ključa kreira bitkoin adresa na koju se primaju bitkoini i njega nema potrebe kriti. Sa druge strane, vrlo je važno da se dobro čuva privatni ključ. Privatnim ključem se potpisuju transakcije sa bitkoin adrese koja je za taj ključ vezana. Zamislite da je bitkoin adresa vaš broj bankovnog računa, a privatni ključ vaš pin kojim verifikujete plaćanja sa tog računa. Otprilike tako funkcioniše, uz jednu vrlo bitno razliku: Ako izgubite pin kojim verifikujete transakcije sa bankovnog računa, banka će vam izdati novi. Ako izgubite privatni ključ, izgubili ste zauvijek bitkoine na adresi za koju je taj privatni ključ vezan. Ti bitkoini i dalje postoje, ali im niko ne može pristupiti bez privatnog ključa.

Kako se zapravo šalje transakcija u ovakvoj mreži? Kada želim da pošaljem bitkoine nekome, moram da unesem bitkoin adresu primaoca, iznos koji želim da pošaljem i da transakciju potpišem mojim privatnim ključem. Zatim informaciju o toj transakciji šaljem učesnicima sa kojima sam direktno povezan u peer-to-peer mreži, da bi je oni dalje proslijedili sve do primaoca.

Možda ste čuli da se kod bitkoina transakcije šalju bez posrednika? Ovo je zapravo vrlo netačno. Nema posrednika u onom klasičnom smislu u kojem doživljavamo posrednika – neko ko šalje našu transakciju i koji za to uzima novac i unosi kašnjenje, ali ima i pravo da tu transakciju odbije, zamrzne, odloži… Ipak, pri slanju bitkoin transakcije ima posrednika, čak hiljade njih, samo je njihova uloga malo drugačija. Svako čvorište u bitkoin mreži je zapravo posrednik koji transakciju provjeri i proslijedi dalje sve dok ona ne dođe do svih čvorišta u mreži. Kad su je svi provjerili i transakcija je došla do svih u mreži, ona ispunjava uslov da se ubaci u blok i time postane dio blokčeina.

Šta svi ti posrednici zapravo provjeravaju?

  1. Da li pošiljalac ima na svojoj bitkoin adresi dovoljno bitkoina da bi mogao da izvrši transakciju?
  2. Da li je adresa primaoca validna?
  3. Da li je potpis pošiljaoca validan?

Kako oni mogu sve to da provjere? Sjetimo se da postoje čvorišta koja na svom hard disku imaju kompletan blokčein (sve transakcije koje su se ikad desile). Baš zbog toga, oni u svakom trenutku znaju tačno na kojoj adresi koliko bitkoina ima i koje su adrese validne, a koje nijesu. Ako transakcija prođe sve 3 provjere, ona se prosljeđuje dalje kroz peer-to-peer mrežu dok ne dođe do svih.

Iako sve ovo djeluje kao veoma kompleksan proces, u praksi je bitkoin transakciji uglavnom potrebno manje od jedne sekunde da dođe do svih čvorišta u bitkoin mreži.

Za kraj ovog dijela, vratimo se na problem vizantijskih generala. Šta ako su posrednici nepouzdani? Bitkoin je ovaj problem riješio na veoma zanimljiv način – povećao je broj posrednika! Ako ne možeš da vjeruješ jednom posredniku – koristi na hiljade njih! Djeluje nevjerovatno, ali zaista funkcioniše. Hajde da razmislimo šta bi se desilo ako bi neki od učesnika u bitkoin mreži pokušao da promijeni transakciju koju je primio, prije nego je proslijedi dalje. Ne bi se desilo ništa, zbog načina na koji mreža funkcioniše. Učesnici u mreži konstanto komuniciraju i porede svoje kopije baze sa drugima. Ako primijete da se njihova kopija razlikuje od drugih, oni svoju kopiju prilagode tako da bude ista. Međutim, svaki od učesnika je povezan direktno sa nekoliko drugih. Ako od jednog od njih dobija jednu informaciju, a od svih ostalih drugu, on će tog jednog učesnika jednostavno ignorisati, tako da izmijenjena informacija ne može da propagira kroz mrežu.

U mreži od nekoliko hiljada učesnika jedan „izdajnik“ ne može da učini nikakvu štetu, što je nekako i logično. Međutim, šta ako imamo više „izdajnika“? Dok god je njihov broj ispod 50%, cijela mreža je bezbjedna, jer su čvorišta programirana tako da stav većine prihvataju kao tačan. Dakle, da bi se mreža ugrozila, potrebno je da pošteni članovi mreže budu u manjini, ali to nije jedini uslov, što napad na mrežu čini još težim. Da bi napad uspio, neophodno je da napadači budu u većini i da budu savršeno sinhronizovani. Sinhronizacija hiljada učesnika je sama po sebi dovoljno teška, a napad čini još težim to što bi oni morali da djeluju istovremeno i trenutno čim se pojavi transakcija koju žele da izmijene. Problem je što vrlo teško mogu unaprijed da znaju kada će se tačno transakcija desiti i kako će izgledati.

Napad na bitkoin mrežu je teoretski moguć, ali se u praksi pokazao kao nemoguć skoro punih devet godina. Ovdje vidimo zašto je bitkoin mnogo više od internet novca – on je riješio problem povjerenja u decentralizovanoj mreži učesnika koji se međusobno ne poznaju, što je zapravo problem vizantijskih generala (koji je do pojave bitkoina bio smatran nerješivim, punih 26 godina). Možemo slati novac (ili bilo koji elektronski zapis) pomoću posrednika koje ne poznajemo i kojima ne vjerujemo, a opet biti potpuno sigurni da će novac stići tačno onome kome treba i tačno u iznosu koji je poslat.

Zaustavićemo se za sada ovde, pa ćemo se sljedeći put baviti razlikama između javnog i privatnog blokčeina, kao i mogućim primjenama blokčeina.

Mojafirma.rs