Kazalo:

Kako blockchain dejansko deluje
Kako blockchain dejansko deluje

Video: Kako blockchain dejansko deluje

Video: Kako blockchain dejansko deluje
Video: 25 самых удивительных боевых машин армии США 2024, April
Anonim

Ta objava je namenjena vsem povedati, zakaj je bil izumljen blockchain, kako delujejo kriptovalute in zakaj je z vidika logike najlepši sistem v zadnjih letih.

Takoj vas bom opozoril, da je pod rezom Ogromen list besedila in če niste pripravljeni enkrat za vselej "zapreti" vprašanja na temo kriptovalut, takoj dodajte vnos med priljubljene in si rezervirajte čas)

Blockchain je tehnologija, nova, čudna, nerazumljiva, a zdi se, da spreminja svet, v nasprotju s temi vašimi zgodbami. Očitno je z nami že dolgo.

Ta objava je napisana, kot da bi jo povedali ljudem, ki so zelo oddaljeni od računalnikov in jih poznajo le površno, na primer, predstavljajte si, da se je pripravljal na vaše starše. Lahko ga celo vržem svojim kolegom humanistikom in sem prepričan, da bodo razumeli.

In Oleg nam bo vsem pomagal v tej težki zadevi. Srečati!

Če ti Oleg ne bo všeč, ga bom vrgel ven.

Osnove: zakaj potrebujemo blockchain?

Blockchain je bil opisan v članku Satoshija Nakamota "Bitcoin: Peer-to-Peer Electronic Cash System". Tam je avtor na samo osmih straneh opisal osnove kriptovalute Bitcoin, ki je temeljila na algoritmu Blockchain.

Seznam, ki ga ni mogoče spremeniti

Blockchain - veriga blokov ali z drugimi besedami povezan seznam. V takem seznamu se vsak naslednji zapis nanaša na enega prejšnjega in tako naprej po verigi do prvega. Kot vagoni vlaka, vsak vleče naslednjega. Glede seznamov je dober članek Nikite Lihačova na TJ, kjer je enako razloženo za popolnoma novince. Analogije so delno vzete od tam.

Vzemimo primer

Olegovi prijatelji si od njega nenehno izposojajo denar. Oleg je prijazen, a izjemno pozabljiv. Teden dni pozneje se ne spomni več, kdo mu ni vrnil dolga, a mu je nerodno vse vprašati o tem. Zato se je nekega dne odločil, da bo temu naredil konec tako, da je doma na tabli ustvaril seznam prijateljev, ki jim je izposodil denar.

Zdaj lahko Oleg vedno gre na tablo in poskrbi, da je Max vse vrnil, vendar Vanya že ne daje 700 rubljev. Nekega dne Oleg povabi Vanjo na pijačo k sebi doma. Medtem ko Oleg hodi na stranišče, Vanya izbriše vnos »Sposodil sem 200 rubljev za Vanjo« in namesto njega napiše »Vanya je dal 500 rubljev«.

Oleg, ki je zaupal svojemu seznamu, pozabi na dolg in izgubi 700 rubljev. Odloči se, da se bo s tem nekako boril. Lani se je Oleg udeležil tečaja programiranja, kjer so mu povedali o zgoščevanju. Spominja se, da je mogoče kateri koli niz spremeniti v nedvoumen nabor znakov - hash, sprememba katerega koli znaka v nizu pa ga bo popolnoma spremenila.

Če dodate piko na koncu, je končno razpršilo spremenilo do neprepoznavnosti - lahko ga uporabite.

Oleg vzame dobro znani hash SHA-256 in z njim zgosti vsak zapis ter na koncu doda rezultat. Zdaj se lahko Oleg prepriča, da nihče ni spremenil svojih zapisov, tako da jih znova zgosti in primerja z zelenim.

Toda EVIL IVAN zna uporabljati tudi SHA-256 in zlahka spremeni vnos skupaj z njegovim hashom. Še posebej, če je hash napisan tik ob njem na tabli.

Zato se za večjo varnost Oleg odloči, da ne zgosti samo zapis, ampak ga doda skupaj z zgoščenim iz prejšnjega zapisa. Zdaj so vsi naslednji vnosi odvisni od prejšnjih. Če spremenite vsaj eno vrstico, boste morali znova izračunati hashe vseh ostalih spodaj na seznamu.

