Sadržaj:

Kako blockchain zapravo funkcionira
Kako blockchain zapravo funkcionira

Video: Kako blockchain zapravo funkcionira

Video: Kako blockchain zapravo funkcionira
Video: Ходорковский: Гражданская война практически неизбежна 2024, Svibanj
Anonim

Ova objava ima za cilj svima reći zašto je izmišljen blockchain, kako funkcioniraju kriptovalute i zašto je to s gledišta logike najljepši sustav posljednjih godina.

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

Blockchain je tehnologija, nova, čudna, neshvatljiva, ali čini se da mijenja svijet, za razliku od ovih vaših priča. Navodno je dugo s nama.

Ovaj post je napisan kao da se govori ljudima koji su jako daleko od računala i poznaju ih samo površno, na primjer, zamislite da se pripremao za vaše roditelje. Mogu to čak odbaciti svojim kolegama humanističkim znanostima i biti siguran da će razumjeti.

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

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

Osnove: zašto nam treba blockchain?

Blockchain je opisan u članku Satoshija Nakamota "Bitcoin: Peer-to-peer elektronički gotovinski sustav". Ondje je na samo osam stranica autor opisao osnove kriptovalute Bitcoin, koja se temeljila na Blockchain algoritmu.

Popis koji se ne može mijenjati

Blockchain - lanac blokova ili drugim riječima povezana lista. U takvom popisu svaki sljedeći zapis odnosi se na jedan prethodni, i tako dalje niz lanac do prvog. Poput vagona u vlaku, svaki vuče za sobom sljedeći. Što se tiče popisa, postoji dobar članak Nikite Likhacheva na TJ-u, gdje je isto objašnjeno za potpuno početnike. Analogije su dijelom preuzete odatle.

Uzmimo primjer

Olegovi prijatelji stalno posuđuju novac od njega. Oleg je ljubazan, ali izrazito zaboravan. Tjedan dana kasnije više se ne sjeća tko mu nije vratio dug, ali mu je neugodno sve pitati o tome. Stoga je jednog dana odlučio tome stati na kraj tako što je na ploči u svom domu napravio popis prijatelja kojima je posudio 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 pozove Vanju na piće u njegovu kuću. Dok Oleg ide na WC, Vanya briše unos "posudio 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či se nekako boriti protiv toga. Prošle godine Oleg je pohađao tečaj programiranja, gdje su mu govorili o haširanju. On se sjeća da se bilo koji niz može pretvoriti u nedvosmislen skup znakova - hash, a promjena bilo kojeg znaka u nizu će ga potpuno promijeniti.

Dodavanje točke na kraju promijenilo je konačni hash do neprepoznatljivosti - možete ga koristiti.

Oleg uzima dobro poznati hash SHA-256 i s njim hešira svaki zapis, dodajući rezultat na kraju. Sada se Oleg može uvjeriti da nitko nije promijenio njegove zapise tako što će ih ponovno hashirati i usporediti sa zelenim.

Ali EVIL IVAN također zna koristiti SHA-256 i lako može promijeniti unos zajedno sa svojim hashom. Pogotovo ako je hash napisan odmah pored njega na ploči.

Stoga, radi veće sigurnosti, Oleg odlučuje hashirati ne samo sam zapis, već ga dodati zajedno s hashom iz prethodnog zapisa. Sada svi sljedeći unosi ovise o prethodnim. Ako promijenite barem jedan redak, morat ćete ponovno izračunati hasheve svih ostalih ispod na popisu.

Ali jednog dana se Ivan prišulja noću, promijeni unos koji mu treba i ažurira hashove za cijeli popis do kraja. Treba mu nekoliko sati, ali Oleg još uvijek čvrsto spava i ne čuje. Ujutro, Oleg otkriva apsolutno ispravan popis - svi se hashevi podudaraju. No, Ivan ga je ipak prevario, iako je na tome proveo neprospavanu noć. Kako se inače možete zaštititi od Noćnog Ivana?

Oleg odluči nekako zakomplicirati svoj život. Sada, da bi dodao novi unos na popis, Oleg će riješiti složeni problem povezan s njim, na primjer, matematičku jednadžbu. On će dodati odgovor konačnom hashu.

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 ponovno nešto promijeniti, morat će ponovno rješavati jednadžbe za svaki red, a može ih biti na desetke. Trebat će puno vremena jer su jednadžbe svaki put jedinstvene i povezane s određenim zapisom.

