Denník N

Čo je to Blockchain alebo ako funguje technológia budúcnosti

Blockchain je možno prvá technológia ktorá nás bude spájať bližšie než nás spojil internet ako taký. Prvý krát ako ľudstvo vďaka nej budeme konať a existovať spoločne v reálnom čase ako jedna kolektívna myseľ s obrovským potenciálom spoločne pracovať na tých najpodstatnejších veciach, našej budúcnosti ako spoločnosti a budúcnosti našej planéty.

Tento članok som prevzal z môjho súkromného blogu. Pre celkom veľkú čítanosť a záujem v odbornejších facebookových skupinách som sa rozhodol ho zdieľať so širšou verejnosťou, keďže táto téma nás v nasledujúcich rokoch ovplyvní všetkých. V poslednej dobe ma téma okolo kryptomien zaujala o niečo viac ako je u mňa obvyklé(nespím lebo večne čumím na graf v Coinbase) z čoho vznikol aj minulý článok ako začať s nákupom kryptomien z pohľadu začiatočníka pre začiatočníkov s cieľom ušetriť nejaký ten čas googlenia „How to buy cryptocurrencies“. Keďže mám rozum a snažím sa ho raz za čas oprášiť a netlačiť peniaze do niečoho čomu nerozumiem, spravil som si menší-väčší prieskum a začal som hĺtať  článok za článkom, dokumentáciu za dokumentáciou a video za videom aby som zistil čo vlastne Ethereum je alebo čo je Bitcoin a ako to funguje až som sa dostal k niečomu čo sa volá Blockchain. Ak to číta programátor, developer alebo iné IT – or/er tak určite ste to slovo museli aspoň raz počuť.

Sranda je, že každý a jeden autor alebo speaker bol z toho úplne vyhajpovaný, kecali o tom traderi v diskusiách, to slovo padlo aspoň desať krát za 5 minút diskusie k nejakej kryptomene. Pri čítaní o Ethereu či už offical docsov alebo zasa len blogov ju každý spomínal a ja som mal stále väčší a väčší pocit že mi tu niečo uniká a to sú samotné základy tejto témy. Stalo sa to doslova buzzwordom(termín pre populárnu tému) okolo mňa, bezo mňa. Nedalo mi to pokoja a preto som sa rozhodol do toho ponoriť hlbšie a zistiť o čo sa jedná.

A na čo som prišiel?

Stále sa necítim 100% kompetentný o tom točiť prednášky ale úplne ma to nadchlo preto som sa rozhodol sharovať túto múdrosť s ľudom a spracovať o tom s pomocou zdrojov blogový príspevok.

„Každý problém má své řešení, které je prosté, jasné a mylné.“ – H. L. Mencken

Čo to teda je a prečo to potrebujeme?

Blockchain je možno prvá technológia ktorá nás bude spájať bližšie než nás spojil internet ako taký. Prvý krát ako ľudstvo vďaka nej budeme konať a existovať spoločne v reálnom čase ako jedna kolektívna myseľ s obrovským potenciálom spoločne pracovať na tých najpodstatnejších veciach, našej budúcnosti ako spoločnosti a budúcnosti našej planéty.

Začnem prostým a čisto hypotetickým príkladom z bežného sveta. Predstavte si že ste vysokoškolák ktorý po spoločensky náročnejšej noci zistil že čistou náhodou minul peniaze čo mu dali rodičia na vifonky. Tak zdvihne telefón a zavolá domov „ocooo?? hejže mi máš požičať 20€“. On odpovie „samozrejme synu!“. Čo spraví teda otec? Otvorí internetbanking a obrazne povedané, povie systému „pošli 20€ na Ferkov účet“. Systém otvorí nejaký ten register alebo databázu, pozrie či má otec dostatok prostriedkov na účte a spracuje požiadavku. Ferkovi sa pripíšu na účet a hotovo. Ale čo sa práve stalo?
Ferko a otec dôverovali banke v ktorej majú uložené peniaze že správne spracuje ich požiadavku a odošle správnu čiastku na správny účet. Nehýbalo sa žiadnymi ozajstnými papierikmi. Všetko, čo bolo potrebné, bol zápis do registra. Presnejšie, záznam v registri, ktorý ani Ferko ani otec reálne nemá pod kontrolou ani nevlastní.
A tu je práve ten problém.

Naša dôvera jeden k druhému závisí na tretích stranách ktoré sa nám ju snažia sprostredkovať.

Po celé desaťročia sme závyslí od týchto prostredníkov aby sme zabezpečili dôveru medzi sebou. Možno sa pýtate, čo je na tom zlé?
Častokrát jedna alebo malý počet organizácii ovláda také množstvo dát že stačí že len jeden z nich padne úmyselne alebo neúmyselne a vo svete zavládne chaos.
Tu sa môžeme vrátiť k príkladu s otcom, synom a účtovnou knihou ovládanou bankou.

  • Čo ak účtovná kniha v ktorej boli všetky záznami zhorí?
  • Čo ak niekto spraví chybu a zapíše namiesto 20€, 200€?
  • Čo ak niekto ju poškodí alebo spraví chybu úmyselne?

Čo ak existuje a najmä funguje systém ktorý by zabezpečil tento prevod prostriedkov bez potreby bánk?

Pre odpoveď musíme položiť trocha lepšiu otázku. Čo vlastne je prevod peňazí? Len záznam v registri. Teda lepšou otázkou je – je možnosť spravovať vlastnú účtovnú knihu/register medzi nami, namiesto toho, aby to robil niekto za nás?

Týmto riešením je Blockchain. V skratke to môžeme popísať ako metódu spravovania registra medzi účastníkmi bez závislosti na tretích stranách, resp. niekom kto by ju spravoval za nás.

 

Ako to teda funguje?

Podmienkou fungovania tejto metódy je že musia existovať minimálne traja účastníci ktorým sa nepáči závislosť na niekom inom. Len vtedy môže takáto skupina spravovať svoj register sama.

Uvedieme si príklad. Vezmime si desiatich jednotlivcov ktorí usúdili že kašlú na banky a budú si spravovať účtovnú knihu či register sami. Na základe vzájomnej dohody, všetci majú informácie o účte každého jednotlivca bez toho aby poznali identitu jeden druhého.

blockchain_infog_1

1. Prázdna zložka

Každý z nich má na začiatku prázdnu zložku. Postupne každý bude ukladať do tejto zložky stránky ktoré budú obsahovať  záznam o transakciách.

2. Transakcia

Každý sedí na svojom mieste, s prázdnou stránkou pred sebou a s perom v ruke. Každý z nich je pripravený zaznamenať akúkoľvek transakciu aká sa v systéme vyskytne.
Zrazu jeden z nich, nazvime ho číslo #8 chce poslať 10€ číslu #4.
Pre vykonanie transakcie číslo #8 každému oznámi, „Chcem vykonať transakciu vo výške 10€ číslu #4, všetci si to zaznamenajte do svojich stránok.“
Každý si najprv preverí či číslo #8 či má na svojom účte dostatok prostriedkov na poslanie sumy 10€. Ak áno, každý si zaznamená záznam o transakcii do svojich prázdnych stránok. Vtedy je transakcia vykonaná.

blockchain_infog_2

3. Ďalšie transakcie

Ako plynie čas, každý z jednotlivcov v skupine cíti potrebu vykonávať transakcie. Po každý raz keď chcú vykonať transakciu, musia ju všetkým oznámiť. Hneď ako to oznámi a ostatný ho počujú, každý z nich vykoná záznam vo svojej stránke.
Takto to pokračuje až každému dôjde voľné miesto na stránke. Za predpokladu, že na jednu stránku sa vojde len desať záznamov, hneď ako je desiaty záznam zapísaný, každému z nich dôjde voľné miesto. To je čas na zapečatenie a založenie papiera do zložky ktorá bola spomínaná v prvom kroku.

4. Založenie plnej stránky