Toda nekega dne se Ivan ponoči prikrade, spremeni vnos, ki ga potrebuje, in posodobi hashe za celoten seznam do konca. Traja mu nekaj ur, a Oleg še vedno trdno spi in ne sliši. Zjutraj Oleg odkrije popolnoma pravilen seznam - vsi hashi se ujemajo. A Ivan ga je vseeno prevaral, čeprav je na tem preživel neprespano noč. Kako se sicer lahko zaščitite pred Nočnim Ivanom?

Oleg se odloči, da si bo nekako zakompliciral življenje. Zdaj, da bi na seznam dodal nov vnos, bo Oleg rešil zapleten problem, povezan z njim, na primer matematično enačbo. Odgovor bo dodal končnemu hashu.

Oleg je dober v matematiki, a tudi dodajanje vnosa traja deset minut. Kljub temu se porabljen čas splača, saj če bo Ivan spet želel kaj spremeniti, bo moral na novo rešiti enačbe za vsako vrstico, lahko pa jih je na desetine. Trajalo bo veliko časa, saj so enačbe vsakič edinstvene in povezane z določenim zapisom.

Toda preverjanje seznama je prav tako preprosto: najprej morate primerjati hashe kot prej, nato pa s preprosto zamenjavo preveriti rešitve enačb. Če se vse zbliža, se seznam ne spremeni.

V resnici stvari z enačbami niso tako dobre: računalniki jih predobro rešujejo in kam shraniti toliko edinstvenih enačb. Zato so se avtorji blockchaina domislili lepšega problema: poiskati morate takšno število (nonce), da se končni hash celotnega zapisa začne z 10 ničlami. Takšno enkratno je težko najti, rezultat pa je vedno mogoče preveriti samo z očmi.

Zdaj Oleg preveri vse hashe in dodatno poskrbi, da se vsak začne z določenim številom ničel. Sly Ivan, tudi oborožen z zmogljivim prenosnikom, ne bo imel časa, da bi v eni noči preračunal vseh hashov, da bi izpolnili pogoj - časa ne bo dovolj.

Takšen seznam je pravzaprav domači blockchain na kolenu. Za njegovo varnost jamčijo matematiki, ki so dokazali, da se teh hashov ne da izračunati nekako hitreje, razen s surovo silo. Takšno naštevanje hashov za vsak zapis je rudarjenje, o katerem bo danes veliko in podrobno.

Centralizacija zaupanja

Našim prijateljem je bila všeč ideja o vodenju lažnega seznama "kdo si je koga izposodil". Prav tako se ne želijo spomniti, kdo je za koga plačal v lokalu in koliko še dolgujejo - vse je napisano na steni. Razpravljali ste o ideji in se odločili, da zdaj potrebujete en sam seznam za vse.

Komu pa je treba zaupati tako pomembno knjigovodstvo? Konec koncev, ko gre za denar, pride v ospredje zaupanje. Ne bomo zaupali neznanemu, da bo obdržal naš denar. Za to so naši predniki izumili banke, ki so jim sčasoma začeli zaupati, saj so podprte z licenco, zakoni in zavarovanjem Centralne banke.

V krogu prijateljev si vsi zaupajo in za to vlogo lahko preprosto izberete najbolj odgovornega. Kaj pa, če se vprašanje nanaša na tujce? Celotno mesto, država ali ves svet, kot je v primeru Bitcoin? Na splošno tam nihče nikomur ne more zaupati.

Decentralizacija: nihče nikomur ne zaupa

Zato so pripravili alternativni pristop: obdržati kopijo seznama za vse. Tako bi moral napadalec ne samo prepisati enega seznama, temveč se tudi pritihotapiti v vsako hišo in tam prepisati sezname. In potem se izkaže, da je nekdo doma hranil več seznamov, za katere nihče ni vedel. To je decentralizacija.

Slaba stran tega pristopa je, da boste morali za nove vnose poklicati vse druge udeležence in vsakega od njih obvestiti o zadnjih spremembah. Toda če so ti udeleženci stroji brez duše, to sploh ne bo več problem.