Ali provjera popisa je jednako jednostavna: prvo morate usporediti hasheve kao i prije, a zatim jednostavnom zamjenom provjeriti rješenja jednadžbi. Ako se sve poklopi, popis se ne mijenja.

U stvarnosti, stvari nisu tako dobre s jednadžbama: računala ih predobro rješavaju, a gdje pohraniti toliko jedinstvenih jednadžbi. Stoga su se autori blockchaina dosjetili ljepšeg problema: potrebno je pronaći takav broj (nonce) tako da konačni hash cijelog zapisa počinje s 10 nula. Takav nonce teško je pronaći, ali rezultat se uvijek može provjeriti samo očima.

Sada Oleg provjerava sve hasheve i dodatno osigurava da svaki počinje s navedenim brojem nula. Lukavi Ivan, čak i naoružan moćnim prijenosnim računalom, neće imati vremena za jednu noć preračunati sve hashove kako bi zadovoljili uvjet - neće biti dovoljno vremena.

Takav je popis, zapravo, domaći blockchain na koljenu. Za njegovu sigurnost jamče matematičari, koji su dokazali da se ti hashovi 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 svidjela ideja vođenja lažne liste "tko je koga posudio". Također se ne žele sjetiti tko je kome platio u lokalu i koliko još duguju - sve piše na zidu. Raspravljali ste o ideji i odlučili da vam je sada potreban jedinstveni popis za sve.

Ali kome bi trebalo povjeriti tako važno knjigovodstvo? Uostalom, kada je novac u pitanju, povjerenje dolazi do izražaja. Nećemo vjerovati da će nepoznati zadržati naš novac. Za to su naši preci izmislili banke, kojima se s 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 što ako je pitanje o strancima? Cijeli grad, država ili cijeli svijet, kao što je slučaj s Bitcoinom? Općenito, tamo nitko nikome ne može vjerovati.

Decentralizacija: nitko nikome ne vjeruje

Stoga su smislili alternativni pristup: zadržite kopiju popisa za sve. Dakle, napadač ne bi morao samo prepisati jedan popis, već bi se i ušuljao u svaku kuću i tamo prepisao popise. A onda se ispostavi da je netko kod kuće držao nekoliko popisa za koje nitko nije znao. Ovo je decentralizacija.

Nedostatak ovog pristupa je to što ćete za nove unose morati nazvati sve ostale sudionike i obavijestiti svakog od njih o najnovijim promjenama. Ali ako su ti sudionici strojevi bez duše, to uopće prestaje biti problem.

U takvom sustavu ne postoji jedinstvena točka povjerenja, a time i mogućnost podmićivanja i varanja. Svi sudionici u sustavu djeluju prema jednom pravilu: nitko nikome ne vjeruje. Svatko vjeruje samo onim informacijama kojima raspolaže. Ovo je glavni zakon svake decentralizirane mreže.

Transakcije

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

Naši zapisi tipa "posudio sam Vanji 500 rubalja" također su transakcije. Ali nemamo banku koja bi ovlastila autora transakcija. Kako možemo provjeriti da Ivan nije tiho dodao unos "Max 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. Na prste sam to objasnio u postu "Sigurnost, enkripcija, cyberpunk" u odjeljku "Uvod u enkripciju".

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

Ali djeluje 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 ste vlasnik privatne.

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

Nalazimo se na decentraliziranom internetu gdje se nikome ne može vjerovati. Transakcija se potpisuje privatnim ključem i zajedno s javnim ključem šalje se u posebnu pohranu - skup nepotvrđenih transakcija. Dakle, svaki član mreže može provjeriti da ste vi inicirali, a ne da netko drugi želi isplatiti vaš novac.

Time se osigurava otvorenost i sigurnost mreže. Ako su ranije banke bile odgovorne za to, 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 pomoći će. Za kopiranje dugih javnih ključeva tamo se izrađuju 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 biti sastoji samo od povijesti transakcija. Ne pohranjuje stanje svakog novčanika, inače bismo morali izmisliti dodatne metode zaštite.

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

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

Odnosno, ako želite potrošiti 400 rubalja, prolazite kroz cijelu svoju povijest 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 još jednom će obavezno provjeriti niste li dvaput priložili prihod. Da tih 300 rubalja koje je Max dao prošli tjedan, stvarno još niste potrošili.

