Princip těžby Bitcoinu (teorie II.)
Je trochu složitější (a o tom to je), pojďme se na podívat co možná nejlidštěji.
Těžení Bitcoinů spočívá v řešení kryprografického hašovacího problému* nad posledními nepotvrzenými transakcemi bitcoinové sítě. Samotná funkce zpracovává určený blok nepotvrzených transakcí sítě a snaží se jej převést na celé velké číslo. Jakmile je toto vypočtené číslo nižší než číslo vyjadřující tzv. aktuální složitost bitcoinové sítě (viz dále), je úloha vyřešena a miner získá odměnu.
Poznámka: je to velmi pěkné vyjádření, ale ruku na srdce, nejde o nic jiného než o „hrubou výpočetní sílu“, kdy software prostě pořád dokola zkouší všechny možné kombinace, dokud se nenajde řešení. Asi podobně, jako když zapomenete kód na zámku od kola.
Samotný HASH slouží jako identifikace bloku a současně chrání konzistenci databáze transakcí (viz blockchain). Bloky transakcí se sdružují do řetězu (chain), kdy každý blok obsahuje informaci o integritě bloku předchozího a logicky se takto lze dopracovat až k úplně prvnímu bloku.
Celý proces si ale můžeme si představit obráceně – každou vteřinu přibývají v síti další a další transakce, které se postupně šíří sítí z uzlu na uzel všemi směry. V tom stejném okamžiku tak mnoho počítačů (resp. klientů) nese informaci o nepotvrzených transakcích, ale tato informace není stejná, každý počítač může obsahovat v daném čase různé záznamy (právě proto, že je síť decentralizovaná a transakce nejde přes jeden jediný hlavní počítač jako v bance). Jenže někdo musí rozhodnout, které transakce aktuálně vytvoří nový blok.
Každý miner v síti tak dostane trochu jiný blok nepotvrzených transakcí (třeba jen v jiném pořadí) a ve své podstatě začne závod o to, kdo najde jako první řešení a připíše si za odměnu za vytvoření bloku. Odměnu v bloku poznáte snadno – kromě toho, že nemá žádné vstupy je v blockchainu označena jako „No Inputs (Newly Generated Coins)“.
* hašovací funkce je matematický algoritmus pro převod vstupních dat do relativně malého čísla, tzv. signatury neboli hashe.
Například BTC blok #323235 vypadá takto:
728 transakcí v objemu 10,372.92164301 BTC (toho času asi $3,9 mil.)
Hash : 00000000000000001baea41166062e756491754802c38e0f020a47f49789efea
Nové Bitcoiny se s nalezením bloku zrodily – byly vydány – emitovány.
Kryptoměny dále ještě musí dozrát, lidově také odmaturovat (viz Immature), ale o tom až později.
V okamžiku, kdy první z těžařů najde řešení, blok, předá informaci do sítě, hledání tohoto bloku se zastaví a ostatní mineři nyní musí tento blok potvrdit. Mezitím se ale zase jede od začátku – počítá se další blok.
Všichni ostatní mineři mají v tuto chvíli smůlu – odměnu dostane vždy jen první těžař, který daný blok nalezl!
Naštěstí existují tzv. pooly, díky kterým je distribuce výrazně lidštější (viz – Těžíme v poolu.)
Problematika hashování
Autor/ři Bitcoinu velmi dobře věděli, že musí najít takový algoritmus, který by umožnil nalezení bloku v relativně stabilním čase – u Bitcoinu je to například 10 minut v souladu s časovým plánem distribuce konečného množství mincí.
Algoritmus tedy musí dosahovat určité složitosti, aby nebylo možno najít řešení příliš brzo a nalezení bloku neproběhlo najednou na více či mnoha strojích, ale současně aby potvrzování transakcí netrvalo příliš dlouho. Zároveň museli očekávat, že výpočetní výkon se v čase bude měnit – to, co zvládly procesory dříve za hodinu, dnes specializovaná zařízení zvládnou za vteřiny.
Pro tyto účely byla použita kryptografická hashovací funkce SHA-256 a kvůli změnám výpočetního výkonu sítě řešená úloha dále počítá s tzv. složitostí bitcoinové sítě.
Funkce SHA-256 obecně dokáže zašifrovat libovolně dlouhý vstupní text na 256 bitový hash, který lze znázornit jako text o 64 hexadecimálních písmenech. Funkce je ale natolik složitá, že nepatrná změna ve vstupních datech způsobí vygenerování úplně jiného výstupu. Současně se vyznačuje jednosměrností – je tedy jednoduché spočítat hash, ale není možno z hashe odvodit původní vstup.
Každý z minerů (nebo poolu, který práci pak dále přerozděluje), tedy dostane řetězec – blok s neověřenými transakcemi a vyloženě HRUBOU SILOU zkouší všechny kombinace „zakódování“ tohoto řetězce. V praxi to vypadá tak, že na konec bloku zkouší přidávat celá čísla až je výsledný hash ve „správném tvaru“ – má odpovídající POČET NUL na začátku – zase podle pravidla složitosti sítě.
Což jsme viděli třeba u výše uvedeného bloku #323235:
Hash byl 00000000000000001baea41166062e756491754802c38e0f020a47f49789efea
Složitost se v Bitcoinové síti přepočítává asi každých 14 dní – zhruba po 2016 nových blocích, které jsou průměrně uvolňovány každých deset minut. Většinou se složitost zvýší, neboť přibývá těžařů a současně jsou k dispozici stáje výkonnější stroje, nicméně může dojít, a již mnohokráte došlo, zejména na počátku, k jejímu snížení. Složitost (diff, difficulty) je vyjádřena číslem a přímo ovlivňuje náročnost nalezení nového bloku.
Dnes je například složitost BTC 34,661,425,923.9769 a výsledný hash musí mít na počátku šestnáct nul: 00000000000000001FB893000000000000000000000000000000000000000000
Bezpečnost SHA-2 a SHA-256
Kryptografické hashovací funkce se vyznačují bezkolizností a jednosměrností.
Jednosměrnost znamená, že z původního vstupu dokážeme jednoduše spočítat výstupní hashový kód, ale obráceně je to „výpočetně nerealizovatelné“.
Bezkoliznost znamená, že funkce je konstruována tak, že není možno nalézt žádné dva dokumenty, které vedou na stejný hash. Respektive není to opět „výpočetně realizovatelné“. Jinak bychom nalezli tzv. kolizi. Ta je dána skutečností, že možných vstupů je obrovské množství a hashovacích kódů jen omezený počet, zejména u starších hashovacích funkcí. Například u dodnes snad nejpoužívanější hashovací funkce MD5 existuje pouze 2128 kódů a tedy existuje i nepřeberné množství kolizí. Proto byly tyto funkce nahrazeny modernějšími, kryptografickými hashovacími funkcemi jako je SHA-2 – v případě BTC je pak využívána varianta SHA-256 (256 bitů).
Co chci ale říci – jelikož doposud nikdo nepřišel s důkazem kolize u funkcí typu SHA-2 a ani nepřišel s algoritmem, jak se k této kolize „propočítat“, je tato rodina hashovacích funkcí v současném světě považována za bezpečnou.
Pokračovat na:
Peněženky, klienti, adresy (teorie III.)
Sumář: Princip těžby Bitcoinu – návody | Základní principy těžby Bitcoinu a jiných digitálních měn. BTC návody pro začátečníky, praktické postupy, hashování, pooly, bezpečnost, SHA-256.
Poznámka autora: Tento příspěvek je převzat z vlastní e-knihy „Velká kniha kryptoměn“ vydané v listopadu 2014. Žádné záruky jakéhokoliv typu nejsou poskytovány. Autor neručí za správnost a aktuálnost údajů. Autor nenese žádnou odpovědnost za webové stránky, na které vedou odkazy, návštěva těchto serverů je na vlastní nebezpečí. Příručka vyjadřuje pouze osobní zkušenost autora. Jakákoliv účast na těžbě, směně nebo nákupu kryptoměn je na vlastní riziko. Texty, obrázky apod. požívají ochrany autorského práva, obchodní značky nebo podobné. Každá, i dílčí, reprodukce, zpracování či použití vyžaduje předběžný výslovný písemný souhlas autora. Veškeré obchodní značky a ochranné známky jmenované v této publikaci, které jsou případně chráněny pro třetí strany, podléhají v neomezeném rozsahu ustanovením aktuálně platného práva upravujícího identifikační označení a vlastnickým právům aktuálně registrovaných vlastníků.
1 odpověď
[…] Princip těžení Bitcoinu (teorie II.) […]