Virtuálne peniaze nie sú žiaden nový nápad. Už v 80-tych a 90-tych rokoch sa objavovali akademické papiere opisujúce, ako by mohli fungovať. A pred Bitcoinom tu bolo zopár pokusov niečo implementovať (z ktorých samotný bitcoin načerpal inšpiráciu). Ale ako všetko, aj toto chcelo svoj čas, aby dozrelo. Muselo sa vyriešiť niekoľko problémov a musel prísť niekto, kto to celé zmontoval dokopy. Každopádne je bitcoin nový fenomén a my sa teraz pozrieme, ako funguje po technickej stránke.

Bitcoin je značka, ktorú dnes pozná asi každý, kto denne pracuje s internetom. Problém je, že to nie je len mena. Je to rovnomenná platforma, ktorá umožňuje výmenu bitcoinových peňazí. Z developerského hľadiska sa dá povedať, že sa hlavný doménový objekt a framework, ktorý s týmito objektami pracuje, volajú rovnako – Bitcoin. Rozdiel je vo veľkosti prvého písmena. Bitcoin s veľkým B reprezentuje framework, zatiaľ čo bitcoin s malým b znamená menu.

Ale to nie je všetko, lebo hlavná myšlienka, na ktorej bitcoin stojí (a je tak o jeden až dve úrovne abstrakcie vyššie), sa volá blockchain. Myšlienka blockchainu je, že existuje zoznam blokov, pričom každý v sebe obsahuje určité údaje. Z tých údajov je vypočítaný tzv. hash. Čo je krátky údaj, ktorý je vždy jedinečný pre údaje, z ktorých sa počíta a vstupné údaje sa nedajú z neho spätne zrátať (okrem toho má aj iné vlastnosti, ako napríklad, že malá zmena vo vstupných údajoch spôsobí veľkú zmenu v hashi a pod). Každý blok má odkaz na predchádzajúci. Ten odkaz je jednoducho to, že súčasťou informácií v bloku je hash predchádzajúceho bloku a aj tento údaj sa použije, keď sa počíta hash aktuálneho bloku. Výsledok je, že v hashi aktuálneho bloku je uložený aj hash predchádzajúceho a v hashi predchádzajúceho bloku zase hash toho pred ním, atď. Výsledok je, že je to reťaz, v ktorej ak by sa niekto pokúsil zmeniť nejaký údaj v blokoch, všetky hashe sa zmenia, a to sa dá ľahko zistiť. Práve na tejto myšlienke stojí celá bezpečnosť blockchainu. Pokus o malú zmenu sa dá ľahko detekovať a veľká zmena by znamenala prerátať celý blockchain, na čo v súčasnosti nemáme dostupnú výpočtovú kapacitu.

Toto je základný princíp blockchainu – reťaziť za sebou históriu a to tak, že ju nie je ľahké zmeniť. Každý blockchain klient si potom vie urobiť kópiu tejto histórie a ľahko si overovať, či informácie, ktoré prichádzajú od ostatných uzlov v sieti, sú v poriadku (či sa niekto nesnaží zmeniť históriu). A čo sú tie ostatné uzly?

Tu sa dostávame k tomu, čo je platforma Bitcoin. Myšlienka Bitcoinu je postavená na blockchaine, ale to nestačí. Blockchain je pre Bitcoin databáza, do ktorej sa ukladajú údaje. Tieto údaje sú potom distribuované v sieti ostatným uzlom. Bitcoin platforma je distribuovaný decentralizovaný systém. Znamená to, že všetky uzly v sieti sú si rovnocenné a neexistuje jeden riadiaci centrálny bod. Bitcoin klienti si navzájom medzi sebou vymieňajú údaje, čo sú v podstate nové bloky, ktoré sa stále pridávajú do reťaze. To pridávanie nie je také jednoduché, lebo nový blok je možné pridať len s platným hashom a ten hash podlieha určitým podmienkam. Vyhovujúci hash sa hľadá tak, že sa mení jeden údaj v bloku (ktorý je súčasťou toho bloku len práve pre tento účel), vypočíta sa hash a zistí sa, či hash spĺňa podmienku. Ak nie, údaj sa znova zmení, opäť sa vyráta hash a opäť sa overí voči podmienke. Takto sa pokračuje dovtedy, kým sa nenájde ten správny. Keďže hash funkcia je navrhnutá tak, že jej výsledok sa nedá zo vstupných údajov predpovedať, jediné čo ostáva, je hľadanie výsledku metódou pokus-omyl.

Nájdenie správneho hashu teda vyžaduje určitý čas práce a tomuto sa hovorí Proof of Work. Tento Proof of Work v podstate brzdí rýchlosť, akou sa pridávajú bloky do siete a zároveň sťažuje zmenu histórie, lebo by bolo takto nutné prepočítať všetky bloky, a to s podmienkami pre hashe, ktoré boli definované v čase vytvárania blokov.