V takem sistemu ni enotne točke zaupanja in s tem možnosti podkupovanja in goljufanja. Vsi udeleženci v sistemu delujejo po enem samem pravilu: nihče nikomur ne zaupa. Vsak verjame le tistim informacijam, ki jih ima na voljo. To je glavni zakon vsakega decentraliziranega omrežja.

Transakcije

Pri nakupu lonca v trgovini vnesete pin kodo s kartice, ki omogoča trgovini, da vpraša banko, ali imate na računu 35 rubljev. Z drugimi besedami, s svojo pin kodo podpišete transakcijo za 35 rubljev, ki jo banka potrdi ali zavrne.

Naši zapisi tipa "Vanji sem si sposodil 500 rubljev" so tudi transakcije. Nimamo pa banke, ki bi avtorja transakcij pooblastila. Kako lahko preverimo, da Ivan ni tiho dodal vnosa "Max dolguje Olegu 100.500 rubljev"?

Blockchain za to uporablja mehanizem javnih in zasebnih ključev, IT strokovnjaki jih že dolgo uporabljajo za avtorizacijo v istem SSH. To sem razložil na prste v prispevku »Varnost, šifriranje, kiberpunk« v razdelku »Uvod v šifriranje«.

Na kratko o tem, kako deluje ta zapletena, a lepa matematika: v računalniku ustvarite par dolgih praštevil – javni in zasebni ključ. Zasebni ključ velja za super skrivnost, ker lahko dešifrira tisto, kar je šifrirano v javnosti.

Deluje pa tudi obratno. Če javni ključ delite z vsemi svojimi prijatelji, bodo lahko zanje šifrirali katero koli sporočilo, tako da ga boste lahko prebrali samo vi, saj ste lastnik zasebnega.

Toda poleg tega ima javni ključ koristen učinek - z njim lahko preverite, ali so bili podatki šifrirani z vašim zasebnim ključem, ne da bi sami dešifrirali podatke. Vse te lastnosti so dobro opisane v "Knjigi šifrov".

Smo na decentraliziranem internetu, kjer nikomur ni mogoče zaupati. Transakcija je podpisana z zasebnim ključem in se skupaj z javnim ključem pošlje v posebno shrambo – zbirko nepotrjenih transakcij. Tako lahko vsak član omrežja preveri, ali ste ga sprožili vi in ne želi nekdo drug poplačati z vašim denarjem.

To zagotavlja odprtost in varnost omrežja. Če so bile za to odgovorne prejšnje banke, so v blockchainu za to odgovorni matematiki.

Za navadne uporabnike, ki ne želijo ugotoviti, kako izdati in shraniti zasebne ključe, bodo v pomoč storitve spletne denarnice. Za kopiranje dolgih javnih ključev so tam izdelane priročne QR kode. Na primer Blockchain Wallet, ker ima priročno mobilno aplikacijo in podpira dve glavni kriptovaluti - BTC in ETH.

Pomanjkanje koncepta "ravnotežja"

Tako kot naša plošča je tudi blockchain v bistvu sestavljen samo iz zgodovine transakcij. Ne shranjuje stanja vsake denarnice, sicer bi morali izumiti dodatne metode zaščite.

Samo zasebni ključ potrjuje lastništvo denarnice. Toda kako se lahko drugi člani mreže prepričajo, da imam dovolj denarja za nakup?

Ker nimamo ravnovesja, morate to dokazati. Transakcija blockchain torej ne vključuje le vašega podpisa in zneska, ki ga želite porabiti, temveč tudi povezave do prejšnjih transakcij, v katerih ste prejeli zahtevano količino denarja.

To pomeni, da če želite porabiti 400 rubljev, preletite celotno zgodovino prihodkov in odhodkov in svoji transakciji priložite tiste dohodke, kjer ste prejeli 100 + 250 + 50 rubljev, s čimer dokažete, da imate teh 400 rubljev.

Vsak član mreže bo še enkrat preveril, da niste dvakrat pripisali dohodka. Da tistih 300 rubljev, ki jih je Max dal prejšnji teden, res še niste porabili.

