Na stránce Odměna za vykonanou práci jsem ti nastínil, jak zhruba probíhá těžba. Zvolil jsem analogii v podobě příběhu s trezorem. Aby to bylo srozumitelné komukoliv, musel jsem se dopustit několika významných zjednodušení. Nyní se s pomocí slavné Saturninovy „Kanceláře pro uvádění románových příběhů na pravou míru“ podíváme společně pravdě (a těžbě) přímo do očí. Do druhé ruky si vem Bitcoinový slovník, bude se ti hodit :)
Románová verze: Bitcoinová síť každých 10 minut připraví jeden trezor a všichni nerdi světa stojí kolem něj a jako zběsilí soutěží, kdo ho odemkne jako první.
Realita těžby na solo poolu (náš případ): Žádný společný trezor neexistuje. Každý miner si sestavuje svůj vlastní trezor, pardon - blok, tzv. kandidátský. Základ tohoto bloku připraví pool, ke kterému je tvůj miner připojen. V tom základu je hash posledního vytěženého bloku, časové razítko, obtížnost těžby a taky vybrané transakce z mempoolu, čekající na potvrzení. Miner si do bloku přidá vlastní transakci, obsahující adresu bitcoinové peněženky, na kterou se má poslat odměna za jeho vytěžení. Tím pádem se data uvnitř bloků různých těžařů nutně liší.
Románová verze: Nerdi se náhodným zkoušením snaží najít tu jedinou správnou číselnou kombinaci trezoru.
Realita: Tou kombinací je hash těženého bloku a neexistuje jen jeden správný výsledek. Bitcoinová síť říká „najdi hash, který začíná X nulami“. Požadovaný počet nul závisí na obtížnosti těžby. Při aktuální obtížnosti musí hash začínat 20 nulami, tedy např. nějak takto: 0000000000000000000045f3a... OK, mám připravený blok, miner spočítá jeho hash, ten nesplní požadavek sítě a co dál?
Aby mohl tvůj miner generovat pro jeden blok různé hashe, musí v něm něco měnit. A tomu něčemu se říká Nonce. Za nonci miner nejprve dosadí nulu a spočítá hash. Není na začátku požadovaný počet nul? Nevadí. Nonci hned miner nastaví na jedničku a vypočte nový hash. Díky efektu motýlích křídel (opět heslo Hash ve slovníku) i tato nepatrná změna způsobí, že se výsledný hash kompletně změní.
Miner nezkouší házet kostkou, jak se to někdy popisuje, nic takového, generování náhodných čísel by ho jen zdržovalo. Ani nepočítá žádné složité rovnice. Jeho práce je hrubá síla, tupé, ale systematické dosazování čísel do Nonce a superrychlé hashování, dokud někdo na světě netrefí hash s požadovanou hromadou úvodních nul. Pak se začíná těžit nový blok, vstupní data od poolu se změní a jedeme nanovo. Je to ještě o něco složitější, ale už teď víš víc než 99,9 % populace.
Románová verze: Trezor vydá odměnu a vzápětí se zamkne. Navždy.
Realita: Smyslem trezoru je obsah skrýt. Nikdo cizí nesmí vidět, co je uvnitř. Smyslem bitcoinového bloku a blockchainu ale je přesný opak! Je to veřejná účetní kniha, ve které si může kdokoliv prohlédnout libovolný blok, třeba i Genesis blok z roku 2009, a zkontrolovat jakoukoliv transakci v něm. Nesmí ho ale měnit.
Chceme-li se i nadále držet představy s trezorem, musel by být vybroušený z jednoho kusu dokonale čirého diamantu. Takového, přes který na všechny transakce uvnitř bude krásně vidět, ale nepůjde na ně sáhnout a měnit je. A pokud by se o to přeci jen někdo pokusil, tak aby to hned každý jednoduše poznal.
Ufff, tak to bysme měli. Co tomu řikáš?