Keď sa podarí uzlu správny hash vyrátať, vyšle do siete požiadavku na priradenie bloku do blockchainu. To znamená, že sieť musí rozhodnúť, či je hash správne vypočítaný a či blok môže byť zaradený. Keďže je to decentralizovaná sieť, tak sa na tom musia zhodnúť ostatné uzly, ale keďže tých je veľmi veľa, stačí určitý počet. Schopnosť siete dohodnúť sa na nejakom fakte je veľmi dôležitá, pretože takto je schopná robiť rozhodnutia bez centrálneho bodu, ktorý sa dal ovplyvniť. Samozrejme sa sieť musí vedieť vysporiadať aj s tým, že sa nejaké uzly budú snažiť podvádzať (alebo sa správajú chybne). Problém vykonať správnu dohodu v sieti, kde sa vyskytujú aj takéto uzly sa nazýva problém Byzanských generálov a je za tým množstvo teórie. Ale kľúčové je, že ak je v sieti dostatočný počet uzlov, tak sa vedia vysporiadať aj s tými, ktoré fungujú zle.

Takže máme blokchain ako databázu údajov a Bitcoin ako platformu, ktorá vie tieto údaje distribuovať a meniť v decentralizovanej sieti. A čo bitcoin ako mena? Tá je  tým kľúčovým údajom v blokoch. Presnejšie povedané, sú to transakcie v bitcoin mene, ktoré sú zapísané v blokoch. Každý účastník bitcoin siete má svoju peňaženku a v nej má … transakcie. Presnejšie, má tam tie transakcie, ktoré ešte nie sú minuté. Ale poďme pekne po poriadku.

Transakcia je (zjednodušene povedané) informácia, že sa peniaze presúvajú z jednej do druhej peňaženky (alebo do viacerých). Každá peňaženka má svoju jedinečnú adresu (v podstate zhluk písmen a číslic), a preto je v podstate transakcia záznam odosielajúcej, prijímajúcej adresy a množstva bitcoinov. Takto sa zapíše nejaké množstvo transakcií do bloku, a keď sa dosiahne definovaná veľkosť bloku, začne sa hľadať správny hash. Keď sa ten nájde, odošle sa blok do siete a tam ho overí určité množstvo uzlov a zaradí do blockchainu. V tom momente v podstate peniaze prešli z jednej adresy na druhú, aj keď reálne sa žiadne peniaze nepresunuli. Ak je potrebné určiť, koľko je v danej peňaženke peňazí, tak sa jednoducho zrátajú hodnoty transakcií, ktoré posielali peniaze na danú adresu, pričom sa už neuvažujú tie, ktorých hodnota bola poslaná opäť niekde inde. Teda výsledná suma je súčtom výstupov neminutých transakcií.

To je síce mechanizmus presunu peňazí, ale ako sa v sieti tie peniaze objavili? Odpoveď je, že keď sa uzlu podarí vypočítať správny hash a jeho blok zaradiť do blockchainu, tak za to dostane určitú odmenu v bitcoinoch. To je to takzvané „ťaženie bitcoinu“. Ide o výpočet špecifického hashu pre transakcie, ktorými si presúvajú iné uzly v sieti peniaze. Suma, ktorú blok dostane, je presne daná a s rastúcim počtom blokov v sieti táto suma klesá. Cieľom je, aby v sieti existovalo len konečné množstvo peňazí.

Zároveň je nutné motivovať uzly v sieti, aby overovali cudzie bloky (blok musí byť overený určitým počtom uzlov a overenie znamená tiež určitú prácu procesora). Preto uzol, ktorý vykoná overenie, dostane určitý podiel z transakcie. Aký podiel to bude určuje ten, kto transakciu vytvára, pričom čím vyšší podiel dá, tým je pravdepodobnejšie, že jeho transakcia bude spracovaná rýchlejšie.

Takže máme tri úrovne: blockchain databázu, ktorá uchováva históriu. Pre menu bitcoin je to ako verejná účtovná kniha so záznamami transakcií. Potom je tu platforma Bitcoin, čo je decentralizovaná sieť ktorá sa stará o svoj blockchain, aby sa rozširoval a nemohol byť zneužitý. A na záver je tu mena bitcoin, ktorá existuje len na základe záznamov o vytváraní a o overovanie ktorých sa stará platforma Bitcoin. Tento článok je naozaj len ľahký úvod do technického riešenia bitcoinu. Mnohých tém sme sa dotkli len okrajovo alebo sme ich vynechali úplne. Dnes už existuje mnoho alternatívnych mien, ktoré sa v rôznych technických aspektoch líšia od bitcoinu ako aj celkovo iných platforiem, ktoré síce používajú blockchain, ale ich hlavným údajom nie je mena (najznámejší je asi Ethereum). Možno sa k tejto téme vrátim niekedy v budúcnosti a rozoberiem podrobnejšie.