Takšni dohodki, povezani s transakcijo, se imenujejo vnosi v verigi blokov, vsi prejemniki denarja pa se imenujejo izhodi. Vsota vseh vhodov je le redko popolnoma enaka, kot jo želite prenesti naenkrat - zato boste eden od izhodov najpogosteje vi. Z drugimi besedami, transakcija v verigi blokov izgleda takole "Prejel sem 3 in 2 BTC, želim prenesti 4 BTC od njih in vrniti preostalih 1 BTC nazaj."

Lepota blockchaina je v tem, da ni nujno, da vložki prihajajo iz ene denarnice. Konec koncev se preveri samo ključ. Če poznate zasebni ključ vseh vnosov, jih lahko preprosto priložite svoji transakciji in plačate s tem denarjem. Kot da bi plačevali v supermarketu z več karticami, s katerih poznate PIN kodo.

Če pa izgubite svoj zasebni ključ, vaš disk umre ali vam ukradejo prenosni računalnik, bodo vaši bitcoini izgubljeni za vedno. Nihče jih ne more uporabiti kot vhodne podatke za nove transakcije.

Ta znesek bo za vedno nedostopen celemu svetu - kot da bi zažgali snop bankovcev. Ni ene banke, kjer bi lahko napisali vlogo s kopijo potnega lista, on pa jo bo natisnil. To zahteva dodatno sprostitev novih bitcoinov "iz zraka".

Problem dvojne porabe

Zgoraj sem rekel, da so transakcije dodane v poseben "bazen nepotrjenih transakcij". Zakaj potrebujemo nekakšno vmesno postavo, če že imamo v resnici že pripravljene podpisane transakcije? Zakaj jih ne bi zapisali neposredno v blockchain?

Ker signali od točke A do točke B vedno gredo z zamudo. Dve transakciji lahko potekata povsem na različne načine. In transakcija, ki je bila prva sprožena, lahko do prejemnika pride pozneje, ker je vzela daljšo pot.

Posledica tega je dvojna poraba, ko je bil isti denar poslan dvema naslovnikoma hkrati, o čemer ne bi niti slutili. Ne gre za predajo računov iz rok v roke.

Za decentralizirano omrežje, v katerem nikomur ni mogoče zaupati, je ta problem še posebej pereč. Evo, kako se prepričate, da je bila ena transakcija zagotovo pred drugo? Prosite pošiljatelja, naj vanj zašije čas odpreme, kajne? Ampak ne pozabite – nikomur ne morete zaupati, niti pošiljatelju.

Čas na vseh računalnikih se bo nujno razlikoval in ni zagotovljenega načina za njihovo sinhronizacijo. Kopija blockchaina je shranjena na vsakem računalniku v omrežju in vsak udeleženec zaupa samo njej.

Kako se lahko prepričate, da je bila ena transakcija prej kot druga?

Odgovor je preprost: nemogoče je. Časa transakcije v decentraliziranem omrežju ni mogoče potrditi. In rešitev tega problema je tretja pomembna ideja blockchaina, ki jo je izumil Satoshi in ki je, nenavadno, zapisana prav v njegovem imenu - bloki.

Bloki so hrbtenica verige blokov

Vsak delujoči računalnik v omrežju izbere vse transakcije, ki so mu všeč iz splošnega bazena. Običajno samo za najvišjo provizijo, ki jo lahko zasluži. Tako zase zbira transakcije, dokler njihova skupna velikost ne doseže dogovorjene omejitve. V Bitcoinu je ta omejitev velikosti bloka 1 MB (po SegWit2x bo 2 MB), v Bitcoin Cash pa 8 MB.

Celoten blockchain je v bistvu seznam takšnih blokov, kjer se vsak nanaša na prejšnjega. Uporablja se lahko za sledenje katere koli transakcije v celotni zgodovini, pri čemer se veriga blokov odvija celo do prvega zapisa.

Prav ta seznam zdaj tehta na stotine gigabajtov in ga je treba v celoti prenesti na vse računalnike, ki želijo sodelovati v omrežju (vendar to ni potrebno za preprosto ustvarjanje transakcij in prenos denarja). Enako se prenaša z vseh najbližjih računalnikov v omrežju, kot če prenašate serijo iz torrentov, se v njej vsakih 10 minut izdajajo le nove epizode.

Ko je sam vtipkal transakcije iz bazena, začne računalnik iz njih sestavljati enak neponovljiv seznam, kot smo ga naredili na začetku objave na tabli doma.

Samo on ga naredi v obliki drevesa - zgosti zapise v parih, nato je rezultat spet v parih in tako naprej, dokler ne ostane samo en zgoščenec - koren drevesa, ki se doda v blok. Zakaj ravno z drevesom - nisem našel odgovora, a predvidevam, da je tako enostavno hitreje. Več si preberite na wikiju: Drevo Merkle.

Ker je trenutni blockchain že prenesen, naš računalnik natančno ve, kateri je zadnji blok v njem. Samo dodati mora povezavo do njega v glavo bloka, vse skupaj zgostiti in vsem ostalim računalnikom v omrežju povedati "poglejte, naredil sem nov blok, dodajmo ga v naš blockchain".

Preostali naj preverijo, ali je blok zgrajen po vseh pravilih in da tam nismo dodali nepotrebnih transakcij, nato pa jih dodajo v svoje verige. Zdaj so vse transakcije v njem potrjene, blockchain se poveča za en blok in vse gre dobro, kajne?

Vendar ne. V omrežju istočasno deluje na tisoče računalnikov in takoj, ko sestavijo nov blok, skoraj istočasno hitijo vse obvestiti, da je bil njihov blok prvi ustvarjen. In že iz prejšnjega razdelka vemo, da je v decentraliziranem omrežju nemogoče dokazati, kdo je bil v resnici prvi.

Tako kot v šoli, ko so vsi reševali težko preizkušnjo, se je le redko zgodilo, da so tudi odlični učenci hkrati odgovarjali.

Če pa je za človeka težka naloga načrtovati počitnice, tako da bo prišel na majske praznike, in so karte za morje poceni, potem je za računalnik takšno številko (nonce) dodati na konec blok tako, da se posledično začne zgoščevanje SHA-256 za celoten blok, recimo 10 ničel. To je problem, ki ga je treba rešiti, da bi dodali blok v omrežje Bitcoin. Za druga omrežja se lahko naloge razlikujejo.

Tako pridemo do koncepta rudarjenja, s katerim so zadnja leta vsi tako obsedeni.

rudarjenje

Rudarjenje bitcoinov ni nekakšen sveti zakrament. Pri rudarjenju ne gre za iskanje novih bitcoinov nekje v globinah interneta. Rudarjenje je, ko na tisoče računalnikov po vsem svetu brenči v kleteh in gre skozi milijone številk na sekundo in poskuša najti hash, ki se začne z 10 ničlami. Za to jim niti ni treba biti na spletu.

Video kartice z več sto vzporednimi jedri rešujejo to težavo hitreje kot kateri koli CPU.

Zakaj ravno 10 ničel? In kar tako, nima smisla. Tako je prišel Satoshi. Ker je to eden tistih problemov, za katerega vedno obstaja rešitev, ki pa se je zagotovo ne da najti hitreje kot dolgo monotono naštevanje možnosti.

Kompleksnost rudarjenja je neposredno odvisna od velikosti omrežja, to je njegove skupne moči. Če ustvarite svoj blockchain in ga sami zaženete doma na dveh prenosnih računalnikih, bi morala biti naloga enostavnejša. Na primer, tako da se hash začne samo z eno ničlo ali tako, da je vsota sodih števk enaka vsoti lihih.

En računalnik bo potreboval nekaj desetletij, da bo našel hash, ki se začne z 10 ničlami. Če pa na tisoče računalnikov združite v eno omrežje in iščete vzporedno, potem je po teoriji verjetnosti ta problem v povprečju rešen v 10 minutah. To je čas, ko se v bitcoin blockchainu pojavi nov blok.

Vsakih 8-12 minut nekdo na zemlji najde tak hash in dobi privilegij, da svoje odkritje naznani vsem in se tako izogne težavi, kdo je bil prvi.

Za iskanje odgovora računalnik (od leta 2017) prejme 12,5 BTC – to je znesek nagrade, ki ga ustvari sistem bitcoin »iz zraka« in se zmanjšuje vsaka štiri leta.

Tehnično to pomeni, da vsak rudar vedno doda še eno transakcijo svojemu bloku - "ustvari 12,5 BTC in jih pošlji v mojo denarnico". Ko slišite "število bitcoinov na svetu je omejeno na 21 milijonov, zdaj so jih že zaposlili 16 milijonov" - to so nagrade, ki jih ustvarja omrežje.

