它是一组开放协议,也就是交换消息的规则。基础部分 Mining Protocol 传递任务和结果;可选的 Template Distribution 与 Job Declaration 支持使用自己的区块模板。仅仅建立 V2 连接,并不保证拥有这种能力。
Eva 有一台 ASIC,即专门用于比特币挖矿的设备。她把它接入矿池,由矿池协调多名矿工并分配收益。矿机寻找符合要求的计算结果,以便把一个新区块,也就是一批交易,加入 Bitcoin 的历史记录。她需要矿机收到正确任务,计算结果也确实送到自己选择的矿池。以后,她还想决定尝试放入区块的交易。Stratum V2 负责这些参与者之间的通信。Mining Protocol 是基础;Template Distribution 和 Job Declaration 是可选部分,分别帮助提供区块资料和商定自选任务。因此,两家都标着 V2 的矿池,实际提供的能力可能不同。 [1] [3]
Stratum V1 让矿工协作更容易,但其常见的未加密连接让途中消息仍可被读取。交易通常也由矿池选择。2019 年,Braiins 的 Jan Čapek、Pavel Moravec 与 Matt Corallo 等开发者共同提出 Stratum V2,希望让通信更安全、更高效,并让矿工更自主。规范公开,开发也在开放项目中持续进行。它没有另立一套比特币区块有效性规则,也不自动意味着收入更高。 [8] [6]
位于 Eva 与矿池之间网络路径上的第三方,不应能悄悄读取或修改挖矿消息。因此,V2 使用加密和消息完整性校验,这种机制称为 AEAD。规范要求远程连接进行最初的 Noise 密码学握手;在本地网络中,是否使用该握手可以是可选项。客户端用从可信渠道获得的矿池授权公钥验证服务器。这个公钥用于检查服务器证明自身身份时所用的数字签名。这保护的是传输,而不是所有环节:矿池仍然看得到交给它的数据;加密也不能证明固件安全、账目正确或矿池有能力支付收益。 [2] [10]
Eva 不一定需要更换挖矿设备。Translation Proxy 是一个中间程序,可以接收旧矿机的 Stratum V1,再用 V2 与矿池通信。但保护后一段连接,不会改变 ASIC 到代理之间的原有通信:那一段仍是 V1,需要单独保护。代理也能共同服务多台矿机,减少相同数据的重复发送。仅仅完成协议转换,并不代表 Eva 已能选择交易;这还需要额外功能及矿池配合。 [7] [8]
要选择交易,Eva 首先得知道哪些交易有效,以及新区块应接在哪个区块之后。她可以从自己的全节点取得这些信息,由节点独立验证比特币规则。Template Provider 是提供区块模板的软件:模板是未来区块的草稿,不是已完成的区块。它可以使用 Bitcoin Core,或其他具有相应支持的节点。Template Distribution 直接推送更新,不必反复调用 getblocktemplate。NewTemplate 与 SetNewPrevHash 通知模板及其与前一区块的衔接;RequestTransactionData 请求交易数据,SubmitSolution 送回找到的解。 [5]
Eva 使用 Job Declarator Client:这个程序接收她的模板,并与支持 Job Declaration 的矿池商定使用方式。在 Full-Template 模式下,它通过 AllocateMiningJobToken 申请任务标识,用 DeclareMiningJob 列出交易,必要时回应 ProvideMissingTransactions,再向挖矿服务器发送 SetCustomMiningJob。Coinbase-only 模式不预先披露交易列表,也不使用 DeclareMiningJob;它使用分配的标识,以及 coinbase 的资料。这里的 coinbase 是承载区块奖励的特殊交易。矿池可以拒绝方案,所以备用连接也很重要。自选交易能把决策分散给更多矿工,但不会免除矿池支付收益的义务。 [4]
理解前面的例子不必记住消息名称,但配置或开发软件时,准确格式就很重要。V2 用二进制传输数据,即双方约定的机器可读表示。消息头长 6 字节,extension_type、msg_type 和 msg_length 分别标识扩展、消息类型和内容长度。建立密码学通信后,第一条协议消息是 SetupConnection,用于协商协议、版本和功能要求;SetupConnection.Success 确认成功。因此,服务上写着 V2,不能替代具体程序之间实际完成的协商。 [1]
通道是同一连接内独立的挖矿会话,不是另一个区块链,也不是支付通道。Standard Channel 分配针对区块头的任务;区块头是区块数据的简短摘要。Extended Channel 允许中间程序利用 extranonce 分配更大的尝试空间,extranonce 是 coinbase 交易中可变化的部分。Group Channel 则便于同时向多个通道分发任务。OpenStandardMiningChannel 和 OpenExtendedMiningChannel 用于打开相应会话。实际原因很简单:如果两台矿机测试完全相同的可能性,就会花电做重复工作。 [3]
矿池需要不断衡量 Eva 的贡献。Mining share 是达到所分配难度门槛的结果;大多数 shares 达不到区块所需的、更严格的网络门槛,但有些也能达到。NewMiningJob 或 NewExtendedMiningJob 提供任务,SetNewPrevHash 激活与前一区块的衔接,SetTarget 设置通道门槛。SubmitSharesStandard 或 SubmitSharesExtended 发送结果,其中包含任务标识、序号及可变化的区块头数据。结果被接受,还不等于钱包收到付款。矿池如何计酬,与区块是否符合比特币规则,仍是两件事。 [3]
她先确认自己的设备、软件和所选矿池支持哪些功能,再弄清哪段连接受到保护、验证密钥来自哪里,以及自己只想要更安全的传输,还是也想选择交易。后一种情况需要可用的 Template Provider、Job Declarator Client 和相应矿池支持。她要观察延迟、被拒绝或已过时的 shares、错误日志及故障时的行为。说明文档必须对应所用版本。Stratum V2 可以改善挖矿协作,但不能代替安全的设备管理,也不改变全节点验证比特币所用的规则。 [6] [7]
要获得更完整的理解,请将本词条与以下词条结合阅读: Bitcoin, 挖矿, Mining Pool, Braiins, Braiins Pool, ASIC Miner. 反向关联还来自: ASIC Miner, Mining Pool, Nonce, Marek“Slush”Palatinus.