Mining Pool je služba, která koordinuje práci více těžařů a podle předem daných pravidel jim rozděluje výnosy. Jednotlivý těžař tak nemusí s příjmem čekat, až jeho vlastní stroj najde blok. Pool však nesnižuje obtížnost Bitcoinu ani nezaručuje zisk: mění především způsob, jakým se práce měří a odměna vyplácí.
Anna má jeden těžební stroj. Elektřinu platí každý den, ale při samostatné těžbě může na vlastní blok čekat velmi dlouho. Pokud najde blok, který síť přijme, připadne jí jeho odměna; do té doby z této těžby nedostává nic. Dlouhé čekání přitom neznamená, že už má výhru na dosah. Každý další pokus má za stejných podmínek stejnou šanci. V poolu její stroj pracuje společně s dalšími. Pool může odměňovat i těžaře, který konkrétní blok nenašel, protože průběžně měří jejich příspěvek a používá dohodnutý model výplat. Anna se vzdává možnosti ponechat si celý výnos svého bloku výměnou za menší, zpravidla pravidelnější příjmy. Obtížnost sítě se tím nesnižuje a pool nevyrábí odměny navíc. Navíc si obvykle účtuje poplatek. Zda příjem pokryje elektřinu a zařízení, je jiná otázka. [6] [7]
Pool nevidí každý výpočet Annina stroje. Potřebuje ale ověřit, že opravdu pracuje, a přibližně změřit jeho příspěvek. Proto zadá snazší podmínku než bitcoinová síť. Výsledek splňující tuto podmínku se nazývá Mining Share, zkráceně share. Stroj tak může pravidelně hlásit ověřitelné výsledky, i když ještě nenašel blok. Z přijatých shares a jejich obtížnosti pool statisticky odhaduje práci. Není to přesné počítadlo všech pokusů. Pokud mají dvě zařízení různé obtížnosti shares, samotné počty odevzdaných výsledků nelze přímo porovnat. Běžný share nevytváří nový bitcoinový blok ani potvrzení platby. Až vzácný výsledek splní i podmínku sítě, lze předložit blok; ten musí projít také ostatními kontrolami. Share proto znamená doklad práce pro pool, nikoli dílek bitcoinu, který stroj právě vyrobil. [7] [9]
Anna může připojit stejný stroj ke dvěma různým poolům a vidět odlišný průběh odměn. Rozhoduje mimo jiné model výpočtu. PPS neboli Pay Per Share připisuje za přijatý share předem určenou očekávanou hodnotu podle jeho obtížnosti. Anna tak nemusí čekat na šťastný nález bloku svého poolu: riziko náhodného kolísání nálezů přebírá provozovatel. To ovšem není záruka, že provozovatel vždy dokáže zaplatit, ani pevná hodinová mzda. Počet shares i podmínky těžby se mění. FPPS neboli Full Pay Per Share k očekávanému podílu na nově vydaných bitcoinech obvykle přidává i odhad transakčních poplatků. PPLNS, Pay Per Last N Shares, naopak rozděluje výnos skutečně nalezených bloků podle práce v určeném nedávném okně. Výplaty pak více závisejí na tom, jak se poolu právě daří. Toto okno se řídí pravidly poolu a nemusí znamenat prostě poslední hodinu. Zkratka sama k porovnání nestačí. Záleží také na poplatcích, použitém odhadu, délce okna a zacházení s bloky, které nezůstanou v hlavní historii, tedy Stale Block. Model odměn určuje nárok a výpočet; termín převodu do peněženky je další samostatné pravidlo. [7] [8]
Anna vidí v účtu rostoucí částku. Dokud však nepřijde do její peněženky, spoléhá na to, že pool zůstatek správně vede a vyplatí. Je proto důležité vědět, kdy výplata nastane, zda je potřeba dosáhnout minimální částky, jaké jsou poplatky a na jakou adresu peníze odejdou. Pravidla se mezi službami liší; automatické připisování odměn neznamená automaticky okamžitý převod. Vedle peněz je třeba sledovat i provoz: přijaté a odmítnuté shares, jejich obtížnost označovanou Share Difficulty, dostupnost serverů a možnost záložního připojení. Firmware je řídicí software mineru a musí s poolem spolupracovat. Porovnání delšího přehledu poolu s vlastními provozními záznamy a skutečnými platbami pomáhá zachytit nesrovnalosti. Nalezené bloky lze prověřit na blockchainu, ten však sám neukáže úplné vnitřní účetnictví poolu. Důležitá je také možnost změnit pool a vědět, kdo vybírá transakce. [8] [9]
Když se zadání změní dřív, než výsledek dorazí, pool ho už nemusí započítat. Latence je zde zpoždění komunikace mezi zařízením a poolem. Share může být odmítnut jako zastaralý (stale), duplicitní, chybně sestavený nebo neodpovídající přidělené úloze. Vyšší latence mezi těžařem a poolem, pomalé aktualizace úloh a výpadky sítě zvyšují ztracenou práci. Podíl stale shares tedy vypovídá o provozní efektivitě spojení těžaře s poolem; není totéž jako Stale Block v blockchainu. [9]
Odměna za blok je zapsána ve zvláštní první transakci nazývané Coinbase Transaction. Její výstupy určují částky a podmínky, za kterých je lze později utratit. Odměna tedy může směřovat k jednomu i více příjemcům. Block Template je návrh bloku včetně vybraných transakcí. V klasickém poolu obvykle sestavuje Block Template provozovatel poolu a určuje také příjemce coinbase výstupu. Těžař především zkouší různé hodnoty v přidělené úloze a hledá výsledek splňující podmínku sítě. Pool tím získává vliv na výběr transakcí, nikoli schopnost prosadit neplatný blok; každý Full Node blok nezávisle kontroluje. Full Node je program, který ověřuje bloky a transakce podle pravidel Bitcoinu. [6] [10]
Vedle výše výplaty záleží i na tom, kdo rozhoduje o zařazení plateb do bloků. Vynechávání určitých transakcí může jejich potvrzení zdržovat. Koncentrace poolů je důležitá, protože malý počet koordinátorů může ovlivňovat zařazování transakcí, zavádění softwaru a krátkodobé rozložení Hashrate, tedy počtu těžebních výpočtů za sekundu. Hashrate poolu ale není totéž co vlastnictví těžebních zařízení: provozovatelé ASICů, specializovaných těžebních strojů, mohou změnit jejich připojení na jiný pool. Riziko roste, pokud náklady na změnu poolu, smlouvy nebo firmware tuto možnost omezují. [6] [10]
Stratum je soubor pravidel, podle kterých spolu komunikují miner a pool. Šifrování chrání přenášené zprávy, autentizace pomáhá ověřit protistranu. Stratum V1 slouží k zadávání těžební práce a kontrola šablony obvykle zůstává poolu. Stratum V2 jasněji odděluje role a podporuje šifrovanou a autentizovanou komunikaci. Volitelný Job Declaration Protocol dovoluje těžaři předkládat vlastní šablonu s vlastním výběrem transakcí, pokud příslušné komponenty podporují těžař i pool. Samotný Mining Protocol ve Stratum V2 lze provozovat bez této možnosti; označení Stratum V2 tedy samo nezaručuje nezávislý výběr transakcí. [10]
Pro zájemce o techniku: Block Template je návrh obsahu nového bloku. Worker je označení připojeného těžebního zařízení nebo účtu, pod kterým jeho práci pool eviduje; hlavička je krátký souhrn údajů o bloku. Těžební úloha vychází z Block Template nebo obdobné konstrukce kandidátního bloku. BIP22 popisuje getblocktemplate a BIP23 jeho rozšíření pro poolovou těžbu. Poolový protokol předává workerům potřebná pole, data coinbase transakce a prostor hledání. ASIC Miner zkouší různé hlavičky a počítá jejich hash, číselný otisk. Pro splnění Proof of Work, dokladu výpočetní práce, musí být tento hash menší nebo roven síťové mezi nazývané target. Blok musí zároveň splnit ostatní pravidla Bitcoinu. [1] [2] [5]
Technický detail: target je číselná mez, pod kterou se musí vejít hash, tedy výsledek těžebního výpočtu; rovnost také vyhovuje. VarDiff znamená proměnlivou obtížnost shares. Pool nastavuje snazší share target, aby dostával výsledky dost často pro měření. Síťový target Bitcoinu je mnohem náročnější splnit. Přijatý share splňující pouze poolový target se započítává podle pravidel odměňování poolu; pokud tentýž hash splní i síťový target, může být předložen kandidátní blok. VarDiff mění obtížnost shares a tím jejich četnost, nikoli konsenzuální Difficulty Bitcoinu. [9]
Pro nejúplnější obraz čtěte toto heslo společně s Těžba, Hashrate, Braiins Pool, Stratum V2, Mining Share, Pay Per Share. Opačným směrem na něj odkazují také Coinbase transakce, ASIC Miner, Hashrate, Nonce.