Oglejte si pravi blok Bitcoin v živo na enem od namenskih spletnih mest. Obstajajo tudi transakcije z vhodi in izhodi ter kar 18 ničel na začetku in vsi zgoraj opisani hashi.

Rudarji so tisti, ki nastajajoče transakcije dodajo v blockchain. Če vam torej nekdo reče, da bo "naredil blockchain za ***", je prvo vprašanje, na katerega mora odgovoriti, kdo bo rudaril na njem in zakaj. Najpogosteje je pravilen odgovor »vsi bodo, saj za rudarjenje dajemo svoje kovance, ki bodo rasli in je za rudarje donosno«. Vendar to ne velja za vse projekte.

Na primer, neko ministrstvo za zdravje jutri ustvari svoj zaprt blockchain za zdravnike (in si ga želijo), kdo ga bo kopal? Vikend terapevti?

Kakšna pa bo korist rudarjem kasneje, ko bodo nagrade izginile ali postale skope?

Po ustvarjalčevi zamisli bodo do takrat ljudje morali verjeti v resničnost bitcoina in rudarjenje se bo začelo izplačevati z zneskom provizij, vključenih v vsako transakcijo. Tu gre vse: leta 2012 so bile vse provizije nič, rudarji so rudarili samo za nagrade iz blokov. Danes lahko transakcija z nič provizijo visi v bazenu več ur, ker je konkurenca in ljudje so pripravljeni plačati za hitrost.

Se pravi, bistvo rudarjenja je v reševanju nesmiselnih problemov. Ali ne bi bilo mogoče vse te moči uporabiti za kaj bolj uporabnega – na primer iskanje zdravila za raka?

Bistvo rudarjenja je rešiti kateri koli računski problem. Ta naloga bi morala biti dovolj preprosta, da imajo udeleženci omrežja stabilno verjetnost, da bodo našli odgovor – sicer bodo transakcije potrjene za vedno. Predstavljajte si, da morate na blagajni v trgovini vsakič čakati pol ure, da banka potrdi vašo transakcijo. Nihče ne bo uporabljal takšne banke.

Toda naloga mora biti hkrati težka, da vsi uporabniki ne najdejo odgovora naenkrat. Ker bodo v tem primeru omrežju objavili veliko blokov z enakimi transakcijami in obstaja možnost "dvojnega odpada", kar sem omenil. Ali še huje – razdelitev posameznega blockchaina na več vej, v katerih nihče ne more ugotoviti, katera transakcija je potrjena in katera ne.

Če se nagrada v višini 12,5 BTC podeli le enkrat vsakih 10 minut in samo ena oseba, ki je našla blok, se izkaže, da moram več let zapravljati grafične kartice v upanju, da bom nekega dne spustil 40.000 $ (na trenutni menjalni tečaj)?

Točno to velja za bitcoin. Vendar ni bilo vedno tako. Prej je bilo omrežje manjše, kompleksnost je nižja, kar pomeni, da je verjetnost, da boš sam poiskal hash za nov blok, večja. Toda takrat bitcoin ni bil tako drag.

Zdaj nihče ne rudari bitcoinov sam. Zdaj so udeleženci združeni v posebne skupine - rudarske bazene, kjer vsi skupaj poskušajo najti pravi hash.

Če vsaj ena iz skupine najde, se celotna nagrada razdeli med udeležence, odvisno od njihovega prispevka k skupnemu delu. Izkazalo se je, da rudarite in vsak teden dobite peni od skupnega deleža.

Toda samostojno rudarjenje je povsem možno v drugih omrežjih. Do nedavnega je bilo enostavno rudariti Ethereum, kjer se bloki nahajajo vsakih 10 sekund. Nagrada za blok je tam precej nižja, vendar je verjetnost, da boste zaslužili lep peni, večja.

Torej bomo zaman zažgali na tisoče video kartic in ni izhoda?

Ja, ampak obstajajo ideje. Rudarjenje, ki sem ga opisal, je klasično in se imenuje Proof-of-Work (dokaz o delu). To pomeni, da vsak stroj dokaže, da je deloval v korist omrežja z reševanjem nesmiselnih problemov z dano verjetnostjo.

Toda nekateri fantje začenjajo ustvarjati blockchaine z drugimi vrstami rudarjenja. Zdaj je drugi najbolj priljubljen koncept Proof-of-Stake (dokaz deleža). Pri tej vrsti rudarjenja, več ko ima udeleženec omrežja na računu, večja je verjetnost, da bo vstavil svoj blok v verigo blokov. Kot najglasnejši tip v vasi.

Omislite si lahko druge vrste rudarjenja. Kot smo že predlagali, lahko vsi računalniki v omrežju iščejo zdravilo za raka, le vi morate ugotoviti, kako v tem primeru zabeležiti njihov prispevek k sistemu. Konec koncev lahko izjavim, da tudi jaz sodelujem, vendar izklopim video kartico in nič ne štejem.

Kako količinsko ocenite prispevek vsakega udeleženca k iskanju zdravila za raka? Če si to domislite - drznite si zmanjšati svoj CancerCoin, vam je medijski hype zagotovljen.

Blockchain

Predstavljajte si situacijo, v kateri sta kljub vsej naši teoriji verjetnosti dvema rudarjema vseeno uspela hkrati najti pravi odgovor. Po omrežju začnejo pošiljati dva popolnoma pravilna bloka.

Ti bloki so zagotovljeno različni, saj tudi če bi čudežno izbrali enake transakcije iz bazena, naredili popolnoma enaka drevesa in uganili isto naključno število (nonce), bodo njihovi hashi še vedno različni, saj bo vsak zapisal svojo številko denarnice v blok za nagrado.

Zdaj imamo dva veljavna bloka in spet se pojavi problem, koga je treba najprej upoštevati. Kako se bo v tem primeru obnašalo omrežje?

Algoritem blockchain navaja, da udeleženci omrežja preprosto sprejmejo prvi pravilen odgovor, ki jih doseže. Potem živijo na podlagi lastne slike sveta.

Oba rudarja bosta prejela nagrado, vsi ostali pa bodo začeli rudariti, pri čemer se zanašajo na zadnji blok, ki so ga osebno prejeli, pri čemer zavržejo vse preostale ponovno popravljene. V omrežju se pojavita dve različici pravilnega blockchaina. Takšen je paradoks.

To je rutinska situacija, v kateri teorija verjetnosti spet pomaga. Omrežje deluje v tako razcepljenem stanju, dokler eden od rudarjev ne najde naslednjega bloka do ene od teh verig.

Takoj, ko se tak blok najde in vstavi v verigo, postane daljši in vključen je eden od dogovorov omrežja blockchain: pod kakršnimi koli pogoji je najdaljši blockchain sprejet kot edini pravi za celotno omrežje.

Kratko verigo kljub vsej pravilnosti zavračajo vsi udeleženci mreže. Transakcije iz njega se vrnejo v skupino (če niso bile potrjene v drugem) in njihova obdelava se začne na novo. Rudar izgubi nagrado, ker njegov blok ne obstaja več.

Z rastjo omrežja takšna naključja iz "zelo malo verjetno" gredo v kategorijo "no, včasih se zgodi". Starodobniki pravijo, da so bili primeri, ko je naenkrat padla veriga štirih blokov.

Zaradi tega so bila izumljena tri pravila o negotovosti na koncu verige:

1. Nagrade za rudarjenje je mogoče uporabiti šele po nadaljnjih 20 potrjenih blokih po prejemu. Za Bitcoin je to približno tri ure.

2. Če so vam bili bitcoini poslani, jih lahko uporabite kot vhode v novih transakcijah šele po 1-5 blokih.

3. Pravila 1 in 2 sta pravkar navedena v nastavitvah vsakega odjemalca. Nihče ne spremlja njihovega spoštovanja. Toda zakon z najdaljšo verigo bo še vedno izbrisal vse vaše transakcije, če boste poskušali pretentati sistem, da jih ne uveljavlja.

Poskuša goljufati blockchain

Zdaj, ko veste vse o rudarjenju, napravi blockchaina in pravilu najdaljše verige, se lahko vprašate: ali je mogoče nekako posebej prehiteti blockchain, tako da sami naredite najdaljšo verigo in s tem potrdite svoje lažne transakcije.

Recimo, da imate najmočnejši računalnik na svetu. Podatkovni centri Google in Amazon so vam na voljo skupaj in poskušate izračunati takšno verigo, ki bo postala najdaljša blockchain v omrežju.

Ne morete vzeti in takoj izračunati več blokov verige, ker je vsak naslednji blok odvisen od prejšnjega. Nato se čim prej odločite, da boste šteli vsak blok v svojih ogromnih podatkovnih centrih vzporedno s tem, kako vsi drugi udeleženci še naprej povečujejo glavno verigo blokov. Ali jih je mogoče prehiteti? Verjetno ja.

Če je vaša računalniška moč večja od 50 % moči vseh udeležencev omrežja, potem boste s 50 % verjetnostjo lahko zgradili daljšo verigo hitreje kot vsi ostali skupaj. To je teoretično možen način za prevaro blockchain z izračunom daljše verige transakcij. Potem se bodo vse transakcije v resničnem omrežju štele za neveljavne, vi pa boste zbrali vse nagrade in začeli nov mejnik v zgodovini kriptovalute, ki se imenuje "blockchain division". Nekoč je bilo zaradi napake v kodi tako pri Ethereumu.

Toda v resnici se noben podatkovni center po moči ne more primerjati z vsemi računalniki na svetu. Ena in pol milijarda Kitajcev z iciki, druga milijarda in pol lačnih Indijcev z rudarskimi kmetijami in poceni elektriko - to je ogromna računalniška moč. Nihče na svetu še ne more tekmovati z njimi sam, niti Google.

Kot da bi šel na ulico in poskušal vse ljudi na svetu prepričati, da je dolar zdaj vreden 1 rubelj, in priti pravočasno, preden te mediji razkrijejo. In če uspete prepričati vse, lahko zrušite svetovno gospodarstvo. V teoriji, ali ni mogoče? Toda v praksi iz nekega razloga nikomur ni uspelo.

Na tej verjetnosti temelji tudi blockchain. Več ko je udeležencev rudarjev, več varnosti in zaupanja v omrežje. Zato, ko je na Kitajskem pokrita še ena velika rudarska kmetija, stopnja pade. Vsi se bojijo, da je nekje na svetu obstajal zlobni genij, ki je že zbral bazen rudarjev s ~ 49% zmogljivostjo.

Zaključek

Blockchain ni strogo določen niz algoritmov. Gre za strukturo za izgradnjo lažne mreže med udeleženci, kjer nihče nikomur ne more zaupati. Med branjem se vam je verjetno večkrat porodila misel, da "lahko naredite tako in bo še bolj koristno". To pomeni, da razumete blockchain, čestitam.

Nekateri fantje na svetu so to tudi razumeli in so se želeli izboljšati ali prilagoditi za nekatere specifične naloge. Kriptovalute niso enake, čeprav jih je tudi veliko. Tukaj je kratek seznam nekaterih idej in projektov, ki so pridobili nekaj priljubljenosti zahvaljujoč ponovnemu premisleku o blockchain ideji.

Ethereum

"Ethers" je druga najbolj priljubljena beseda, ki jo slišite v novicah o kripto-hipe, takoj za Bitcoin. Za navadne ljudi je to še ena kriptovaluta in način, kako narediti najbolj trendovsko stvar, imenovano ICO. Razvijalci na spletnem mestu opisujejo Ethereum kot "graditelja blockchain za vaše potrebe." Tudi to je možno, ja.

A če pokopljete še globlje, eter ni le mreža kovancev. To je ogromen globalni računalniški stroj, kjer uporabniki izvajajo kodo tujih programov (pametne pogodbe) in za vsako izvedeno vrstico prejmejo nagrado. In vse to je decentralizirano, neuničljivo in z vsemi jamstvi blockchaina.

O Ethereumu in pametnih pogodbah lahko govorimo tako dolgo, da bo dovolj za še eno takšno objavo. Zato bomo delovali v slogu vrhunskih blogerjev: če bo ta objava aktivno ponovno objavljena in retweetana ter bo do petka dobila vsaj 1500 edinstvenih ogledov, bom napisal nadaljevanje o Ethereumu in pametnih pogodbah.

Priporočena: