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]
Template Provider は CoinbaseOutputConstraints で追加 coinbase 出力と sigops の要件を受け取ります。JDC は使用するプールの要件を把握します。適切な余裕がなければ支払出力の追加でブロック制限を超え得るため、取引選択と組み立ては結び付いています。 [Stratum V2 — Template Distribution Protocol]
Full-Template では JDC が JDS に DeclareMiningJob を送ります。サーバーは ProvideMissingTransactions で不足取引を要求できます。宣言の確認と、その後のプールによる独自作業の受理は別の段階で、単一メッセージではありません。 [Stratum V2 — Job Declaration Protocol]
Coinbase-only では DeclareMiningJob を使わず、JDC は取引集合を開示しません。プールは coinbase から収入を評価します。集合の秘匿性だけでは有効性や申告手数料の正しさを証明できず、仕様はこのリスクを明記しています。 [Stratum V2 — Job Declaration Protocol]
SetCustomMiningJob は JDS からの mining_job_token を参照します。受理するとプールは独自の job_id を含む SetCustomMiningJob.Success を返します。役割は異なり、結果は確認済みジョブに対応する 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.