Job Negotiation je domluva mezi těžařem a poolem o vlastní těžební úloze. Stratum V2 stanovuje pravidla komunikace mezi těžebními zařízeními a poolem. Job Declaration Protocol je jeho část pro vlastní návrhy; spolupracuje s předáváním šablon a těžebních zadání. Smyslem je umožnit vlastní výběr transakcí, zatímco pool dál eviduje práci a vyplácí odměny. Rozhodující je skutečné zapojení, nikoli samotný název připojení.
Anna přepne připojení na Stratum V2, ale seznam transakcí stále dostává od poolu. To není rozpor. Mining Protocol, část protokolu pro předávání práce a výsledků, může fungovat bez Job Declaration i Template Distribution. Posledně jmenovaná část dodává šablony bloků; Job Declaration řeší vlastní návrhy. Pro Annin výběr je potřeba zapojit i tyto role a použít podporující pool. Samotný modernější přenos tedy neříká, kdo rozhoduje o obsahu bloku v síti Bitcoin. [1] [4]
Výběr plateb nemůže zaplnit blok tak, že už se nevejde jeho odměnová transakce coinbase. Poskytovatel šablony, Template Provider, proto musí znát potřebnou rezervu. Na Annině straně pracuje program JDC, zkráceně Job Declarator Client. Zjistí požadavky používaných poolů a předá je poskytovateli šablony v datové zprávě CoinbaseOutputConstraints. Rezervuje se datový prostor i sigops, operace ověřování podpisů započítávané do limitu bloku. Jinak by dodatečné výstupy coinbase, tedy položky přidělující prostředky, mohly překročit limity bloku. Vlastní volba transakcí musí od začátku počítat s platností celého výsledku. [3]
V režimu Full-Template předává JDC zprávu DeclareMiningJob serveru JDS, tedy Job Declarator Server na straně poolu nebo u služby, které pool důvěřuje. Uvádí identifikátory vybraných transakcí. Když server některou nezná, může si její data vyžádat přes ProvideMissingTransactions. Anna tak sdílí podklady, které dovolují její výběr prověřit. Potvrzení deklarace a následné přijetí vlastní úlohy poolem jsou dva samostatné kroky. První úspěšná zpráva ještě neznamená dokončení celé domluvy. [2]
V režimu Coinbase-only JDC sadu transakcí neodhaluje a zpráva DeclareMiningJob se nepoužívá. Pool odhaduje příjem z předložené coinbase. To chrání soukromí Annina výběru před poolem, ale samo nedokazuje platnost skrytých transakcí ani skutečnou výši jejich poplatků. Specifikace na toto riziko výslovně upozorňuje. Méně předaných údajů tedy znamená i jinou možnost kontroly; samotný název režimu není zárukou, že jsou všechny podmínky odměny správně doložené. Toto soukromí se týká návrhu během těžby. Pokud Anna najde platný blok a zveřejní ho v síti, jeho transakce už budou viditelné. [2]
V technické komunikaci se objeví více podobně vypadajících označení. mining_job_token přiděluje JDS a klient se na něj odvolává ve zprávě SetCustomMiningJob. Když pool úlohu přijme, vrátí SetCustomMiningJob.Success se svým job_id. Token a job_id mají jiné úlohy: první propojuje domluvu o návrhu, druhý označuje práci při odevzdávání výsledků. Je to podobné jako číslo žádosti a číslo schválené zakázky. Záměna by poolu zabránila přiřadit výsledek k odpovídající přijaté práci. [1]
Čekání na každý síťový krok by zbytečně zdržovalo zařízení. Jakmile má klient potřebný token a šablonu, může začít optimistickou těžbu ještě před SetCustomMiningJob.Success. Vypočtené shares, dílčí výsledky dokazující práci podle cíle poolu, se do potvrzení ukládají. Po přijetí úlohy je lze poslat s přiděleným označením. Běžící stroj proto ještě nedokazuje, že pool tuto práci přijal nebo započetl. Začátek výpočtů a souhlas s odměňováním jsou odlišné okamžiky. [1] [2]
Pokud Anna dostane SetCustomMiningJob.Error nebo se nedočká odpovědi v přiměřené době, specifikace doporučuje jiný pool, případně samostatnou těžbu. Odolnost tak závisí na fungujícím fallbacku, tedy připravené náhradní cestě. Kdyby software potichu převzal původní šablonu odmítajícího poolu, mohl by zachovat provoz, ale ztratil by Annin vlastní výběr. Je proto důležité vědět, co systém při odmítnutí skutečně udělá. Popsaná možnost protokolu není důkazem, že ji každá služba podporuje. [1] [4]
Anna chce vybírat transakce a dál využívat společné odměňování. Její JDC proto musí v coinbase přidělit hodnotu do určeného výstupu poolu, aby splnil podmínky poolových odměn. Pokud část příjmu nasměruje jinam, pool může odměnu za tuto práci poměrně snížit. Job Declaration tedy nepřináší automatickou přímou výplatu těžaři ani neodstraňuje účetní podmínky služby. Mění především to, kdo může navrhovat obsah bloku; pravidla jeho platnosti i způsob rozdělování příjmu je nutné posuzovat zvlášť. [2]
Pro nejúplnější obraz čtěte toto heslo společně s Stratum V2, getblocktemplate, Mining Pool, Block Template, Bitcoin. Opačným směrem na něj odkazují také Stratum V2, Mining Pool Centralization.