Job Negotiation — согласование собственной работы между майнером и пулом. Спецификация Stratum V2 описывает его через Job Declaration Protocol совместно с распределением шаблонов и майнинговых заданий.
Mining Protocol может работать без Job Declaration и Template Distribution. Тогда пул по-прежнему единолично распределяет работу. Собственный выбор требует подходящего клиента, поставщика шаблонов и поддерживающего пула, а не просто иного транспорта. [Stratum V2 — Mining Protocol and Custom Jobs] [SRI — Pool and miner application roles]
Через CoinbaseOutputConstraints поставщик Template Provider получает требования к дополнительным выходам coinbase и sigops. JDC должен выяснить их для используемых пулов. Без верных резервов добавление выплатных выходов может превысить лимиты блока; выбор транзакций связан со сборкой. [Stratum V2 — Template Distribution Protocol]
В Full-Template клиент JDC отправляет DeclareMiningJob серверу JDS. Сервер может запросить недостающие транзакции через ProvideMissingTransactions. Подтверждение декларации и последующее принятие собственной работы пулом — два отдельных шага, а не одно сообщение. [Stratum V2 — Job Declaration Protocol]
Coinbase-only не использует DeclareMiningJob, а JDC не раскрывает набор транзакций. Пул оценивает доход по coinbase. Приватность набора не доказывает его действительности или заявленных комиссий; спецификация прямо описывает этот риск. [Stratum V2 — Job Declaration Protocol]
SetCustomMiningJob ссылается на mining_job_token от JDS. При принятии пул возвращает SetCustomMiningJob.Success со своим job_id. Идентификаторы выполняют разные роли; результаты отправляют для подтверждённого задания с соответствующим job_id. [Stratum V2 — Mining Protocol and Custom Jobs]
При наличии нужных данных оптимистичный майнинг может начаться до SetCustomMiningJob.Success. Найденные shares сохраняют до подтверждения. Само хеширование не означает, что пул уже принял работу или начислил награду. [Stratum V2 — Mining Protocol and Custom Jobs]
После SetCustomMiningJob.Error или тайм-аута спецификация рекомендует другой пул либо соло-майнинг. Устойчивость зависит от рабочего fallback. Молчаливое продолжение на шаблоне отказавшего пула не сохранит исходный выбор транзакций. [Stratum V2 — Mining Protocol and Custom Jobs] [SRI — Pool and miner application roles]
JDC должен выделить стоимость указанному выходу пула для получения общих наград. Перенаправление части дохода на другие выходы может пропорционально снизить награду. Job Declaration не превращает общий учёт в автоматическую прямую выплату майнеру. [Stratum V2 — Job Declaration Protocol]
Для полной картины прочитайте эту статью вместе с Stratum V2, getblocktemplate, Mining Pool, Block Template. На эту статью также ссылаются Stratum V2, Mining Pool Centralization.