Takvi prihodi povezani s transakcijom nazivaju se ulazima u blockchain, a svi primatelji novca nazivaju se izlazima. Zbroj 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 "Dobio sam 3 i 2 BTC, želim od njih prenijeti 4 BTC i vratiti preostalih 1 BTC natrag."

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

Međutim, ako izgubite svoj privatni ključ, vaš disk umre ili vam ukradu prijenosno računalo, vaši će bitcoini biti zauvijek izgubljeni. Nitko ih ne može koristiti kao ulazne podatke za nove transakcije.

Ovaj iznos zauvijek će biti nedostupan cijelom svijetu - kao da spalite svežanj novčanica. Ne postoji niti jedna banka u kojoj možete napisati zahtjev s kopijom putovnice, a on će je ispisati. To zahtijeva dodatno puštanje novih bitcoina "iz zraka".

Dvostruki problem potrošnje

Gore sam rekao da se transakcije dodaju u poseban "pool nepotvrđenih transakcija". Zašto nam treba nekakav posrednički subjekt, ako već imamo, zapravo, gotove potpisane transakcije? Zašto ih ne biste napisali izravno u blockchain?

Budući da signali od točke A do točke B uvijek 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 primatelja, jer je prošla duži put.

To rezultira dvostrukom potrošnjom, kada se isti novac šalje na dva primatelja odjednom, o čemu oni ne bi ni slutili. Ovo nije predaja računa 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šiljatelja da u njega ušije vrijeme slanja, zar ne? Ali zapamtite – ne možete vjerovati nikome, čak ni pošiljatelju.

Vrijeme na svim računalima će se nužno razlikovati i nema zajamčenog načina za njihovu sinkronizaciju. Kopija blockchaina pohranjena je na svakom računalu u mreži i svaki sudionik vjeruje samo njemu.

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

Svako radno računalo na mreži odabire sve transakcije koje mu se sviđaju iz općeg skupa. Obično samo za najvišu proviziju koju može zaraditi na tome. Tako on za sebe prikuplja transakcije sve dok njihova ukupna veličina ne dosegne dogovoreno ograničenje. U Bitcoinu, ovo ograničenje veličine bloka je 1 MB (nakon SegWit2x bit će 2 MB), a u Bitcoin Cashu - 8 MB.

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

Upravo taj popis sada teži stotinama gigabajta i mora se u potpunosti preuzeti na sva računala koja žele sudjelovati u mreži (ali to nije potrebno za jednostavno kreiranje transakcija i prijenos novca). Skida se na isti način sa svih najbližih računala na mreži, kao da skidate seriju s torrenta, u njoj se svakih 10 minuta puštaju samo nove epizode.

Nakon što je za sebe upisala transakcije iz bazena, računalo počinje sastavljati od njih isti nenamjenivi popis kao što smo to učinili na početku posta na ploči kod kuće.

Samo on to napravi u obliku stabla - raspršuje zapise u parovima, onda je rezultat opet u parovima, i tako sve dok ne ostane samo jedan hash - korijen stabla, koji se dodaje u blok. Zašto baš s drvetom - nisam našao odgovor, ali pretpostavljam da je tako jednostavno brže. Više pročitajte na wikiju: Merkle drvo.

Budući da je trenutni blockchain već preuzet, naše računalo točno zna koji je zadnji blok u njemu. Samo treba dodati link na njega u zaglavlje bloka, sve to hashirati i svim ostalim računalima na mreži reći “pogledajte, napravio sam novi blok, dodajmo ga u naš blockchain”.

Ostali bi trebali provjeriti je li 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 dobro, zar ne?

Ali ne. Tisuće računala istovremeno rade na mreži, a čim sastave novi blok, gotovo istovremeno žure obavijestiti sve da je njihov blok prvi stvoren. A iz prethodnog odjeljka već znamo da je u decentraliziranoj mreži nemoguće dokazati tko je zapravo bio prvi.

Kao i u školi, kada su svi rješavali težak test, rijetko se dogodilo da čak i odlični učenici polažu odgovore u isto vrijeme.

Ali ako je osobi težak zadatak planirati odmor tako da dođe na svibanjske praznike, a karte za more su jeftine, onda je za računalo takav broj (jednokratno) dodati na kraj blok tako da kao rezultat, SHA-256 hash za cijeli blok počinje recimo 10 nula. To 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 pojma rudarstva, kojim su svi toliko opsjednuti posljednjih godina.

Rudarstvo

Rudarstvo Bitcoina nije neka vrsta svetog sakramenta. Rudarstvo nije pronalaženje novih bitcoina negdje u dubinama interneta. Rudarstvo je kada tisuće računala diljem svijeta zuje u podrumima, prolazeći kroz milijune brojeva u sekundi, pokušavajući pronaći hash koji počinje s 10 nula. Ne moraju čak ni biti online da bi to učinili.

Video kartice sa stotinama paralelnih jezgri 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 izravno ovisi o veličini mreže, odnosno njezinoj ukupnoj snazi. Ako izradite vlastiti blockchain i sami ga pokrenete kod kuće na dva prijenosna računala, zadatak bi trebao biti jednostavniji. Na primjer, tako da hash počinje samo s jednom nulom, ili tako da je zbroj parnih znamenki jednak zbroju neparnih.

Trebat će nekoliko desetljeća da jedno računalo pronađe hash koji počinje s 10 nula. Ali ako kombinirate tisuće računala u jednu mrežu i pretražujete paralelno, tada se, prema teoriji vjerojatnosti, ovaj problem rješava u prosjeku za 10 minuta. Ovo je vrijeme kada se novi blok pojavljuje u bitcoin blockchainu.

Svakih 8-12 minuta netko na zemlji pronađe takav hash i dobije privilegiju da svima objavi svoje otkriće, čime se izbjegava problem tko je bio prvi.

Za pronalaženje odgovora računalo (od 2017.) prima 12,5 BTC - to je iznos nagrade koji generira bitcoin sustav "iz zraka" 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". Kad čujete "broj bitcoina u svijetu je ograničen na 21 milijun, sada su već zaposlili 16 milijuna" - to su nagrade koje generira mreža.

Idite vidjeti pravi Bitcoin blok uživo na jednoj od namjenskih stranica. Tu su i transakcije s ulazima i izlazima, te čak 18 nula na početku i svi gore opisani hashovi.

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

Recimo, neko Ministarstvo zdravstva sutra napravi svoj zatvoreni blockchain za liječnike (a oni to žele), tko će ga rudariti? Vikend terapeuti?

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

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

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

Bit rudarenja je riješiti bilo koji računski problem. Ovaj bi zadatak trebao biti dovoljno jednostavan da sudionici mreže imaju stabilnu vjerojatnost pronalaska odgovora - inače će transakcije biti potvrđene zauvijek. Zamislite da na blagajni u trgovini svaki put morate čekati pola sata da vam banka potvrdi transakciju. Takvu banku nitko neće koristiti.

Ali zadatak mora biti istovremeno i težak, kako svi netizensi ne bi pronašli odgovor odjednom. Jer će u ovom slučaju mreži objaviti mnogo blokova s istim transakcijama i bit će mogućnost "dvostrukog otpada", što sam spomenuo. Ili još gore – dijeljenje jednog blockchaina na nekoliko grana, u kojima nitko 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 jedna osoba 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 tečaj)?

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

Sada nitko ne rudari sam bitcoine. Sada su sudionici ujedinjeni u posebne grupe - rudarske bazene, gdje svi zajedno pokušavaju pronaći ispravan hash.

Ako barem jedan iz skupine pronađe, tada se cijela nagrada dijeli između sudionika, ovisno o njihovom doprinosu zajedničkom radu. Ispada da rudarite i svaki tjedan dobijete peni od ukupnog udjela.

Ali solo rudarenje je sasvim moguće na drugim mrežama. Donedavno je bilo lako rudariti Ethereum, gdje se blokovi nalaze svakih 10 sekundi. Nagrada za blok je tamo puno niža, ali je vjerojatnost da ćete zaraditi popriličan peni veća.

Dakle, uzalud ćemo spaliti tisuće 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, svaki stroj dokazuje da je radio za dobrobit mreže rješavajući besmislene probleme s zadanom vjerojatnošću.

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

Možete misliti na druge vrste rudarenja. Kao što je već sugerirano, sva računala na mreži mogu tražiti lijek za rak, samo vi trebate shvatiti kako, u ovom slučaju, zabilježiti njihov doprinos sustavu. Uostalom, mogu izjaviti da i ja sudjelujem, ali isključim svoju video karticu i ništa ne brojim.

Kako kvantificirate doprinos svakog sudionika u pronalaženju lijeka za rak? Ako to smislite - usudite se smanjiti svoj CancerCoin, medijska pompa vam je zajamčena.

Blockchain

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

Zajamčeno je da će ti blokovi biti različiti, jer čak i ako nekim čudom odaberu iste transakcije iz skupa, naprave apsolutno identična stabla i pogode isti slučajni broj (nonce), njihovi će hashevi i dalje biti različiti, budući da ć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 sudionici mreže jednostavno prihvaćaju prvi točan odgovor koji im stigne. Tada žive na temelju vlastite slike svijeta.

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

Ovo je rutinska situacija u kojoj teorija vjerojatnosti opet pomaže. Mreža funkcionira u tako razdvojenom stanju sve dok jedan od rudara ne pronađe sljedeći blok u jednom 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.

Kratki lanac, unatoč svoj njegovoj ispravnosti, odbijaju svi sudionici mreže. Transakcije iz njega se vraćaju u bazen (ako nisu potvrđene u nekom 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 vjerojatno" idu u kategoriju "pa, ponekad se to dogodi". Oldtimeri 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 mogu se koristiti tek nakon još 20 potvrđenih blokova nakon primitka. Za Bitcoin je to 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 samo su navedena u postavkama svakog klijenta. Nitko ne prati njihovo poštivanje. Ali zakon s najdužim lancem i dalje će izbrisati sve vaše transakcije ako pokušate prevariti sustav da ih ne provodi.

Pokušavam prevariti blockchain

Sada kada znate sve o rudarenju, uređaju blockchaina i pravilu najduljeg lanca, možda imate pitanje: je li moguće nekako posebno prestići blockchain tako da sami napravite najduži lanac i time potvrdite svoje lažne transakcije.

Recimo da imate najmoćnije računalo na svijetu. Google i Amazon datacentri 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 ovisi o prethodnom. Tada odlučujete što je brže moguće brojati svaki blok u vašim ogromnim podatkovnim centrima paralelno s time kako svi ostali sudionici nastavljaju povećavati glavni blockchain. Je li ih moguće prestići? Vjerojatno da.

Ako je vaša računalna snaga veća od 50% snage svih sudionika mreže, tada ćete s vjerojatnošću od 50% moći izgraditi 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 povijesti kriptovalute, koja se zove "blockchain division". Jednom je, zbog greške u kodu, to bio slučaj s Ethereumom.

Ali u stvarnosti, niti jedan podatkovni centar ne može se usporediti po snazi sa svim računalima na svijetu. Milijardu i pol Kineza s icicima, još milijardu i pol gladnih Indijaca s rudarskim farmama i jeftinom strujom - ovo je ogromna računalna snaga. Nitko na svijetu još se ne može sam s njima natjecati, čak ni Google.

To je kao da izađete na ulicu i pokušate uvjeriti 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 srušiti svjetsku ekonomiju. U teoriji, zar nije moguće? Ali u praksi, iz nekog razloga, nitko nije uspio.

Blockchain također počiva na ovoj vjerojatnosti. Što je više sudionika-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 genij koji je već skupio bazen rudara s ~49% kapaciteta.

Zaključak

Blockchain nije strogo definiran skup algoritama. To je struktura za izgradnju lažne mreže između sudionika, gdje nitko nikome ne može vjerovati. Čitajući, vjerojatno ste više puta pomislili da “možete i ovako i bit će još korisnije”. To znači da razumijete blockchain, čestitam.

Neki dečki u svijetu su to također razumjeli i htjeli su se poboljšati ili prilagoditi za neke specifične zadatke. Kriptovalute nisu iste, iako ih također ima puno. Evo kratkog popisa nekih ideja i projekata koji su stekli određenu popularnost zahvaljujući ponovnom promišljanju blockchain ideje.

Ethereum

“Ethers” je druga najpopularnija riječ koju čujete u vijestima o kripto-hype, 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 stranici opisuju Ethereum kao "blokchain builder za vaše potrebe". To je također moguće, da.

Ali ako zakopate još dublje, eter nije samo mreža kovanica. Ovo je ogroman globalni računalni stroj, gdje korisnici izvršavaju kod tuđih programa (pametnih ugovora), primajući nagradu za svaki izvršeni redak. I sve je to decentralizirano, neuništivo i uz sva jamstva 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 repostira i retweeta, a do petka dobije najmanje 1500 jedinstvenih pregleda, napisat ću nastavak o Ethereumu i pametnim ugovorima.

Preporučeni: