跳转到内容

Stratum 挖矿协议

来自BitcoinWiki
Stratum 挖矿协议
Stratum 挖矿协议。

Stratum 挖矿协议是一组用于在矿工、代理和矿池基础设施之间交换挖矿任务与工作量证明结果的协议。原始协议现称 Stratum V1(SV1);Stratum V2(SV2)是另行规范的后继协议,消息格式和安全模型均不同。[1]

Stratum V1

Stratum V1 于2012年推出,随后被比特币矿机和矿池广泛实现。它以持续的 TCP 连接取代反复的 getwork 轮询,矿池可通过连接推送新任务。[1][2] V1 通常采用换行分隔的类 JSON-RPC 消息。最初的挖矿接口没有得到完整标准化,因此形成了不同方言和扩展。[3]

核心消息流程

典型 V1 会话使用下列消息;确切参数和可选行为会因实现而异。[4]

方向 方法 用途
矿工 → 服务器 mining.subscribe 启动或恢复会话。响应一般提供订阅标识符、extranonce1extranonce2 大小。
矿工 → 服务器 mining.authorize 将工作器名称以及在使用时的密码与连接关联。
服务器 → 矿工 mining.set_difficulty 设置提交份额的目标难度,后续任务应用新难度。
服务器 → 矿工 mining.notify 发送任务标识符、前一区块哈希、coinbase 部分、Merkle 分支、版本、目标编码、时间和是否丢弃旧任务的标志。
矿工 → 服务器 mining.submit 提交工作器、任务、extranonce2、时间和 nonce,供服务器接受或拒绝。

常见可选消息有 client.reconnectclient.show_messagemining.set_extranonce。BIP 310 定义 mining.configure,用于协商版本滚动、最低难度和 extranonce 订阅。[5]较早的 mining.capabilities 等草案不属于该协商机制,不能假定获得支持。

局限

基础 V1 协议以明文传输挖矿流量。2017年的研究表明,被动观察者可推测算力和收入,能够截取连接的攻击者还可修改消息。[4]矿池另行部署 TLS 隧道可能改变风险,但这不是基础 V1 的属性。

V1 通常由矿池构建任务并选择交易。支付核算、钱包、数据库和日志轮换属于矿池软件功能,不属于协议。

Stratum V2

Stratum V2 使用精确定义的二进制消息。其规范定义通道、原生版本滚动、连接聚合,以及矿机、代理、矿池、任务声明器和模板提供者等角色。[3][6]

该套件包含三个子协议:[6]

  • 必需的 Mining Protocol,用于分发任务和提交份额;
  • 可选的 Job Declaration Protocol,让矿工端提出选定的交易集合;以及
  • Template Distribution Protocol,用于从比特币节点传递区块模板数据。

任务声明是可选的。矿池可以只用 V2 分发自己选择的任务;采用任务声明时,矿工端可构建模板并请求矿池接受。[6]这会改变交易选择责任,但不定义支付,也不能消除对矿池账目的信任。

V2 以认证加密保护远程连接。规范采用 AEAD 和基于 Noise 的握手;远程上游连接必须使用安全握手,本地设备与代理之间则可选。[7]

兼容性与实现

转换代理可以接受现有矿机的 V1 连接,并对上游使用 V2。它只提供协议桥接,不会使下游设备成为原生 V2 实现。具体扩展和子协议支持应分别核对矿机、代理和矿池。

参见

外部链接

  1. 1.0 1.1 Stratum V2 项目,“Open Bitcoin mining standard”,查阅于2026年9月14日。
  2. Bitcoin Wiki,“Stratum mining protocol”,查阅于2026年9月14日。
  3. 3.0 3.1 Stratum V2 规范,“Design Goals”,查阅于2026年9月14日。
  4. 4.0 4.1 Maria Apostolaki 等,“Hardening Stratum, the Bitcoin Pool Mining Protocol”Proceedings on Privacy Enhancing Technologies,2017。
  5. BIP 310,“Stratum protocol extensions”,查阅于2026年9月14日。
  6. 6.0 6.1 6.2 Stratum V2 规范,“Protocol Overview”,查阅于2026年9月14日。
  7. Stratum V2 规范,“Protocol Security”,查阅于2026年9月14日。