Obsah článku
Často se v médiích setkáte s tvrzením, že těžba bitcoinů spočívá v tom, že těžaři řeší strašně složité matematické výpočty. Není to pravda.
K sepsání tohoto článku mě inspirovala skvělá kniha Vynález jménem Bitcoin, kde je vše okolo Bitcoinu perfektně popsané a vysvětlené. Já sám jsem měl ve svých bitcoinových začátcích také tendenci popisovat těžení jako složité matematické výpočty a i když jsem časem přišel na to, že to tak úplně není, teprve díky téhle knížce jsem princip pochopil úplně. Pokud chcete Bitcoin pochopit také, knížka je povinná četba (díky Braiins je česky a v el. podobě zdarma).
Těžaři bitcoinů si jen hází kostkou
Úplně zjednodušený popis těžení bitcoinu je ten, že těžaři si hází kostkou, která má pochopitelně daleko více stran než šest a jejich úkolem je hodit číslo, které je nižší než jiné předem dané číslo. Kdybychom to popsali na šestičíselné kostce, zněl by úkol pro těžaře třeba takto: „házejte kostkou tak dlouho, dokud nehodíte číslo nižší než 3“. Komu se prvnímu podaří hodit dvojku nebo jedničku, ten vyhrál a blok je vytěžen.
Možná si říkáte, na co tedy potřebují těžaři ty nadupané ASIC minery? Je to proto, aby tou kostkou dokázali házet hodně rychle hodně krát za vteřinu. Jejich kostka totiž nemá šest stran, ale 2256 nebo přibližně 1077. Tolik různých čísel (hashů) může vzniknout při použití algoritmu SHA256, který se v Bitcoinu používá (k tomu, co je to hash se dostaneme dále). Jak hodně možností to je, popisuje autor v knize Vynález jménem Bitcoin takto:
„Kdybyste tedy mohli použít celou planetu jako harddisk a uložit 1 byte do jednoho atomu, jako palivo používat hvězdy a zapisovat 1 trilion klíčů za vteřinu, potřebovali byste k uložení všech klíčů 37 oktilionů zeměkoulí a 237 miliard Sluncí, abyste dokázali napájet takovýto přístroj, a trvalo by vám to 3,6717 oktodecilionů let.“
Dokážete si tu velikost představit? Já moc ne 🙂
Co je to hash?
Libovolný vstup informací lze pomocí hashovací funkce zapsat jako řetězec písmen a číslic o pevně dané délce. Možná to znáte z některých webů, kde si stahujete software a autor vám ukazuje jeho hash, abyste si mohli zkontrolovat, že soubor nebyl cestou pozměněn. Pokud se totiž změní jeden jediný bajt, vyjde vám úplně jiný hash nemající žádnou vazbu na ten správný.
Předešlý odstavec má tento SHA256 hash: e97082a77c85adf659173bb0b539899870c315a2bc31a5459c491da8d268cc89, pokud změním první písmeno L za malé l, vyjde úplně jiný hash: f3063c14c358fc2ded7d74d0482f02e5e6f954bdfc6ffee080e442332c6eb547. Zkuste si to třeba na tomto online generátoru.
Kde koupit bitcoin?
Doporučuji používat české směnárny a burzy:
Coinmate: Přečtěte si mojí recenzi, nebo se rovnou zaregistrujte.
Anycoin: Přečtěte si mojí recenzi, nebo se rovnou zaregistrujte.
Pro anonymní nákup použijte českou aplikaci Vexl nebo bitcoinmat.
Je úplně jedno, kolik dat dáte na vstup, můžete tam dát jedno písmeno nebo soubor s filmem ve 4K a vždy dostanete shluk číslic a písmen jako v předešlém odstavci.
Celé potvrzení (vytěžení) bloku pak spočívá v tom, že na konec blockchainu připojíme další blok, jehož hash se skládá z hashe předchozího bloku, transakce a nonce. A tyto tři věci prezentuje nějaký další hash v SHA256. Jeden z těch 1077. Cože? Nonce? Co to je, zjistíte dále.
Jdeme těžit bitcoiny
Máme tedy hash předešlého bloku a seznam transakcí v bloku, který těžíme. Obě tyto informace jsou veřejné a mají je všichni těžaři. Pro zjednodušení si to představme nějak takto:
hash předešlého bloku + (transakce 1, transakce 2, transakce 3, transakce N)
Z těchto informací udělá stejný hash kdokoliv, protože vstupní data všichni vědí a mají je k dispozici. Nebylo by na tom jaksi nic složitého. Proto těžaři přidávají ještě třetí část – nonce, což je libovolné číslo, které nemá žádný význam, pouze přidává prvek náhodnosti. Každý těžař si dá jako nonce cokoliv ho napadne. Takže pak má těžař takovýto vstup:
hash předešlého bloku + (transakce 1, transakce 2, transakce 3, transakce N) + nonce
Jiný těžař má úplně jiný vstup, protože má jinou nonce.
Kdo vyhraje?
Těžař tedy ví, že má na vstupu toto:
hash předešlého bloku + (transakce 1, transakce 2, transakce 3, transakce N) + nonce
Zároveň je dané, že blok vytěží ten, kdo najde hash v nějakém předem omezeném rozsahu. To se zajistí tím, že je řečeno, že aby byl vytěžen blok, musí vyjít číslo (hash) nižší než X. Toto X se v čase mění, viz dále o obtížnosti těžby.
Udělat z výše uvedeného vstupu výstup v SHA256 je otázka zlomku sekundy. Takže těžící stroj začne chrlit jeden hash za druhým a jen ho porovnává s číslem X.
Opět výrazně zjednodušený popis pro 1 000 variant a obtížnost nastavenou na 500 (máte 50% šanci, že najdete správný hash):
- Vyšlo mi 750, je to méně než 500? – NE
- Vyšlo mi 621, je to méně než 500? – NE
- Vyšlo mi 894, je to méně než 500? – NE
- Vyšlo mi 501, je to méně než 500? – NE
- Vyšlo mi 312, je to méně než 500? – ANO
V tuto chvíli došlo k vytěžení bloku a všem ostatním v síti se hlásí, že vstup:
hash předešlého bloku + (transakce 1, transakce 2, transakce 3, transakce N) + 154879
vrací 312. Kdokoliv si to může jednoduše ověřit, protože pokud zná přesný vstup, během zlomku sekundy ví, že výsledek 312 je správně. Zbytek sítě tedy řekne, že vše sedí a jde se těžit další blok.
Opačně to nejde
Důležité je to, že ze vstupu uděláte hash během okamžiku, ale je nemožné udělat z hashe původní data. Není tedy možné, že by si těžař řekl, že vezme hash nižší, než je obtížnost a vypočte si vstup, který bude pasovat na předešlý blok.
Obtížnost těžby
V bitcoinové síti může teoreticky těžit jeden obyčejný notebook (tak asi začínal Satoshi Nakamato) a nebo tisíce specializovatných počítačů (ASICů). Z toho logicky plyne, že musí být nějak zařízeno, aby se měnila obtížnost těžby. Kdyby tam tento mechanismus nebyl, stalo by se to, že jeden počítač by těžil blok požadovaných 10 minut, ale tisíce počítačů by měli úlohu hotovou za zlomek sekundy a to nechceme. Nové bloky je třeba těžit konstantní rychlostí každých cca 10 minut. A přesně tohle zaručuje měnící se obtížnost těžby. Pokud se bloky těží moc rychle, obtížnost se zvyšuje, pokud se těží moc pomalu, obtížnost se snižuje. K úpravě obtížnosti dochází jednou za 14 dní, resp. po vytěžení 2016 bloků.
A jak se obtížnost ovládá? Úplně jednoduše, je to zmíněné už na začátku článku. Obtížnost se nastavuje jako číslo, které udává hranici – vyšší číslo je špatně, nižší je dobře. Blok vytěží ten těžař, který jako první najde hash nižší, než ono číslo.
Pokud by existovalo 1 000 možných variant a obtížnost nastavíme na 500, vyhraje ten kdo první „hodí“ číslo nižší něž 500. Pokud to chceme udělat složitější a přinutit těžaře házet kostkou vícekrát, nastavíme obtížnost na 10. Musí pak hodit jedna až devět, aby vyhráli.
Závěr
Těžaři bitcoinu opravdu neřeší žádné složité matematické funkce. Mají jen obrovskou kostku, kterou hází a snaží se hodit číslo, které je nižší, než číslo udávající obtížnost. Kdo takové číslo hodí první, dá to všem na vědomí, oni jednoduše zkontrolují, že má pravdu, blok je vytěžen, transakce potvrzeny a těžař inkasuje odměnu.
Pokud si přečtete výše zmiňovanou knížku, tak zjistíte, že Bitcoin obsahuje spousty geniálně jednoduchých věcí, které do funkčního celku neméně geniálně poskládal Satoshi Nakamoto.