Sadržaj:

Kako blockchain zapravo funkcionira
Kako blockchain zapravo funkcionira

Video: Kako blockchain zapravo funkcionira

Video: Kako blockchain zapravo funkcionira
Video: *FILM SA PREVODOM*Turkler Geliyor (Turci Dolaze) Istorijski ratni film #filmovi #sa #prevodom 2024, Maj
Anonim

Ovaj post ima za cilj da svima ispriča zašto je izmišljen blockchain, kako funkcionišu kriptovalute i zašto je to sa stanovišta logike najljepši sistem posljednjih godina.

Odmah ću vas upozoriti da se ispod reza nalazi OGROMAN list teksta i ako niste spremni da jednom za svagda "zatvorite" pitanje na temu kriptovaluta, odmah dodajte unos u svoje favorite i rezervirajte vrijeme)

Blockchain je tehnologija, nova, čudna, neshvatljiva, ali izgleda da mijenja svijet, za razliku od ovih vaših priča. Očigledno, ona je dugo s nama.

Ovaj post je napisan kao da se govori ljudima koji su jako udaljeni od kompjutera i poznaju ih samo površno, na primjer, zamislite da se spremao za vaše roditelje. Mogu to čak i baciti mojim kolegama humanistima i biti siguran da će razumjeti.

A Oleg će nam svima pomoći u ovoj teškoj stvari. Upoznajte se!

Ako ti se ne sviđa Oleg, izbaciću ga.

Osnove: zašto nam je potreban blockchain?

Blockchain je opisan u članku Satoshija Nakamota "Bitcoin: Peer-to-peer elektronski gotovinski sistem". Tamo, na samo osam stranica, autor je opisao osnove kriptovalute Bitcoin, koja je zasnovana na Blockchain algoritmu.

Lista koja se ne može mijenjati

Blockchain - lanac blokova ili drugim riječima povezana lista. U takvoj listi, svaki sljedeći zapis se odnosi na jedan prethodni, i tako dalje niz lanac do prvog. Poput vagona u vozu, svaki vuče za sobom sljedeći. Što se tiče lista, postoji dobar članak Nikite Lihačova na TJ-u, gdje je isto objašnjeno za potpuno novajlije. Analogije su djelimično preuzete odatle.

Uzmimo primjer

Olegovi prijatelji stalno pozajmljuju novac od njega. Oleg je ljubazan, ali izuzetno zaboravan. Sedmicu kasnije, više se ne sjeća ko mu nije vratio dug, ali mu je neugodno sve pitati o tome. Stoga je jednog dana odlučio da tome stane na kraj tako što je na tabli u svom domu napravio listu prijatelja kojima je pozajmio novac.

Sada Oleg uvijek može otići do ploče i pobrinuti se da je Max sve vratio, ali Vanya već ne daje 700 rubalja. Jednog dana Oleg poziva Vanju da popije piće u njegovoj kući. Dok Oleg ide u toalet, Vanja briše unos "Pozajmio sam 200 rubalja za Vanju" i na njegovo mjesto upisuje "Vanya je dao 500 rubalja".

Oleg, koji je vjerovao svojoj listi, zaboravlja na dug i gubi 700 rubalja. Odlučuje da se nekako bori protiv toga. Prošle godine, Oleg je pohađao kurs programiranja, gdje su mu govorili o heširanju. On se sjeća da se bilo koji niz može pretvoriti u nedvosmislen skup znakova - heš, a promjena bilo kojeg znaka u nizu će ga potpuno promijeniti.

Dodavanje tačke na kraju promijenilo je konačni heš do neprepoznatljivosti - možete ga koristiti.

Oleg uzima dobro poznati heš SHA-256 i hešira svaki zapis sa njim, dodajući rezultat na kraju. Sada Oleg može da se uveri da niko nije promenio njegove zapise tako što će ih ponovo heširati i uporediti sa zelenim.

Ali EVIL IVAN takođe zna da koristi SHA-256 i može lako da promeni unos zajedno sa njegovim hešom. Pogotovo ako je heš napisan odmah pored njega na tabli.

