Těžba je soutěž o přidání dalšího bloku do bitcoinové historie. Těžaři sestavují bloky z transakcí a pomocí výpočetní práce hledají výsledek, který ostatní snadno ověří. Úspěšný blok může těžaři přinést nové bitcoiny i poplatky za zařazené platby. Těžař však pravidla neurčuje: ostatní počítače v síti jeho návrh samostatně kontrolují a neplatný blok odmítnou.
Při těžbě se nevykopávají mince ukryté v počítači. Jde o to, kdo navrhne další platný blok: dávku transakcí navazující na dosavadní historii. Těžař pro svůj návrh hledá obtížně dosažitelný výsledek výpočtu. Jakmile uspěje, pošle blok ostatním. Ti zkontrolují výpočet i transakce a rozhodnou podle stejných pravidel, zda jej mohou přijmout. Nové bitcoiny jsou součástí odměny za tuto činnost, nikoli jediným smyslem těžby. Pro uživatele je důležitý především přechod od čekající platby k platbě zapsané v ověřované historii. [1] [2]
Když odešleš platbu, nejprve se šíří mezi uzly. Uzel je počítač zapojený do bitcoinové sítě; jeho mempool je místní zásobník nepotvrzených transakcí. Neexistuje jedna společná fronta, kterou by někdo všem spravoval. Těžař z dostupných transakcí sestavuje kandidátní blok a zohledňuje poplatky i omezený prostor. Jestliže jedna transakce utrácí výstup jiné dosud nepotvrzené transakce, musí v bloku nejprve uvést tuto předchozí transakci. Příkaz getblocktemplate poskytuje podklady pro sestavení bloku, včetně těchto návazností. Výběr přitom omezují i pravidla pro hmotnost bloku a náročnost kontrol podpisů. [1]
První transakce bloku se jmenuje Coinbase Transaction. Nesouvisí s účtem na stejnojmenné burze: je to zvláštní transakce, kterou si těžař připisuje povolenou odměnu. Ta se skládá z blokové subvence, tedy nově vytvořených bitcoinů, a poplatků ostatních transakcí v bloku. Poplatek je rozdíl mezi hodnotou jejich vstupů a výstupů, takže pouze převádí již existující bitcoiny. Kdyby si těžař připsal příliš mnoho, uzly celý blok odmítnou. Ani správnou odměnu nemůže hned utratit: výstup Coinbase Transaction lze použít nejdříve v bloku o 100 výšek později. [2]
Představ si losování, v němž nikdo nezná vítězný výsledek předem, ale každý jej po zveřejnění rychle pozná. Těžaři počítají hash, digitální otisk dat, který lze číst také jako velké číslo. U bitcoinového bloku musí být toto číslo menší nebo rovno hranici zvané target. Tomu říkáme Proof of Work. Konkrétně se dvakrát použije hashovací funkce SHA-256 na 80bajtovou hlavičku bloku, tedy jeho základní souhrnné údaje. Nejde o hledání odpovědi na jednotlivé platby. Mění se data pro výpočet a zkouší se, zda nový výsledek splní podmínku. [3]
ASIC je čip navržený pro konkrétní výpočetní úlohu; bitcoinový těžební ASIC opakuje dvojité SHA-256 nad variantami 80bajtové hlavičky. Jedním z měněných údajů je nonce, čtyřbajtové číslo v hlavičce. Jeho rozsah ale není nekonečný. Po vyčerpání lze změnit extra nonce, další údaj uvnitř Coinbase Transaction. Změní se tím Merkle Root, souhrnný otisk transakcí, a následně i hlavička, takže lze zkoušet nové varianty. Žádný neúspěšný pokus nepřibližuje stroj k jisté výhře. Ani deset minut není doba slíbená konkrétnímu těžaři; jde o cílový průměr celé sítě. [3]
Těžař má důvod sestavovat platné bloky, protože za odmítnutý návrh nedostane použitelnou odměnu. Jeho kontrola ale nenahrazuje kontrolu ostatních. Full Node je počítač, který sám ověřuje bitcoinová pravidla, včetně transakcí, odměny i Proof of Work. Odmítne například blok, který by vytvářel více bitcoinů, než pravidla dovolují, i kdyby do něj těžař vložil značný výpočetní výkon. Provozováním vlastního uzlu tak uživatel nemusí spoléhat na tvrzení těžaře, že je blok v pořádku. [2] [4]
Samostatný těžař může na úspěch čekat velmi dlouho. Mining Pool umožňuje rozdělit práci a příjmy mezi více účastníků. Aby provozovatel mohl odhadnout příspěvek jednotlivých strojů, přijímá i výsledky splňující snazší interní cíl. Takovému výsledku se říká share. Většina shares nestačí pro bitcoinovou síť; jen některé splní i její přísnější podmínku. Výplaty účastníkům se řídí zvoleným modelem, smluvenými podmínkami a poplatky poolu. Práce v poolu tedy těžařům nedává právo měnit pravidla Bitcoinu. Provozovatel navíc nemusí vlastnit připojené stroje. Podíl na nalezených blocích sám vlastnictví zařízení neprokazuje. [3]
Po úspěšném výpočtu ještě musí celý blok dorazit k ostatním uzlům. Dva těžaři mohou téměř současně najít různé platné bloky navazující na stejného předchůdce. Část sítě pak chvíli zná jednu větev, část druhou. Uzly sledují platnou větev s největší kumulovanou prací, tedy s největším součtem práce připadající na její bloky. Další nalezený blok tak může převážit rozhodnutí ve prospěch jedné větve. Blok z opuštěné větve může být sám správný, ale jeho odměna se nestane součástí aktivní historie. Těžařům proto záleží i na rychlém šíření výsledku a na tom, aby po přijetí nového vrcholu řetězce dál nepracovali na zastaralém návrhu. [4]
Hashrate udává počet hashovacích pokusů za sekundu. Podíl těžaře na celkovém výkonu sítě pomáhá odhadnout četnost úspěchů, ale nezaručuje pravidelný příjem. A příjem není totéž co zisk: odečítají se náklady na elektřinu, chlazení, zařízení, servis i poplatky poolu. Odstávky mohou výsledek dál zhoršit. Pozor také na jednotky: TH/s měří výpočetní výkon, zatímco watty příkon. Stroj s vysokým výkonem může být při drahé elektřině ztrátový a jediný šťastný nález nevypovídá o dlouhodobé výnosnosti. [3]
Na vlastním uzlu můžeš porovnat návrh z getblocktemplate s hlavičkou, Coinbase Transaction a běžnými transakcemi nalezeného bloku. Příkazy jako getblocktemplate patří k technickému rozhraní uzlu; nejsou službou, které by bylo nutné svěřit peníze. Příkaz submitblock předá hotový blok uzlu ke kontrole; úspěšné místní přijetí ale nezaručuje, že blok trvale zůstane v historii celé sítě. U poolu pak rozlišuj tři různé věci: odevzdané shares, přijaté bitcoinové bloky a skutečně vyplacené částky. Teprve s provozními náklady ukazují, jak těžba dopadla ekonomicky. [5]
Pro nejúplnější obraz čtěte toto heslo společně s Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. Opačným směrem na něj odkazují také Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.