229 / 691JNP

Job Negotiation

协商自定义挖矿任务

Job Negotiation 将交易选择与矿池记账分开。其效果取决于所用协议、数据披露模式和拒绝后的应对;仅通过 Stratum V2 连接还不够。

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.

DOC · 001Stratum V2 — Mining Protocol and Custom Jobs规范DOC · 002Stratum V2 — Job Declaration Protocol规范DOC · 003Stratum V2 — Template Distribution Protocol规范DOC · 004SRI — Pool and miner application roles一手来源
来源优先 · 非投资建议