Stoga, radi veće sigurnosti, Oleg odlučuje da hešira ne samo sam zapis, već ga doda zajedno sa hešom iz prethodnog zapisa. Sada svi sljedeći unosi zavise od prethodnih. Ako promijenite barem jedan red, morat ćete ponovo izračunati hešove svih ostalih ispod na listi.

Ali jednog dana Ivan se prikrada noću, promijeni unos koji mu je potreban i ažurira hashove za cijelu listu do kraja. Potrebno mu je nekoliko sati, ali Oleg još uvijek čvrsto spava i ne čuje. Ujutro, Oleg otkriva apsolutno ispravnu listu - svi se heševi podudaraju. Ali Ivan ga je ipak prevario, iako je na tome proveo neprospavanu noć. Kako drugačije možete da se zaštitite od Noćnog Ivana?

Oleg odlučuje nekako zakomplikovati svoj život. Sada, da bi dodao novi unos na listu, Oleg će riješiti složeni problem povezan s tim, na primjer, matematičku jednačinu. On će dodati odgovor konačnom hešu.

Oleg je dobar u matematici, ali i za dodavanje unosa je potrebno deset minuta. Unatoč tome, utrošeno vrijeme se isplati, jer ako Ivan želi ponovo nešto promijeniti, morat će ponovno rješavati jednadžbe za svaki red, a može ih biti na desetine. To će potrajati dosta vremena, jer su jednadžbe svaki put jedinstvene i povezane s određenim zapisom.

Ali provjera liste je jednako jednostavna: prvo morate uporediti hešove kao i prije, a zatim jednostavnom zamjenom provjeriti rješenja jednadžbi. Ako se sve poklopi, lista se ne mijenja.

U stvarnosti, stvari nisu tako dobre s jednačinama: kompjuteri ih previše dobro rješavaju, a gdje pohraniti toliko jedinstvenih jednačina. Stoga su autori blockchaina došli do ljepšeg problema: potrebno je pronaći takav broj (nonce) tako da konačni hash cijelog zapisa počinje sa 10 nula. Takav jednokratni put je teško pronaći, ali rezultat se uvijek može provjeriti samo očima.

Sada Oleg provjerava sve hasheve i dodatno se pobrine da svaki počinje s određenim brojem nula. Lukavi Ivan, čak i naoružan moćnim laptopom, neće imati vremena da preračuna sve hešove za jednu noć kako bi zadovoljili uslov - neće biti dovoljno vremena.

Takva lista je, zapravo, kućni blockchain na koljenima. Za njegovu sigurnost garantuju matematičari, koji su dokazali da se ovi heševi ne mogu izračunati nekako brže, osim grubom silom. Takvo nabrajanje hashova za svaki zapis je rudarenje, o čemu će danas biti puno i detaljno.

Centralizacija povjerenja

Našim prijateljima se dopala ideja da se vodi lažna lista "ko je koga pozajmio". Takođe ne žele da se sećaju ko je kome platio u lokalu i koliko još duguju - sve piše na zidu. Razgovarali ste o ideji i odlučili da vam je sada potrebna jedinstvena lista za sve.

Ali kome treba povjeriti tako važno knjigovodstvo? Uostalom, kada je novac u pitanju, povjerenje dolazi do izražaja. Nećemo vjerovati nepoznatom da zadrži naš novac. Za to su naši preci izmislili banke u koje se vremenom počelo vjerovati, jer iza njih stoji dozvola, zakoni i osiguranje Centralne banke.

U krugu prijatelja svi vjeruju jedni drugima i jednostavno možete izabrati najodgovornijeg za ovu ulogu. Ali šta ako je pitanje o strancima? Cijeli grad, država ili cijeli svijet, kao što je slučaj sa Bitcoinom? Uglavnom, tamo niko nikome ne može vjerovati.

Decentralizacija: niko nikome ne veruje

Stoga su smislili alternativni pristup: zadržite kopiju liste za sve. Dakle, napadač ne bi morao samo da prepiše jednu listu, već i da se ušunja u svaku kuću i tamo prepiše liste. A onda se ispostavi da je neko kod kuće držao nekoliko spiskova za koje niko nije znao. Ovo je decentralizacija.

