93 / 736SV1

Stratum V1

Jak se těžební stroj domlouvá s poolem

Stratum V1 je společný jazyk těžebního stroje a poolu: předává zadání, vrací výsledky a umožňuje měřit odvedenou práci. V roce 2012 jej představil Marek Palatinus, známý jako Slush.

Stratum V1 je komunikační protokol pro společnou těžbu Bitcoinu. Pool přes otevřené spojení průběžně posílá práci a těžební zařízení vrací výsledky. Protokol sám neurčuje výši odměny ani pravidla platnosti bitcoinových bloků.

Eva zapojila ASIC, specializovaný stroj na těžbu Bitcoinu, a připojila jej k poolu. Pool koordinuje těžaře, kteří hledají další blok, tedy skupinu transakcí k přidání do bitcoinové historie. Samotný výkon ale nestačí: zařízení musí dostat zadání a pool musí poznat, jakou práci Eva odvedla. Tuto domluvu zajišťuje Stratum V1. Pool posílá údaje pro hledání dalšího bloku, stroj počítá a vrací dílčí výsledky. Podobně jako jazyk telefonního hovoru protokol určuje, jak si strany rozumějí. Neurčuje však cenu práce. Tu stanovují samostatná pravidla odměňování poolu; platnost nalezeného bloku ověřují bitcoinové uzly. [4] [2]

S rostoucím výkonem těžebních strojů přestával starší getwork vyhovovat. Předával malé porce práce a zařízení si musela často říkat o další. Marek Palatinus představil nový návrh 11. září 2012. Stratum udržuje spojení otevřené, takže pool může poslat změnu zadání bez čekání na nový dotaz. Zmenšuje tím komunikační režii. Neznamená to, že nahrazuje všechny ostatní části těžby: pool může dál získávat návrh bloku od bitcoinového uzlu metodou getblocktemplate popsanou v BIP 22. [11] [3] [5]

Řídicí software stroje nejprve obvykle pošle mining.subscribe: požádá o odběr práce. Dostane údaje pro spojení a pro rozlišení vlastních výpočtů. Zpráva mining.authorize potom přiřadí stroj k účtu. Označení worker zde znamená identifikátor zařízení či jeho připojení, nikoli zaměstnance. Eva tak může pod jedním účtem rozeznat více strojů. Případné heslo v této zprávě ale samo neověřuje pravost serveru a nešifruje komunikaci. Úspěšné přihlášení proto ještě není důkaz bezpečného spojení. [2] [13]

Zpráva mining.notify přináší nový úkol označený job_id. Obsahuje návaznost na předchozí blok, podklady pro transakce a čas i další údaje hlavičky bloku, stručného souboru informací o tomto bloku. Důležitý je přepínač clean_jobs. Hodnota true přikazuje opustit stará zadání; při false může zařízení na předchozím úkolu ještě pokračovat, i když má přejít na nový. Není tedy správné považovat každou novou zprávu za automatické zneplatnění všech rozpracovaných výsledků. Zadání je navíc jen návrh k výpočtu, nikoli už platný blok. [2] [13]

Tato část je technická; pro běžné připojení není nutné znát jednotlivá pole. Pool dodává dvě části coinbase transakce, kterou se vyplácí odměna za blok; nejde o stejnojmennou burzu. Software mezi ně vloží extranonce1 přidělený poolem a vlastní extranonce2. Takto získává další varianty práce. Z transakce a dodaných Merkle branches, mezivýsledků stromového shrnutí transakcí, vypočítá Merkle root. Ten spolu s odkazem na minulý blok, verzí, časem a zakódovanou horní hranicí hodnoty hashe tvoří základ 80bytové hlavičky. ASIC opakovaně počítá její hash, číselný otisk, a mění nonce, číslo určené k hledání dalších pokusů. [2] [4] [13] [14]

Najít celý blok je vzácné. Pool proto stanoví mírnější hranici výsledku, zvanou target. Výsledek, který ji splní, se označuje jako mining share a dokládá vykonanou práci. Většina shares nesplní přísnější hranici bitcoinové sítě; některý ji ale splnit může a pak může pomoci vytvořit platný blok. Zpráva mining.set_difficulty a automatické nastavení vardiff upravují obtížnost shares, aby nepřicházely příliš často ani zřídka. Nemění síťovou obtížnost. Splnit obtížnější podmínku vyžaduje v průměru více výpočtů, a tak má takový výsledek při měření práce větší váhu. Menší počet obtížnějších shares sám neznamená menší odměnu: záleží také na jejich váze a pravidlech poolu. [2] [4] [13]

Zprávou mining.submit zařízení pošle identifikátor workera, job_id, extranonce2, nTime (čas uvedený v hlavičce) a nonce. Pool z těchto údajů znovu sestaví výsledek a ověří jej. Označení duplicate znamená opakované odevzdání stejné práce, low difficulty nedostatečný výsledek a stale práci na již nepřijímaném zadání. Eva proto nesleduje jen výkon stroje, ale také podíl odmítnutých výsledků a zpoždění spojení. Ani přijetí share ještě není výplatou do peněženky: Stratum zprostředkovává práci, zatímco připisování a výplata odměn mají vlastní pravidla. [2] [13]

BIP 310 z roku 2018 popisuje, jak si přes mining.configure dohodnout další schopnosti. V dokumentu ověřeném 17. října 2026 zůstává označení Draft, tedy návrh. Funkce version-rolling dovoluje měnit jen dohodnuté bity verze hlavičky; po jejím sjednání se k mining.submit přidává šesté pole. Neopravňuje měnit libovolná pravidla Bitcoinu. Další volby minimum-difficulty a subscribe-extranonce řeší požadovanou minimální obtížnost shares a oznamování nových hodnot extranonce. Dohoda o rozšířeních zabraňuje nedorozumění mezi programy, sama ale nezajišťuje šifrování. [6]

V1 běžně běží po nešifrovaném TCP spojení. Bez další ochrany může někdo na přenosové cestě číst či měnit komunikaci a pokusit se přesměrovat práci. Výzkum Hardening Stratum z roku 2017 tato rizika prakticky rozebral. Jde o spojení stroje s poolem, ne o prolomení Bitcoinu. V obvyklém uspořádání také pool vybírá transakce do bloku. Eva vlastní zařízení, ale tím ještě nerozhoduje o obsahu bloku. Bitcoinové uzly nadále odmítnou blok porušující pravidla, i kdyby jej vytvořil velký pool. [7] [4]

Stratum V2 přináší úspornější binární zprávy a kryptograficky chráněné spojení. Samostatná část Job Declaration může umožnit těžaři navrhnout vlastní výběr transakcí, pokud ji podporují a používají obě strany. Překladač mezi V1 a V2 ani samotný nápis V2 tuto možnost nedokazuje. Eva by tedy měla ověřit podporu ve firmwaru, správnou adresu serveru, ochranu spojení, odmítnuté výsledky a záložní připojení. Pro pochopení V1 stačí držet hlavní souvislost: doručit práci, doložit výpočet a oddělit to od rozhodování o bloku a od výplaty. [8] [12] [10]

Pro nejúplnější obraz čtěte toto heslo společně s Bitcoin, Těžba, Mining Pool, Braiins, Braiins Pool, Marek „Slush“ Palatinus. Opačným směrem na něj odkazují také Mining Pool, Marek „Slush“ Palatinus, Braiins, Braiins Pool.

DOC · 001Original Stratum mining protocol announcementPrimární zdroj DOC · 002Bitcoin Wiki — Stratum mining protocolDokumentace DOC · 003Braiins — Past and future of mining protocolsPrimární zdroj DOC · 004Bitcoin Developer Guide — Pooled MiningDokumentace DOC · 005BIP 22 — getblocktemplate fundamentalsPrimární zdroj DOC · 006BIP 310 — Stratum protocol extensionsPrimární zdroj DOC · 007Hardening Stratum research paperPrimární zdroj DOC · 008Stratum V2 Mining Protocol specificationPrimární zdroj DOC · 009Galaxy Research — Future of Bitcoin mining protocolsDokumentace DOC · 010Braiins Academy — Stratum V2 ManualDokumentace DOC · 011Slush — Stratum proposal, 11 September 2012Primární zdroj DOC · 012Stratum V2 — Job Declaration ProtocolPrimární zdroj DOC · 013Original Stratum protocol specification (archived)Primární zdroj DOC · 014Bitcoin Developer Reference — Block HeadersPrimární zdroj
Revidováno: Primární zdroje · Nejde o investiční doporučení