Blockchain

Blockchain je v informatike špeciálny druh distribuovanej decentralizovanej databázy uchovávajúcej neustále sa rozširujúci počet záznamov, ktoré sú chránené proti neoprávnenému zásahu tak z vonkajšej strany, ako aj zo strany samotných uzlov peer-to-peer siete. Najčastejšou aplikáciou technológie blockchainu je použitie ako účtovná kniha kryptomien (napr. bitcoinu), ktorá uchováva transakcie vykonané užívateľmi. Kombinácia s kryptografiou umožňuje zaistiť atomicitu operácií a zabrániť neoprávneným transakciám.

Základný princíp

Implementácia blockchainu pozostáva z dvoch druhov záznamov: transakcií a blokov. Transakcie predstavujú dáta vložené do databázy užívateľovi, bloky potom záznamy potvrdzujúce, kedy a ako bola konkrétna transakcia pridaná do databázy blockchainu. Transakcie sú vytvárané užívateľmi, ktorí systém používajú ako databázu (v prípade kryptomeny ako účtovnú knihu). Bloky oproti tomu vytvárajú ťažiari, ktorí používajú softvér či hardvér vytvorený špecificky na vytváranie blokov.
Transakcie vytvorené užívateľmi sú voľne odovzdávané od uzla k uzlu podľa toho, kto má práve s kým naviazané spojenie. Definícia validnej transakcie sa líši v závislosti na štandarde, ktorý implementuje väčšina uzlov v sieti. V prípade väčšiny kryptomien je za validnú transakciu väčšinou považovaná taká, ktorá má správny elektronický podpis užívateľa, míňa peniaze z existujúcej peňaženky, ku ktorej užívateľ podpisom preukazuje vlastníctvo, a zároveň spĺňa niekoľko ďalších podmienok, ako napríklad patričný honorár (fee) pre ťažiara alebo uplynutie dostatočnej doby od chvíle, kedy bola zadaná posledná transakcie s týmto kusom meny.
Ťažobné spoločnosti sa potom snažia vytvoriť blok, ktorý potvrdzuje a začleňuje tieto transakcie do blockchainu. V kryptomenách založených na Bitcoine sú ťažiari motivovaní k ťaženiu dvomi druhmi odmien: preddefinovanou odmenou za vyťažený blok a transakčnými poplatkami či honorármi (fee), ktoré sú vyplatené ktorémukoľvek ťažiarovi, ktorý správne potvrdí transakciu.

Decentralizácia

Každý uzol v sieti decentralizovanej kryptomeny obsahuje kompletnú či čiastočnú kópiu blockchainu. Tým je vyriešený problém centralizovanej databázy, ktorú používajú ostatné technológie, ako napríklad bankovníctvo alebo PayPal. Kým bežná účtovná kniha iba pasívne zaznamenáva presuny peňazí, bankových poukážok či príkazov na úhradu, ktoré existujú nezávisle na tejto knihe, v prípade kryptomeny sú jednotky meny a blockchain pevne spojené. Blockchain možno v týchto prípadoch považovať za jediné miesto, kde jednotky kryptomeny existujú vo forme neutrateného súčtu všetkých transakcií.
Transakcie vo forme záznamov platca X posiela Y jednotiek meny príjemcovi Z sú propagované celou sieťou použitím softvérových prostriedkov a asymetrickej kryptografie. Ktorýkoľvek uzol siete je schopný túto transakciu overiť, pridať do kópie svojej účtovnej knihy a preposlať tieto prírastky ostatným uzlom.

Riešenie problému viacnásobného míňania

V decentralizovaných distribuovaných databázach vzniká nový druh problému, ktorý je v prípade klasických (centralizovaných) databáz riešený atomicitou systémových operácií. Ide o takzvaný double spending problém, slovensky tiež problém dvojutrácania, viacutrácania alebo problém viacnásobného míňania. Tento problém bránil prakticky do vzniku bitcoinu vytvoreniu distribuovaných databáz.
Problém vzniká, ak dva alebo viac uzlov v topologicky vzdialených bodoch siete v rovnaký okamih zadajú transakciu prikazujúcu presun peňazí z rovnakého účtu tak, že vo výslednej sume je presúvaná suma väčšia ako zostatok. Stav, kedy by po určitom čase došlo k propagácii všetkých zadaných transakcií, by viedol k nejednotnosti zostatkov na účtoch. Tie by sa tak mohli dostať do mínusu, čo by v konečnom dôsledku viedlo k strate dôvery v sieť a jej zánik.
Rôzne kryptomeny sa s týmto problémom vyrovnávajú rôznymi spôsobmi, najčastejšie použitím systémov decentralizovaných časových pečiatok a hlasovanie o poradí transakcií založených na algoritmoch proof of work (hlasovanie na základe preukázaného vlastníctva výpočtového výkonu) či proof of stake (hlasovanie na základe preukázania vlastníctva podielu kryptomeny).
V oboch prípadoch môže dôjsť k takzvanému 51% útoku, kedy vlastník viac ako 51% kryptomeny alebo výpočtového výkonu získava možnosť falšovať či upravovať transakcie. Väčšina implementácií kryptomeny tak obsahuje ešte ďalšie, dodatočné poistky, ktoré majú viesť k diverzifikácii siete ťažiarov (memory hard hashovacie algoritmy), aby týmto útokom bolo možné predchádzať.

Block time

Pojem block time predstavuje parameter udávajúci dobu medzi dvoma vydanými blokmi. Väčšina kryptomien používa block time v rade desiatok minút (10 minút v prípade bitcoinu), poslednou dobou sa ale objavujú nové systémy, ktoré túto dobu znižujú na rádovo desiatky sekúnd. Príkladom takéhoto systému je napr. Ethereum, ktoré sa pohybuje medzi 10-20 sekundami.
Hodnota block time hrá dôležitú úlohu pri overovaní validity transakcií, pretože väčšina systémov považuje transakciu kvôli problému viacnásobného míňania za validnú až po niekoľkých ďalších blokoch (v prípade bitcoinu ich je šesť), do ktorých je transakcia začlenená.
Vo všeobecnosti sa teda dá povedať, že čím kratší čas medzi vydaním dvoch blokov, tým rýchlejšie môžu prebiehať dôveryhodné obchodné transakcie.