Nedostatak ovog pristupa je što ćete, da biste unijeli nove unose, morati nazvati sve ostale učesnike i obavijestiti svakog od njih o najnovijim promjenama. Ali ako su ovi učesnici mašine bez duše, to prestaje da predstavlja nikakav problem.

U takvom sistemu ne postoji jedinstvena tačka poverenja, a samim tim i mogućnost podmićivanja i varanja. Svi učesnici u sistemu postupaju po jednom pravilu: niko nikome ne veruje. Svako vjeruje samo onim informacijama kojima raspolaže. Ovo je glavni zakon svake decentralizovane mreže.

Transakcije

Kada kupujete lonac u prodavnici, unosite pin kod sa svoje kartice, omogućavajući prodavnici da pita banku da li imate 35 rubalja na računu. Drugim riječima, potpisujete transakciju za 35 rubalja sa svojim PIN kodom, koji banka potvrđuje ili odbija.

Naši zapisi tipa "Pozajmio sam Vanji 500 rubalja" su takođe transakcije. Ali mi nemamo banku koja ovlašćuje autora transakcija. Kako možemo provjeriti da Ivan nije tiho dodao unos "Maks duguje Olegu 100.500 rubalja"?

Blockchain za to koristi mehanizam javnih i privatnih ključeva; IT stručnjaci ih već dugo koriste za autorizaciju u istom SSH-u. Objasnio sam to na prstima u postu "Sigurnost, enkripcija, cyberpunk" u odjeljku "Uvod u enkripciju".

Ukratko o tome kako funkcioniše ova složena, ali prelepa matematika: generišete par dugih prostih brojeva na svom računaru – javni i privatni ključ. Privatni ključ se smatra super tajnim jer može dešifrirati ono što je šifrirano u javnosti.

Ali radi i suprotno. Ako podijelite javni ključ sa svim svojim prijateljima, oni će za njih moći šifrirati bilo koju poruku tako da je samo vi možete pročitati, budući da posjedujete privatnu.

No, osim toga, javni ključ ima koristan učinak - pomoću njega možete provjeriti da li su podaci šifrirani vašim privatnim ključem, bez dešifriranja samih podataka. Sva ova svojstva su dobro opisana u "Knjizi šifri".

Nalazimo se na decentralizovanom internetu gdje se nikome ne može vjerovati. Transakcija se potpisuje privatnim ključem i, zajedno sa javnim ključem, šalje se u posebno skladište - skup nepotvrđenih transakcija. Dakle, svaki član mreže može potvrditi da ste vi inicirali, a ne da neko drugi želi da isplati vaš novac.

Ovo osigurava otvorenost i sigurnost mreže. Ako su ranije banke bile odgovorne za ovo, onda su u blockchainu za to odgovorni matematičari.

Za obične korisnike koji ne žele shvatiti kako izdati i pohraniti privatne ključeve, usluge online novčanika će pomoći. Za kopiranje dugih javnih ključeva tamo se prave praktični QR kodovi. Na primjer Blockchain Wallet, jer ima zgodnu mobilnu aplikaciju i podržava dvije glavne kriptovalute - BTC i ETH.

Nedostatak koncepta "ravnoteže"

Kao i naša ploča, blockchain se u suštini sastoji samo od istorije transakcija. Ne pohranjuje stanje svakog novčanika, inače bismo morali izmisliti dodatne metode zaštite.

Samo privatni ključ potvrđuje vlasništvo nad novčanikom. Ali kako drugi članovi mreže mogu osigurati da imam dovoljno novca za kupovinu?

Pošto nemamo balans, morate to dokazati. Dakle, blockchain transakcija uključuje ne samo vaš potpis i koliko želite potrošiti, već i linkove na prethodne transakcije u kojima ste primili potrebnu količinu novca.

Odnosno, ako želite da potrošite 400 rubalja, prođite kroz čitavu svoju istoriju prihoda i rashoda i priložite svojoj transakciji one prihode u kojima ste dobili 100 + 250 + 50 rubalja, čime dokazujete da imate ovih 400 rubalja.

Svaki član mreže će još jednom obavezno provjeriti da niste dva puta priložili prihod. Da tih 300 rubalja koje je Maks dao prošle nedelje, zaista još niste potrošili.