V tomto momente keďže máme zapísanú celú stránku, potrebujeme ju založiť a zapečatiť. Skôr než ju založíme, potebujeme ju zapečatiť unikátnym kľúčom na ktorom sa dohodnú všetci v skupine. Zapečatením sa uisťujeme že raz keď stránka bola zapečatená a založená, nikto už nemôže robiť na nej žiadne zmeny ani nijako zasahovať do jej obsahu ani dnes, ani zajtra, nikdy. Raz keď je uložená v zložke, navždy v nej ostane – zapečatená. Zároveň ak každý v skupine dôveruje zapečatenej stránke, dôveruje aj jej obsahu.
A práve toto je jadrom celej tejto metódy.
(Takéto zapečatenie stránky sa v reálnom svete volá „Mining„)

Zapečatenie stránky

Než sa dostaneme k pečateniu, najprv sa musíme naučiť čo to je a ako to funguje. Nazvyme to spolu „čarostroj“.

Predsravte si čarovnú mašinku čarostroj do ktorej vložíte „niečo“ a z druhej strany vypadne „niečo iné“. Tento čarostroj (v reálnom svete kryptografická funkcia alebo Hash Function) má svoj vstup a výstup. Zľava niečo vložíme, sprava niečo vypadne.
Povedzme že do tohto stroja vložíme číslo 4 a z druhej strany vypadne ‚dcbea‘.

blockchain_infog_3
Ako tento stroj spravil z čísla 4 túto hatlaninu? No to nikto nevie. Navyše podľa toho ‚dcbea‘ nieje možné spätne povedať, že pôvodne to bolo číslo 4. Ak by ste vložili do čarostroja späť ‚dcbea‘ nikdy vám nevráti číslo 4. Pokiaľ ale vložíte číslo 4, vždy vám vráti ‚dcbea‘.
Poďme skúsiť iné číslo, napríklad 26. Čarostroj nám vypľul ’94c8e‘. Takže výstup môže obsahovať aj číslice.
Teraz to prichádza tá zložitejšia časť. Aké slovo alebo číslo by som mal vložiť do čarostroja aby mi na druhej strane vyšlo slovo začínajúce sa troma nulami? Napríklad, 000ab alebo 00098 alebo 000fa.

blockchain_infog_4

Vlastnosti tohoto čarostroja (kryptografickej funkcie) neumožňujú vopred vypočítať čo má byť vložené aby sme dostali predpokladaný výstup. Ale ako pomocou takéhoto stroja zistíme slovo začínajúce troma nulami?
Môžeme skúsiť metódu, ktorou vložíme postupne všetky čísla vo vesmíre až kým nedostaneme očakávaný výstup. Optimisticky povedané, po niekoľkých tisícoch pokusov by sme nakoniec dostali očakávaný výstup.
Je extrémne náročné až nemožné vypočítať pomocou výstupu, vstup. Naopak, je ale veľmi jednoduché overiť či vopred daný vstup určil očakávaný výstup čo je najdôležitejšou vlastnosťou čarostroja (kryptografickej funkcie).

 

Ako ale funguje spomínané zapečatenie stránky?

Na zapečatenie stránky použijeme náš čarostroj pomocou ktorého vygenerujeme pečať pre našu stránku.

Predstavme si, že vám dám namiesto jednej až dve zložky. Prvá zložka obsahuje číslo 20893. Potom vás požiadam, „Dokážeš zistiť číslo, ktoré po pričítaní k tomuto číslu z prvej zložky a vložení do čarostroja dá slovo začínajúce troma nulami?“

blockchain_infog_5

Táto situácia je rovnaká ako z predošlého príkladu a už vieme že je jediná cesta pre vypočítanie takéhoto čísla je vyskúšanie postupne všetkých čísel vo vesmíre.

Po niekoľkých tisícoch pokusov určíme číslo 21191, ktoré po pričítaní čísla z prvej zložky (20893 + 21191 = 42084) a vložením do čarostroja určí slovo ktoré sme očakávali.

blockchain_infog_6

V tomto prípade toto číslo 21191 sa stane pečaťou pre číslo stránky 20893. Predpokladajme, že na stránke je vytlačené číslo 20893. Pre konečné zapečatenie označíme túto stránku pečaťou 21191. Hneď ako je pečať s číslom 21191 na stránke, stránka je zapečatená a už nikdy nemôže byť nijako zmenená ani nikdy už nemôže byť v nijakom prípade ovplyvnený jej obsah.

blockchain_infog_7

Toto číslo pečate je v realite známe ako „Proof of work“, v preklade, Dôkaz práce, čo dokazuje, že bolo vynaložené úsilie na jeho výpočet.

Ak by chcel ktokoľvek overiť či obsah stránky bol zmenený, jediné čo by potreboval spraviť je spočítať číslo stránky a číslo pečate, vložiť ho do čarostroja a ak vráti slovo ktoré začína troma nulami, obsah bol nezmenený. Pokiaľ ale nevráti očakávané slovo, strana sa zahodí pretože jej obsah nieje dôverihodný.

 

Konečne je stránka zapečatená

Takže v skratke ešte raz, na zapečatenie a založenie stránky ktorá obsahuje záznam o transakcii v skupine musíme zistiť číslo ktoré po sčítaní s číslom stránky a vložením do čarostroja vráti ako výstup ‚slovo‘ začínajúce troma nulami.

Treba mať ale na vedomí, že kryptografickú funkciu nazývam čarostrojom a výstup z nej slovom schválne aby vysvetlenie celej metódy nebolo zbytočne zložitejšie ako je potrebné. 

Teraz sa vrátime trocha späť. Máme dokončenú poslednú transakciu a viac sa nám ich na stranu nezmestí. Hneď ako všetci v skupine zapíšu poslednú transakciu,okamžite všetci v skupine začnú s výpočtom čísla pre zapečatenie. Prvý, kto zistí číslo pre zapečatenie strany, oznámi ho všetkým ostatným v skupine. Okamžite po oznámení čísla, všetci overia či číslo sedí jeho vložením do čarostroja. Pokiaľ je všetko v poriadku, všetci si stránku založia do zložky.

Povedzme ale že niekto v skupine oznámi že výpočet nesedí. Je to neobvyklá situácia ktorej dôvody môžu byť:

  • dotyčný prepočul niektorú transakciu ktorá bola v skupine oznámená
  • dotyčný sa pomýlil pri zapisovaní transakcie ktorá bola v skupine oznámená
  • dotyčný sa pokúsil podvádzať pri zapisovaní transakcie alebo to niekto spravil zaňho

Je jedno aký bol dôvod, dotyčný ma len jedinú možnosť. Vyhodiť stránku a nahradiť ju kópiou stránky niekoho iného v skupine tak, aby ju mohol založiť do svojej zložky. Pokiaľ nezaloží stránku do zložky, nemôže pokračovať v zapisovaní ďalších transakcií, tým pádom nemôže byť viac súčasťou skupiny.

 

Načo by niekto míňal svoje prostriedky na výpočet niečoho, čo niekto môže v skupine vypočítať zaňho, zatiaľ čo on si počká na oznámenie výsledku?

Tu je potreba trocha motivácie. Každý kto je súčasťou skupiny, Blochchain-u, má nárok na odmenu. Každý kto ako prvý zistí číslo pečate, je odmenený za jeho úsilie(výpočetná sila CPU a spotreba elektriny). V jednoduchom príklade, predstavte si že číslo #5 zo skupiny ako prvý vypočítal číslo pečate a za jeho úsilie dostal odmenu 1€, ktoré proste vzniklo z ničoho. Inak povedané, číslu 5 sa navýši suma na jeho účte bez toho aby ubralo z kohokoľvek účtu v skupine.
V tomto momente vznikol Bitcoin. Bola to prvá mena ktorá bola posielaná skrze Blockchain. Čím viac ľudí začalo v Blockchain-e fungovať a vlastniť Bitcoin, tým jeho hodnota stúpala, tým pádom viac ľudí chcelo Bitcoin vlastniť a tým viac Bitcoin rástol na hodnote a tak ďalej a tak ďalej.

Stránku ktorú som spomínal na začiatku, zoznam transakcií, si teraz môžeme predstaviť ako časť reťaze(anglicky Chain) a zložky do ktorých sa stránky zapečatené zakladali ako bloky (anglicky Blocks), teda logicky nám z toho vyplinie že je to reťazec blokov čiže – Blockchain. 

A teraz všetci viete, čo to je a ako funguje Blockchain.

Nie všetko ale vyzerá tak jednoducho. V realite je to o čosi zložitejšie. Prestavte si že máte v zložke už 5 zapečatených a založených stránok. Čo ak sa vrátim späť k druhej stránke a zmením jej obsah? Číslo pečate dá okamžite všetkým vedieť že niečo nieje v poriadku a niekto zasiahol do jej obsahu.

 

Ochrana voči zásahom

Pamätáte ako na začiatku sme mali dve zložky ktorá jedna bola označená číslom 20893 a druhú sme museli vypočítať? V reálnom prípade máme zložky tri. Dve s už určenými číslami a tretia ktorá je pripravená na výpočet. Jedna obsahuje číslo stránky zoznamu transakcií, druhá obsahuje číslo predošlej zapečatenej a založenej stránky a tretia je pripravená na výpočet. Keď všetky tieto čísla spočítame a vložíme do čarostroja, čiže kryptografickej funkcie, výstup z nej musí spĺňať požadované podmienky. S týmto malým trikom máme istotu že každá stránka závisí na tej predošlej. Tým pádom, ak by chcel niekto modifikovať jej obsah, musel by zmeniť číslo pečate pri všetkých aby udržal reťazec konzistetný.

Ak ale nejaký jednotlivec sa rozhodne podvádzať a pokúsi sa modifikovať Blockchain, zložku obsahujúcu stránku so zoznamom transakcií, musel by modifikovať viacero zložiek a vypočítať číslo pečate pre všetky, čo ako už vieme je extrémne náročné. Z toho nám vyplíva že jedna entita v sieti nemôže ovplyvniť všetky ostatné. V našom prípade, jeden člen v skupiny nemôže poraziť ostatných deviatich členov. Pokiaľ sa mu predsa len podarí modifikovať Blockchain, stane sa to že sa jeho časť reťazca oddelí od existujúceho a viac nieje súčasťou pôvodného reťazca. Pravidlom je, že najdlhší reťazec je ten najdôverihodnejší.

 

Čo ak namiesto jedného z desiatich budú podvádzať šiesti z desiatich?

V tomto prípade by celý protokol padol priamo na ksicht. Tento útok je známi pod pojmom „Útok 51% (51% Attack)“. Ak majoritná časť siete sa rozhodne podvádzať, celý protokol, celá metóda stratí svoj účel a zmysel. Toto je jediná slabina siete pre ktorú môže Blockchain kolapsovať, ak sa to vôbec niekedy stane. Celý zmysel protokolu je postavený na predpoklade že majoritná časť siete bude vždy úprimná a dôverihodná.

 

Záver

Tým chápavejším a s bujnou fantáziou určite už docvaklo aký obrovský význam má existencia a tejto metódy a aký obrovský potenciál má jej implementácia do internetu budúcnosti. Ale o tom viac v ďalšom článku kde si povieme ako nám táto technológia pomôže vybudovať nový svet.

 

Zaujala ťa téma a premýšľaš kde sa dozvieš viac? Môžeš pokračovať na mojom blogu.

 

Zdroje :
https://www.blockchain.com/
https://medium.com/@lhartikk/a-blockchain-in-200-lines-of-code-963cc1cc0e54

Teraz najčítanejšie

Ondrej Sarnecký

Pôsobím ako konzultant v oblasti blockchain technológií a aktívne sa venujem klientom z rôznych oblastí, kde medzi moje zodpovednosti patrí dizajn a vývoj smart contractov a komplexná implmenetácia blockchain technológií v ich biznise. Píšem o technológiách ľudskou rečou, pre ľudskejší svet. Researcher & CTO @BlockchainSlovakia & @NeuromorphicsEu