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.