Takvi prihodi povezani sa transakcijom nazivaju se ulazima u blockchain, a svi primaoci novca nazivaju se izlazima. Zbir svih ulaza rijetko je potpuno isti kao što želite prenijeti odjednom - stoga ćete jedan od izlaza najčešće biti vi. Drugim riječima, transakcija na blockchainu izgleda kao "Dato mi je 3 i 2 BTC, želim da prenesem 4 BTC od njih i vratim preostalih 1 BTC nazad."

Ljepota blockchaina je u tome što ulazi ne moraju dolaziti iz jednog novčanika. Na kraju krajeva, samo se ključ provjerava. Ako znate privatni ključ svih ulaza, onda ih možete lako priložiti svojoj transakciji i platiti ovim novcem. Kao da u supermarketu plaćate sa nekoliko kartica sa kojih znate pin kod.

Međutim, ako izgubite svoj privatni ključ, vaš disk umre ili vaš laptop bude ukraden, vaši bitcoini će biti izgubljeni zauvijek. Niko ih ne može koristiti kao ulazne podatke za nove transakcije.

Ovaj iznos će zauvijek biti nedostupan cijelom svijetu - kao da spalite svežanj novčanica. Ne postoji nijedna banka u kojoj možete napisati zahtjev sa kopijom pasoša, a on će je odštampati. To zahtijeva dodatno oslobađanje novih bitcoina "iz zraka".

Dvostruki problem potrošnje

Iznad sam rekao da se transakcije dodaju u poseban "pool nepotvrđenih transakcija". Zašto nam treba neka vrsta posrednika, ako već imamo, zapravo, gotove potpisane transakcije? Zašto ih ne zapisati direktno u blockchain?

Jer signali od tačke A do tačke B uvek idu sa zakašnjenjem. Dvije transakcije mogu ići na potpuno različite načine. A transakcija koja je prva pokrenuta može kasnije doći do primaoca, jer je prošla duži put.

To rezultira dvostrukom potrošnjom, kada se isti novac šalje na dvije adrese odjednom, o čemu oni ne bi ni slutili. Ovo nije da se računi predaju iz ruke u ruku.

Za decentraliziranu mrežu u kojoj se nikome ne može vjerovati, ovaj problem je posebno akutan. Evo kako se uvjeriti da je jedna transakcija definitivno bila prije druge? Zamolite pošiljaoca da u njega ušije vrijeme otpreme, zar ne? Ali zapamtite - ne možete vjerovati nikome, čak ni pošiljaocu.

Vrijeme na svim računarima će se nužno razlikovati i ne postoji zagarantovan način da ih sinhronizujete. Kopija blockchaina pohranjena je na svakom računaru u mreži i svaki učesnik vjeruje samo njoj.

Kako možete biti sigurni da je jedna transakcija bila ranija od druge?

Odgovor je jednostavan: nemoguće je. Ne postoji način da se potvrdi vrijeme transakcije na decentraliziranoj mreži. A rješenje ovog problema je treća važna blockchain ideja koju je Satoshi izmislio i koja je, začudo, napisana upravo u njegovom imenu - blokovi.

Blokovi su okosnica blockchaina

Svaki radni računar na mreži bira sve transakcije koje mu se sviđaju iz opšte grupe. Obično samo za najveću proviziju koju može zaraditi na tome. Dakle, on prikuplja transakcije za sebe sve dok njihova ukupna veličina ne dostigne dogovoreni limit. U Bitcoinu, ovo ograničenje veličine bloka je 1 MB (nakon SegWit2x biće 2 MB), a u Bitcoin Cash-u - 8 MB.

Cijeli blockchain je u suštini lista takvih blokova, gdje se svaki odnosi na prethodni. Može se koristiti za praćenje bilo koje transakcije u cijeloj historiji, odmotavajući blockchain čak do prvog zapisa.

Upravo ta lista sada teži stotinama gigabajta i mora se u potpunosti preuzeti na sve računare koji žele da učestvuju u mreži (ali to nije neophodno za jednostavno kreiranje transakcija i transfer novca). Preuzima se na isti način sa svih najbližih računara na mreži, kao da skidate seriju sa torrenta, u njoj se svakih 10 minuta puštaju samo nove epizode.

