Od transakcie po blockchain

Blockchain, mining, proof of work, full node. Verím, že pre nového používateľa to môže byť príliš veľa informácií. Skúsme si to zhrnúť a odsledovať našu transakciu. Čo všetko sa udeje po stlačení tlačidla odoslať?

Hneď po odoslaní sa vaša transakcia rozšíri po bitcoinovej sieti. Transakcia je odoslaná prvému uzlu v sieti, ktorý ju overí a následne posunie ďalším uzlom (nodes). Tento proces sa opakuje dovtedy, kým informáciu nedostane celá bitcoinová sieť. V tejto chvíli je však transakcia stále nepotvrdená – zatiaľ nebola zahrnutá do žiadneho bloku.

Predtým, než sa dostane do blockchainu, je najprv zaradená do mempoolu, teda miesta, kde sú všetky transakcie, ktoré zatiaľ neboli spracované ťažiarmi. Tu sú zoradené podľa výšky poplatku (fees) – čím vyšší poplatok zaplatíte, tým je pravdepodobnejšie, že vaša transakcia bude spracovaná skôr.

Teraz prichádzajú na rad ťažiari (miners). Ich úlohou je vybrať z mempoolu transakcie a zostaviť nový blok. Každý ťažiar sa snaží zostaviť čo najvýhodnejší blok – logicky vyberá predovšetkým transakcie s vyššími poplatkami, pretože z nich získava priamu odmenu. Pripomínam, že blok je limitovaný veľkosťou, teda sa doň všetky transakcie nevojdú. Ostatné, nespracované transakcie si musia počkať na zaradenie do ďalšieho bloku.

Ťažiar si takto vyskladá svoj blok. Teraz prichádza na rad tá najnáročnejšia časť – proof of work. Ťažiari sa snažia nájsť správne číslo – tzv. nonce, ktoré v kombinácii s ostatnými údajmi bloku vytvorí hash, ktorý spĺňa požiadavky bitcoinovej siete. Tento proces je založený na čistej náhode – čím viac výpočtového výkonu ťažiar použije, tým má väčšiu šancu na úspech.

Keď jeden z ťažiarov konečne nájde správne riešenie, okamžite oznámi svoj nový blok celej bitcoinovej sieti. Ostatné uzly (nodes) v sieti tento blok skontrolujú. Kontrolujú, či sú všetky transakcie v bloku platné, či v nich nie je pokus o double spending (dvojitú útratu) a či hash bloku spĺňa požadované kritériá. Ak je všetko v poriadku, blok je pridaný do blockchainu a transakcie v ňom sa stávajú oficiálne potvrdené.

Tento proces – od odoslania transakcie, cez mempool, ťažbu, až po finálne potvrdenie – je srdcom bitcoinovej siete.

No čo ak v rovnakom čase dvaja ťažiari nájdu riešenie bloku? V takom prípade sa sieť na chvíľu rozdvojí – vzniknú dve verzie blockchainu, každá s iným posledným blokom. Táto situácia sa nazýva fork. Oba reťazce sú platné, ale sieť sa postupne rozhodne, ktorý z nich prežije.

Na to existuje jednoduché pravidlo – „vyhráva dlhší reťazec“. Ťažiari pokračujú v práci a keď je jeden z týchto dvoch reťazcov predĺžený o ďalší blok, stáva sa oficiálnou verziou blockchainu. Blok, ktorý nebol súčasťou víťazného reťazca, sa nazýva tzv. orphan blok (sirota) – jeho transakcie sa vrátia do mempoolu a čakajú na nové spracovanie.

V zásade môžeme povedať, že všetky transakcie sa skôr či neskôr potvrdia a zapíšu do bloku. V prípade, ak posielate alebo prijímate väčšie množstvo finančných prostriedkov, je lepšie počkať šesť blokov. Prečo práve šesť? Pretože s každým ďalším blokom sa pravdepodobnosť, že by sa transakcia mohla vrátiť späť (napríklad v dôsledku reorganizácie reťazca), exponenciálne znižuje.

Samozrejme, nemusíte takto čakať zakaždým – pri bežných platbách postačí počkať na prvé potvrdenie transakcie, teda približne 10 minút. Zdá sa vám to pridlho? Spomeňte si, ako dlho čakáte, kým vám prídu finančné prostriedky posielané z inej banky, prípadne z iného štátu (alebo dokonca iného kontinentu). V prípade Bitcoinu nezohráva vzdialenosť žiadnu rolu – všetci sme si rovní.

51 % útok

Už sme si vraveli, že bitcoinová sieť je decentralizovaná, čo znamená, že neexistuje žiadna centrálna autorita, ktorá by rozhodovala o tom, ktoré transakcie sú platné a ktoré nie. Overenie transakcií je distribuované medzi tisíce uzlov po celom svete. Aby bol nový blok uznaný ako platný, musí ho schváliť nadpolovičná väčšina siete.

Tento systém robí Bitcoin extrémne bezpečným, pretože žiadna jednotlivá osoba alebo organizácia nemôže len tak svojvoľne meniť pravidlá alebo falšovať transakcie. Existuje však hypotetická hrozba, ktorá sa nazýva 51 % útok.

51 % útok nastane vtedy, keď jedna osoba alebo skupina ťažiarov získa kontrolu nad viac ako polovicou výpočtovej sily (hash rate) bitcoinovej siete. Ak by sa to stalo, táto osoba by teoreticky mohla manipulovať sieťou:

  • útočník by mohol zabrániť určitým transakciám, aby sa dostali do nových blokov, čím by spôsobil cenzúru transakcií,
  • útočník by mohol vykonať double spend útok – mohol by vytvoriť jednu transakciu, minúť bitcoiny a potom spätne prepísať blockchain tak, aby táto transakcia nikdy neexistovala.

Napriek získaniu 51 % prevahy by útočník nemohol ukradnúť bitcoiny iným ľuďom ani meniť pravidlá v Bitcoine (napríklad limit na 21 miliónov bitcoinov).

Predstavme si to na príklade:
Útočník pošle 10 BTC na burzu. Tam si ich vymení za doláre. Medzitým tajne ťaží alternatívny reťazec blokov, kde táto transakcia neexistuje. Po výbere peňazí z burzy zverejní svoj alternatívny blockchain s novými blokmi, ktorý je dlhší ako originálny. Bitcoinová sieť podľa pravidla „najdlhšieho reťazca“ akceptuje jeho verziu blockchainu, čím sa transakcia „zmaže“. Útočník si ponechá svoje bitcoiny a zároveň už získal peniaze z burzy – podaril sa mu double spending.

Je táto hrozba reálna?

V počiatočných rokoch Bitcoinu bola táto obava oveľa väčšia, pretože sieť mala len malý výpočtový výkon a jednotlivec alebo malá skupina minerov mohla získať dominantné postavenie.

Dnes je však pravdepodobnosť úspešného 51 % útoku extrémne nízka. Dôvod je jednoduchý – ťažba Bitcoinu vyžaduje obrovské množstvo energie a špecializovaného hardvéru. Útočník by musel investovať miliardy dolárov do hardvéru a elektriny.

Aj keby útočník prebral kontrolu nad hash rate-om, full nodes by mohli odmietnuť jeho bloky, ak by sa pokúsil o podvod. V skutočnosti by sa mu oveľa viac oplatilo získať odmenu za ťažbu bitcoinov, ako riskovať všetko pre dvojitú útratu.

Bitcoin je navrhnutý tak, aby bol odolný, bezpečný a decentralizovaný. Ak by sa niekedy objavila reálna hrozba 51 % útoku, komunita by mohla rýchlo reagovať a upraviť protokol tak, aby sa takémuto scenáru zabránilo.