Nakon što je za sebe ukucao transakcije iz pula, računar počinje da sastavlja od njih istu neispravnu listu kao što smo to uradili na početku posta na tabli kod kuće.

Samo on to pravi u obliku stabla - hešira zapise u parovima, onda je rezultat opet u parovima, i tako sve dok ne ostane samo jedan heš - korijen stabla, koji se dodaje u blok. Zašto baš sa drvetom - nisam našao odgovor, ali pretpostavljam da je tako jednostavno brže. Pročitajte više na wiki: Merkle drvo.

Pošto je trenutni blockchain već preuzet, naš računar tačno zna koji je zadnji blok u njemu. On samo treba da doda link do njega u zaglavlje bloka, sve to hešira i kaže svim ostalim računarima na mreži „pogledajte, napravio sam novi blok, hajde da ga dodamo u naš blockchain“.

Ostali bi trebali provjeriti da li je blok izgrađen po svim pravilima i da tamo nismo dodali nepotrebne transakcije, a zatim ih dodati u naše lance. Sada su sve transakcije u njemu potvrđene, blockchain je povećan za jedan blok i sve ide kako treba, zar ne?

Ali ne. Hiljade računara istovremeno rade na mreži, a čim sastave novi blok, gotovo istovremeno žure da obaveste sve da je njihov blok prvi napravljen. A iz prethodnog odjeljka već znamo da je u decentraliziranoj mreži nemoguće dokazati ko je zaista bio prvi.

Kao i u školi, kada su svi rešavali težak test, retko se dešavalo da čak i odlični đaci polažu odgovore u isto vreme.

Ali ako je za osobu težak zadatak planirati odmor tako da dođe na majske praznike, a karte za more su jeftine, onda je za kompjuter takav broj (jednokratno) dodati na kraj blok tako da kao rezultat, heš SHA-256 za cijeli blok počinje recimo 10 nula. Ovo je problem koji treba riješiti kako bi se dodao blok u Bitcoin mrežu. Za druge mreže, zadaci se mogu razlikovati.

Tako dolazimo do koncepta rudarstva, kojim su svi toliko opsjednuti posljednjih godina.

Rudarstvo

Rudarstvo bitkoina nije neka vrsta svetog sakramenta. Rudarstvo nije pronalaženje novih bitcoina negdje u dubinama interneta. Rudarstvo je kada hiljade kompjutera širom svijeta zuje u podrumima, prolazeći kroz milione brojeva u sekundi, pokušavajući pronaći heš koji počinje sa 10 nula. Ne moraju čak ni biti na mreži da bi to učinili.

Video kartice sa stotinama paralelnih jezgara rješavaju ovaj problem brže od bilo kojeg CPU-a.

Zašto baš 10 nula? I samo tako, nema smisla. Tako je Satoshi smislio. Jer ovo je jedan od onih problema za koje uvijek postoji rješenje, ali se sigurno ne može pronaći brže od dugog monotonog nabrajanja opcija.

Složenost rudarenja direktno zavisi od veličine mreže, odnosno njene ukupne snage. Ako kreirate vlastiti blockchain i sami ga pokrenete kod kuće na dva laptopa, onda bi zadatak trebao biti jednostavniji. Na primjer, tako da heš počinje samo sa jednom nulom, ili tako da je zbir parnih cifara jednak zbiru neparnih.

Biće potrebno nekoliko decenija da jedan računar pronađe heš koji počinje sa 10 nula. Ali ako spojite hiljade računara u jednu mrežu i pretražujete paralelno, onda se, prema teoriji vjerovatnoće, ovaj problem rješava u prosjeku za 10 minuta. Ovo je vrijeme kada se novi blok pojavljuje u bitcoin blockchainu.

Svakih 8-12 minuta neko na zemlji pronađe takav heš i dobije privilegiju da svima objavi svoje otkriće, čime se izbjegava problem ko je prvi.

Za pronalaženje odgovora, kompjuter (od 2017. godine) dobija 12,5 BTC - ovo je iznos nagrade koji bitkoin sistem generiše "iz vazduha" i smanjuje se svake četiri godine.

Tehnički, to znači da svaki rudar uvijek dodaje još jednu transakciju svom bloku - „napravi 12,5 BTC i pošalji ih u moj novčanik“. Kada čujete "broj bitcoina u svijetu je ograničen na 21 milion, sada su već zaposlili 16 miliona" - to su nagrade koje generira mreža.

Idite da vidite pravi Bitcoin blok uživo na jednoj od namenskih lokacija. Tu su i transakcije sa ulazima i izlazima, te čak 18 nula na početku i svi gore opisani hashovi.

Rudari su ti koji dodaju novonastale transakcije u blockchain. Dakle, ako vam neko kaže da će "napraviti blockchain za ***", prvo pitanje na koje mora odgovoriti je ko će rudariti na njemu i zašto. Najčešće je tačan odgovor „svi hoće, jer za rudarenje dajemo svoje novčiće, koji će rasti i to je isplativo rudarima“. Ali to se ne odnosi na sve projekte.

Na primjer, neko Ministarstvo zdravlja sutra napravi svoj zatvoreni blok lanac za doktore (a oni to žele), ko će ga kopati? Vikend terapeuti?

Ali kakva će biti korist rudarima kasnije, kada nagrade nestanu ili postanu oskudne?

Prema ideji Kreatora, do tada će ljudi morati vjerovati u stvarnost bitcoina i rudarenje će se početi isplaćivati iznosom naknada uključenih u svaku transakciju. Tu sve ide: 2012. godine sve provizije su bile nula, rudari su rudarili samo za nagrade iz blokova. Danas transakcija sa nultom provizijom može da visi u bazenu nekoliko sati, jer postoji konkurencija i ljudi su spremni da plate za brzinu.

Odnosno, suština rudarstva je u rješavanju besmislenih problema. Zar se sva ta moć ne bi mogla iskoristiti za nešto korisnije – na primjer, traženje lijeka za rak?

Suština rudarenja je riješiti bilo koji računski problem. Ovaj zadatak bi trebao biti dovoljno jednostavan da učesnici mreže imaju stabilnu vjerovatnoću pronalaženja odgovora - inače će transakcije biti potvrđene zauvijek. Zamislite da na blagajni u radnji svaki put morate čekati pola sata da banka potvrdi vašu transakciju. Takvu banku niko neće koristiti.

Ali zadatak mora biti istovremeno i težak, tako da svi korisnici interneta ne nađu odgovor odjednom. Jer će u ovom slučaju na mrežu objaviti mnogo blokova sa istim transakcijama i postojaće mogućnost "duplog otpada", što sam spomenuo. Ili još gore - podjela jednog blockchaina na nekoliko grana, u kojima niko ne može shvatiti koja je transakcija potvrđena, a koja nije.

Ako se nagrada od 12,5 BTC podijeli samo jednom svakih 10 minuta i samo jednoj osobi koja je pronašla blok, ispada da moram trošiti video kartice nekoliko godina u nadi da ću jednog dana ispasti 40.000 dolara (na trenutni kurs)?

To je upravo slučaj za bitcoin. Ali nije uvijek bilo tako. Ranije je mreža bila manja, složenost je manja, što znači da je veća vjerovatnoća da ćete sami pronaći hash za novi blok. Ali tada bitcoin nije bio tako skup.

Sada niko ne rudari bitcoine sam. Sada su učesnici ujedinjeni u posebne grupe - rudarske pulove, gdje svi zajedno pokušavaju pronaći ispravan hash.

Ako barem jedan iz grupe pronađe, onda se cjelokupna nagrada dijeli između učesnika, ovisno o njihovom doprinosu zajedničkom radu. Ispostavilo se da rudarite i svake sedmice dobijete peni od ukupnog udjela.

Ali solo rudarenje je sasvim moguće na drugim mrežama. Do nedavno je bilo lako rudariti Ethereum, gdje se blokovi nalaze svakih 10 sekundi. Nagrada za blok je tamo mnogo niža, ali je vjerovatnoća da ćete zaraditi prilično peni veća.

Dakle, uzalud ćemo spaliti hiljade video kartica i nema izlaza?

Da, ali ima ideja. Rudarstvo koje sam opisao je klasično i zove se Proof-of-Work (dokaz rada). Odnosno, svaka mašina dokazuje da je radila za dobrobit mreže rešavajući besmislene probleme sa datom verovatnoćom.

Ali neki momci počinju da prave blockchaine sa drugim vrstama rudarenja. Sada je drugi najpopularniji koncept Proof-of-Stake (dokaz udjela). U ovoj vrsti rudarenja, što više "kovanica" učesnik mreže ima na svom računu, veća je vjerovatnoća da će ubaciti svoj blok u blockchain. Kao najglasniji tip u selu.

Možete razmišljati o drugim vrstama rudarenja. Kao što je već sugerisano, svi računari na mreži mogu tražiti lek za rak, samo vi treba da smislite kako, u ovom slučaju, da zabeležite njihov doprinos sistemu. Uostalom, mogu izjaviti da i ja učestvujem, ali isključim svoju video karticu i ništa ne računam.

Kako kvantificirate doprinos svakog učesnika u pronalaženju lijeka za rak? Ako smislite - usudite se da smanjite svoj CancerCoin, medijska hajka vam je zagarantovana.

Blockchain

Zamislite situaciju u kojoj su, uprkos našoj teoriji vjerovatnoće, dva rudara ipak uspjela pronaći pravi odgovor u isto vrijeme. Počinju da šalju dva apsolutno ispravna bloka preko mreže.

Ovi blokovi su zagarantovano različiti, jer čak i ako nekim čudom izaberu iste transakcije iz pula, naprave apsolutno identična stabla i pogode isti slučajni broj (nonce), njihovi će heševi i dalje biti različiti, jer će svaki upisati svoj broj novčanika u blok za nagradu.

Sada imamo dva valjana bloka i opet se javlja problem koga treba prvo razmotriti. Kako će se mreža ponašati u ovom slučaju?

Blockchain algoritam navodi da učesnici mreže jednostavno prihvataju prvi tačan odgovor koji im stigne. Tada žive na osnovu sopstvene slike sveta.

Oba rudara će dobiti svoju nagradu, a svi ostali počinju rudariti, oslanjajući se na posljednji blok koji su lično primili, odbacujući sve ostale ponovo ispravljaju. Na mreži se pojavljuju dvije verzije ispravnog blockchaina. Takav je paradoks.

Ovo je rutinska situacija u kojoj teorija vjerovatnoće opet pomaže. Mreža funkcionira u tako rastavljenom stanju sve dok jedan od rudara ne pronađe sljedeći blok do jednog od ovih lanaca.

Čim se takav blok pronađe i ubaci u lanac, on postaje duži i uključuje se jedan od sporazuma blockchain mreže: pod bilo kojim uvjetima, najduži blockchain se prihvaća kao jedini istinit za cijelu mrežu.

Kratak lanac, uprkos svoj njegovoj ispravnosti, odbijaju svi učesnici mreže. Transakcije iz njega se vraćaju u bazen (ako nisu potvrđene u drugom), a njihova obrada počinje iznova. Rudar gubi nagradu jer njegov blok više ne postoji.

S rastom mreže, takve slučajnosti od "vrlo malo vjerovatno" idu u kategoriju "pa, ponekad se to dogodi". Oldtajmeri kažu da je bilo slučajeva da je odjednom ispao lanac od četiri bloka.

Zbog toga su izmišljena tri pravila o nesigurnosti kraja lanca:

1. Nagrade za rudarenje se mogu koristiti samo nakon još 20 potvrđenih blokova nakon prijema. Za Bitcoin, ovo je oko tri sata.

2. Ako su vam bitcoini poslani, možete ih koristiti kao ulaze u novim transakcijama tek nakon 1-5 blokova.

3. Pravila 1 i 2 su samo navedena u postavkama svakog klijenta. Niko ne prati njihovo poštovanje. Ali zakon o najdužem lancu i dalje će izbrisati sve vaše transakcije ako pokušate prevariti sistem da ih ne provodi.

Pokušavam prevariti blockchain

Sada kada znate sve o rudarenju, uređaju blockchaina i pravilu najdužeg lanca, možda ćete imati pitanje: da li je moguće nekako posebno prestići blockchain tako što ćete sami napraviti najduži lanac i time potvrditi svoje lažne transakcije.

Recimo da imate najmoćniji računar na svijetu. Google i Amazon data centri su vam na raspolaganju i pokušavate izračunati takav lanac koji će postati najduži blockchain u mreži.

Ne možete uzeti i odmah izračunati nekoliko blokova lanca, jer svaki sljedeći blok zavisi od prethodnog. Tada odlučujete što je brže moguće da brojite svaki blok u vašim ogromnim centrima podataka paralelno sa načinom na koji svi ostali učesnici nastavljaju da povećavaju glavni blockchain. Da li ih je moguće prestići? Vjerovatno da.

Ako je vaša računarska snaga veća od 50% snage svih učesnika u mreži, onda ćete sa 50% verovatnoće moći da izgradite duži lanac brže od svih ostalih zajedno. Ovo je teoretski moguć način da se prevari blockchain izračunavanjem dužeg lanca transakcija. Tada će se sve transakcije prave mreže smatrati nevažećim, a vi ćete prikupiti sve nagrade i započeti novu prekretnicu u historiji kriptovalute, koja se zove "blockchain podjela". Jednom, zbog greške u kodu, to je bio slučaj sa Ethereumom.

Ali u stvarnosti, nijedan centar podataka se ne može porediti po snazi sa svim računarima na svetu. Milijardu i po Kineza sa icicima, još milijardu i pol gladnih Indijaca sa rudarskim farmama i jeftinom strujom - ovo je ogromna računarska snaga. Niko na svijetu još se ne može sam s njima takmičiti, čak ni Google.

To je kao da izađete na ulicu i pokušate da uvjerite svaku osobu na svijetu da dolar sada vrijedi 1 rublju i stići na vrijeme prije nego što vas mediji razotkriju. A ako uspijete sve uvjeriti, možete urušiti svjetsku ekonomiju. U teoriji, zar to nije moguće? Ali u praksi, iz nekog razloga, niko nije uspio.

Blockchain također počiva na ovoj vjerovatnoći. Što više učesnika-rudara, to je više sigurnosti i povjerenja u mrežu. Stoga, kada se u Kini pokrije još jedna velika rudarska farma, stopa pada. Svi se boje da je negdje u svijetu postojao zli genije koji je već prikupio bazen rudara sa ~49% kapaciteta.

Zaključak

Blockchain nije striktno definiran skup algoritama. To je struktura za izgradnju lažne mreže između učesnika, u kojoj niko nikome ne može vjerovati. Dok ste čitali, vjerovatno ste više puta pomislili da „možete i ovako i biće još korisnije“. To znači da razumijete blockchain, čestitam.

Neki momci u svijetu su to također shvatili i htjeli su se poboljšati ili prilagoditi za neke specifične zadatke. Kriptovalute nisu iste, iako ih ima dosta. Ovdje je kratka lista nekih ideja i projekata koji su stekli određenu popularnost zahvaljujući ponovnom promišljanju blockchain ideje.

Ethereum

"Eteri" je druga najpopularnija riječ koju čujete u vijestima o kripto-hipe, nakon Bitcoina. Za obične ljude, ovo je još jedna kriptovaluta i način da se napravi najmodernija stvar koja se zove ICO. Programeri na sajtu opisuju Ethereum kao "blokchain builder za vaše potrebe". I ovo je moguće, da.

Ali ako zakopate još dublje, eter nije samo mreža novčića. Ovo je ogromna globalna računarska mašina, gde korisnici izvršavaju kod tuđih programa (pametnih ugovora), primajući nagradu za svaku izvršenu liniju. I sve je to decentralizirano, neuništivo i uz sve garancije blockchaina.

O Ethereumu i pametnim ugovorima možemo pričati toliko dugo da će to biti dovoljno za još jedan takav post. Stoga ćemo se ponašati u stilu vrhunskih blogera: ako se ovaj post aktivno repostuje i retvituje, a do petka dobije najmanje 1.500 jedinstvenih pregleda, pisat ću nastavak o Ethereumu i pametnim ugovorima.

Preporučuje se: