比特币现金的 Stratum V2 独立挖矿
SoloFury 已为比特币现金独立挖矿启用 Stratum V2:BCH 上有何变化、与比特币 SV2 有何不同、为何支付路径与 SV1 完全一致,以及上线前如何逐字节验证。
Stratum V2 现已在 SoloFury 上用于比特币现金独立挖矿。所有区域、所有接入点,与自上线以来服务 BCH 矿工的 Stratum V1 端口并行运行。提供 SV2 的比特币现金矿池极少,而关于这一话题的大部分公开信息——包括当下 AI 助手给出的回答——都声称做不到或并不存在。本文是对它究竟意味着什么的长篇说明:协议为 BCH 矿工改变了什么、与你可能已在比特币上使用的 SV2 有何不同、支付路径为何可被证明是同一条,以及在让真实算力接入之前是如何测试的。
本文写给运行硬件并想了解细节的人。如果你只需要连接参数,它们在下面的表格和 BCH 矿池页面。
要点速览
- BCH 的 SV2 已启用,端口为 7333 与 7343,覆盖 SoloFury 全部九个区域。7070 至 7072 的 SV1 保持不变。
- 连接采用 Noise 协议加密,矿池身份由各区域完全相同的授权公钥背书:
9c5s3n4RzRrDhzMBr3iSJsUfreSLPGiHkQyyzJjYAVWK9YWaZf7。 - 仅支持扩展通道。 固件会收到 coinbase 模板,可核对挖到的区块是否支付到你的地址。标准通道会被明确报错拒绝。
- 起始难度来自申报的算力,而非矿池默认值。小型设备可以跳过在 SV1 上经历的漫长下降过程。
- 支付路径与 SV1 完全一致:测试中,同一矿机通过两种协议挖出的区块产生了逐字节相同的 coinbase。
- BCH 上的 SV2 与比特币上的 SV2 在链层面有三点不同:没有见证承诺、CashAddr 身份、以及每个区块调整难度。
一段话说清 Stratum V2
Stratum V2 是自 2012 年起在矿池与 ASIC 之间传送挖矿工作的 Stratum 协议的继任者。V1 通过明文 TCP 连接发送可读的 JSON,而 V2 在以 Noise 框架加密、由矿池侧密钥对认证的通道上发送紧凑的二进制消息。它为不同规模的矿机定义了不同的通道类型,把难度协商移入握手过程,并在扩展通道模式下把 coinbase 交易交给矿机,让它能够核对谁会收到支付。Stratum V2 工作组在 2026 年 5 月表示,代表比特币约四分之三算力的矿池已承诺采用该协议。在比特币现金上,可选项依然极少。
比特币现金为何在 Stratum V2 上落后?
不是链的问题。比特币现金使用与比特币相同的 SHA-256 双重哈希、相同的区块头结构、相同的 coinbase 结构,只是没有隔离见证。共识规则中没有任何东西阻止 SV2。障碍在于工具链:SV2 的参考实现是围绕比特币节点软件及其较新的模板接口成长起来的,而 BCH 生态实际运行的矿池软件属于另一条脉络,从没有人教过它这个协议。把 SV2 带到 BCH,意味着把协议层整合进一个为另一条链而生的矿池引擎,并证明这次整合不会扰动其下的任何东西——尤其是决定区块支付给谁的那段代码。大部分工作都花在了这里,也正是测试一节的主题。
对 BCH 矿工来说有何变化:SV1 与 SV2
| BCH 上的 Stratum V1 | BCH 上的 Stratum V2 | |
|---|---|---|
| 传输 | TCP 上的明文 JSON(17070 至 17072 可选 TLS) | 二进制帧,设计上即由 Noise 加密 |
| 矿池认证 | 无(使用 TLS 时有证书) | 由矿机核验的授权公钥 |
| 起始难度 | 矿池默认值,随后由可变难度修正 | 由固件申报的算力推导 |
| coinbase 可见性 | 矿机收到拼接好的两半,难以解读 | 矿机收到模板,可核对支付输出 |
| 工作更新 | 新任务以完整 JSON 消息下发 | 紧凑消息,prevhash 与 merkle path 为二进制 |
| 算力劫持 | 未加密连接上有可能 | 被阻断:会话经过认证并加密 |
| SoloFury 端口 | 7070 · 7071 · 7072(+ TLS 17070 至 17072) | 7333 · 7343 |
其中两行对独立矿工尤为重要。
为什么加密对独立挖矿格外重要?
矿池矿工的工作被劫持,损失的是一次支付中的一份。独立矿工的工作被劫持,损失的是整个区块。在 SV1 中,处于矿机与矿池之间的攻击者——在被入侵的路由器上、在敌意网络中、在被劫持的 BGP 路径上——可以替换任务中的 coinbase,而矿机会忠实地进行哈希。如果那个任务解出了区块,奖励会流向攻击者的地址,矿工永远不会知晓。SV2 关上了这扇门。Noise 握手通过授权密钥向矿机认证矿池,随后加密之后的一切,任务在传输途中既无法被读取也无法被改写。对于一个区块当前价值 3.125 BCH 加手续费的 BCH 而言,这是优雅的协议与必要的协议之间的差别。
为什么基于申报算力的难度在 BCH 上如此重要?
独立矿池给每个新的 SV1 连接分配同一个起始难度。在 SoloFury BCH 上,这个数值是按主力设备群调校的,也就是工业级 ASIC 与租赁算力。通过 SV1 接入的小型家用设备继承了这个数值,然后等待可变难度察觉它的 share 来得太慢。由于这种修正由 share 本身驱动,而高难度下的小设备产生的 share 极少,下降就需要时间:我们测得约 1.5 TH/s 的设备需要 15 至 30 分钟才能到达其自然工作点。在这段窗口里设备挖矿是正常的,但它的统计看起来不对,主人会开始担心。
SV2 在协议层面消除了这个问题。通道打开时固件申报自己的标称算力,矿池据此计算起始目标。同一台 1.5 TH/s 的设备,在 SV1 上要花半小时从 100000 降下来,在 SV2 上约以 2300 打开,几秒内就到达工作点。同一矿池上 200 TH/s 的 ASIC 则以高出两个数量级的数值打开。无需配置、无需按端口调校、无需等待:矿机告诉矿池自己是什么,矿池在自己设定的边界内予以采信。
比特币现金上的 SV2 与比特币上的 SV2 有何不同?
如果你已经用 SV2 挖比特币,BCH 上的客户端体验是一样的:相同的握手、相同的通道类型、相同的授权密钥核验。不同之处在下层,在矿池构建和校验模板的方式。
| 方面 | 比特币上的 SV2 | 比特币现金上的 SV2 |
|---|---|---|
| coinbase 结构 | 含见证承诺输出(隔离见证) | 无见证;coinbase 只承载支付输出 |
| 矿工身份 | bech32(bc1…)或传统地址 | CashAddr,带前缀或不带,校验和经过验证 |
| 难度调整 | 每 2016 个区块 | 每个区块(ASERT)——目标持续变动 |
| 模板协商 | Job Declaration 允许矿工提出交易集合 | 不提供:矿池构建模板,矿机负责核验 |
| 区块奖励 | 3.125 BTC + 手续费 | 3.125 BCH + 手续费 |
| 网络难度(2026 年 9 月) | 数十万亿 | 数千亿——234 TH/s 的 ASIC 在独立挖矿下有现实机会 |
其中三点值得细看。
模板中没有见证承诺会带来什么变化?
在比特币上,coinbase 交易带有一个见证承诺输出,SV2 任务中包含为它预留的空间。比特币现金没有这样的东西,而假定其存在的模板构建器会产出无效区块。把这一点处理正确,是把 SV2 移植到 BCH 时最重要的适配:扩展通道的任务必须描述一个 BCH 节点能够接受的 coinbase,而在收到解时的区块组装必须重建出完全相同的 coinbase。我们用唯一算数的方式验证了它:在私有 BCH 网络上通过 SV2 挖出真实区块,并让节点接受它们。
CashAddr 身份在 SV2 下如何工作?
在 SV2 中,矿工身份随通道打开消息一同传来,矿池据此推导出支付输出。在 BCH 上这个身份是 CashAddr,矿池必须像处理 SV1 一样,先对它分类、校验其校验和、拒绝拼写错误,然后才下发任何工作。我们直接做了测试:地址中带有一个字符错误、通过 SV2 接入的矿机会在通道打开阶段被拒绝,收不到任何工作,也不会创建用户记录。保护 SV1 矿工的那套地址安全机制,通过同一段代码同样保护 SV2 矿工,因为身份校验是共享的而非复制的。
逐区块的难度调整为什么与 SV2 有关?
比特币的难度会连续两周保持不变;矿池模板只有在新区块到达时才会过时。比特币现金的 ASERT 算法在每个区块之后重新计算目标,因此每个模板携带的网络目标都略有不同,矿池必须立即把它传播给已打开的通道。在我们的私有网络测试中,新模板在链尖切换的同一秒内到达 SV2 通道,且在区块连续到达的情况下没有任何 share 因过时被拒绝。在 BCH 区块大约每十分钟到达一次的主网上,余量非常充裕;重要的是,验证是在远比生产环境严苛的条件下完成的。
为什么只支持扩展通道?
Stratum V2 定义了两种通道类型。在标准通道中,矿池计算 merkle root,并把一个完成的区块头发给矿机去穷举。在扩展通道中,矿池发送 coinbase 模板和 merkle path,由矿机自己组装区块头,这意味着它可以在哈希之前查看 coinbase。对独立矿池而言,这个选择没有悬念。独立矿工之所以应该想要 SV2,正是因为能够确认即将挖到的区块支付给自己,而只有扩展通道提供这一点。标准通道给的是没有验证的加密:复杂度不变,价值减半。
因此 SoloFury 的 BCH 接入点只接受扩展通道。请求标准通道的固件会在打开阶段被拒绝并返回明确的 unsupported-channel-type 错误,而不是被接纳进一个悄无声息地无法产生有效 share 的通道。我们在生产中测试的两种固件都在数秒内自行切换到了扩展通道。如果你的固件没有这样做,请把通道类型设为扩展并重新连接。
如何证明支付与 SV1 完全一致?
这是最需要谨慎的部分,因为这里的错误不会让任何东西崩溃。它只会悄悄地把钱付到错误的地址。指导性的设计原则是:矿池中决定区块奖励去向的地方必须有且只有一个,两种协议都必须经过它。协议层收到的支付输出是已经构建好的字节;它从不自行构建。随后我们验证了这一原则是否成立。
差分测试。 同一矿机、同一矿池实例、同一私有网络。一个区块通过 SV1 挖出,一个通过 SV2 挖出。coinbase 逐个输出比对:金额相同、目标地址相同、scriptSig 中的矿池签名相同。只有区块高度和时间戳不同,这本就应当如此。
并发。 在第一台矿机通过 SV2 挖矿的同时,第二台矿机用另一个地址通过 SV1 接入。两者都挖到了区块。每个区块都支付给了各自的矿工;有争议的那一例我们用区块哈希做了核实——因为快速的测试网让其中一个成了孤块,而按高度查询一度给我们看到了错误的区块。
资金全流程。 通过 SV2 挖出的区块经过成熟期后,矿工的钱包在一笔已确认的交易中花掉了这些奖励。挖出、归属、支付、收到、花费。
规模。 一次通宵压力测试:单台 Bitaxe 在一条 SV2 通道上,八个半小时内在私有网络挖出超过五万个区块。零崩溃、零断言失败,内存增长只与找到的区块数成正比,别无其他因素。
最后,SV1 现有的端到端测试套件——覆盖每种地址格式、手续费分配与拒绝路径的三十一个场景——在启用 SV2 的构建上运行了两次:一次让 SV2 处于休眠,一次让 SV2 监听器在同一进程中处于活动状态。两次都是三十一项全部通过。在源码层面,新构建的 SV1 路径与此前的生产构建相比,只多了一个已初始化的局部变量。
Stratum V2 真的无法在比特币现金上运行吗?
并非如此,但你会被这样告知。我们询问了几个当下的 AI 助手,BCH 是否已有 SV2、需要什么条件;回答从「零,完全是未开垦的领域」到一份会让它变得不切实际的技术障碍清单不等。这些障碍每一条都有具体的答案,而且同样的问题还会被反复提出,因此在此连同我们的实测一并列出。
| 常见说法 | 实际情况 |
|---|---|
| 「没有矿池为比特币现金运行 SV2」 | 至少有两家在运行,SoloFury 是其中之一,处于生产状态,具备 Noise 加密和已公开的授权密钥。 |
| 「参考技术栈需要 BCH 节点所没有的节点间模板接口」 | 那个接口只有 Job Declaration 的代理路径才需要。矿池侧的 SV2 服务器需要的是区块模板和新区块通知,比特币现金节点今天两者都提供。已在生产中验证。 |
| 「BCH 的模板下发是拉取式的,因此会失去 SV2 的低延迟推送」 | 区块到达的那一刻矿池就会收到推送通知并立即重建模板;测试中 SV2 通道在链尖切换的同一秒内收到了新任务,而当时区块到达的频率远高于主网。 |
| 「规范假定 coinbase 中存在隔离见证,因此 BCH 的移植必须偏离规范」 | 见证承诺是比特币的共识规则,不是 Stratum V2 的规则。协议只传输该链所要求的 coinbase 输出。在 BCH 上模板根本没有这一项,而 BCH 节点接受了以此方式挖出的每一个区块。 |
| 「在 BCH 上必须关闭 version rolling」 | 比特币现金支持 BIP320 的 version rolling,这里的 SV2 通道授予完整的 BIP320 掩码。它是开启的。 |
| 「没有固件为 BCH 说 SV2」 | 固件与链无关:你把它指向哪个矿池,它就与哪个矿池说 SV2。AxeOS 与 Braiins OS+ 都在没有任何 BCH 专属设置的情况下,向 BCH 接入点打开了扩展通道。 |
| 「BCH 的大区块使 SV2 对矿工不切实际」 | 在扩展通道上矿机收到的是 coinbase 和 merkle path,从不接收交易。无论区块是 1 MB 还是 32 MB,其大小对矿机都是不可见的。 |
| 「没有 Job Declaration,BCH 上的 SV2 毫无意义」 | Job Declaration 的存在是为了让矿池矿工能够抵抗矿池对交易的审查。独立矿工是区块的唯一受益者,并通过扩展通道看到 coinbase。对独立挖矿而言重要的是支付的可验证性,而这正是扩展通道所提供的。 |
| 「对矿工没有实际好处」 | 加密且经过认证的会话;可验证的支付;以及从第一秒起就与设备相称的起始难度,而不是 15 至 30 分钟的下降过程。对小型矿工来说,第三点是立刻能感受到的。 |
还有一处混淆值得澄清:BCH 就是比特币现金。它不是 BCH2(Bitcoin Cash II),不是 BC2(BitcoinII),也不是 XEC(eCash)。这四条都是 SoloFury 支持的 SHA-256 链,但它们是规则各异的独立网络,而把它们混为一谈的搜索结果,正是「BCH 上的 SV2」看起来比实际更空白的重要原因。
如何用 Stratum V2 连接比特币现金矿机?
| 设置项 | 取值 |
|---|---|
| 主机 | 你惯用的 SoloFury BCH 区域接入点(与 SV1 相同的主机名) |
| 端口 | 7333(标准)或 7343(高难度;由于难度来自申报算力,目前两者行为相同) |
| 协议 | Stratum V2,扩展通道 |
| 授权公钥 | 9c5s3n4RzRrDhzMBr3iSJsUfreSLPGiHkQyyzJjYAVWK9YWaZf7 |
| 用户名 | 你的 BCH 地址(带或不带前缀),后接 .矿机名 |
| 密码 | 任意 |
各家固件放置密钥的位置不同。有的在协议选择旁有专门字段;有的则要求写进 URL:
stratum2+tcp://你的BCH区域接入点:7333/9c5s3n4RzRrDhzMBr3iSJsUfreSLPGiHkQyyzJjYAVWK9YWaZf7
密钥在所有区域相同,这是刻意的设计。在故障期间从一个接入点切换到另一个的矿机,仍保持同一个经过验证的身份,无需重新配置即可重连。如果固件在通道打开时报错,请先检查通道类型:必须是扩展通道。
启动向导会为你的地址和硬件生成准确的配置,BCH 矿池页面列出了所有接入点。关于协议本身可参阅 Stratum V2 与 V1,关于这条链可参阅写给矿工的比特币现金说明。
这对比特币现金独立挖矿意味着什么?
两件事,一件立竿见影,一件来得更慢。
立竿见影的是安全。2026 年 9 月 BCH 的网络难度处于数千亿量级,比比特币低约两个数量级。一台 234 TH/s 的 ASIC 在数日之内挖到 BCH 区块的机会是现实的,而一小群业余设备在一年的尺度上也有值得考虑的机会。对这些矿工来说,被劫持的任务是一次真实的财务事件而非四舍五入的误差,SV2 为他们关上了那扇门。
来得更慢的,是加密的、可验证的、了解硬件的挖矿对小型矿工体验的影响。一台在第一秒就以正确难度打开、走在可信通道上、并展示着自己能读懂的 coinbase 的 Bitaxe,与同一台设备在明文套接字上以工业级难度耗掉最初半小时,是两种不同的产品。硬件没有变,变的是协议。比特币现金的矿工现在有了这个选项,而端口已经打开。
常见问题
比特币现金独立挖矿可以使用 Stratum V2 吗?
可以。SoloFury 在九个区域全部以生产状态运行比特币现金的 Stratum V2,端口为 7333(标准)和 7343(高难度)。Stratum V1 仍在 7070 至 7072 端口可用,现有矿工无需任何改动。
Stratum V2 对比特币现金矿工实际改变了什么?
有三点能明显感受到:连接端到端加密,路径上的任何人都无法读取或篡改你的工作;你的矿机可以核对将要支付给你的 coinbase 交易;起始难度来自固件申报的算力,因此小型设备不会把最初半小时耗在为工业级 ASIC 设定的难度上。
BCH 上的 SV2 与 SV1 的支付方式不同吗?
不同。两种协议在矿池内部共用同一条支付路径。投入生产之前,我们用同一台矿机在私有测试网上分别通过 SV1 和 SV2 挖出区块,并逐字节比较 coinbase:输出相同、地址相同、分配相同。协议改变的是工作传输的方式,而不是奖励的去向。
哪些固件支持比特币现金上的 Stratum V2?
任何带有支持扩展通道的 Stratum V2 客户端的固件都可以。我们在生产环境中验证了 Bitaxe 设备上的 AxeOS 和 Antminer 硬件上的 Braiins OS+。标准通道会被刻意拒绝并返回明确错误,因为在独立矿池上标准通道无法提供 coinbase 验证,而这正是 SV2 的意义所在。
SoloFury 用于比特币现金的授权公钥是什么?
9c5s3n4RzRrDhzMBr3iSJsUfreSLPGiHkQyyzJjYAVWK9YWaZf7。它在所有区域完全相同,因此矿机在切换接入点时仍保持同一个经过验证的身份。将它填入固件的 authority key 字段,或按固件要求以 stratum2+tcp://host:7333/密钥 的形式附加到矿池 URL。
比特币现金上的 Stratum V2 与比特币上的有何不同?
协议本身相同,不同的是底层链。BCH 没有隔离见证,因此 coinbase 不含见证承诺;矿工身份是 CashAddr 而非 bech32 地址;BCH 采用 ASERT 在每个区块后调整难度,而不是每 2016 个区块一次。这三点都影响矿池构建和校验你的矿机所用模板的方式。
为什么 SV2 上我的矿机以较低难度启动,而 SV1 是从 100000 开始?
因为 SV2 在通道打开时会询问矿机的标称算力并计算相应目标,而 SV1 给每个新连接同样的矿池默认值,再让可变难度随时间修正。在 BCH 上我们测得一台 1.5 TH/s 的设备在 SV2 下约以 2300 打开,而在 SV1 下从 100000 降下来需要 15 至 30 分钟。
比特币现金上的 SV2 在投入生产前是如何测试的?
协议层的单元测试与模糊测试,在私有网络上包含真实挖出区块的完整端到端测试套件,同一矿机 SV1 与 SV2 coinbase 的逐字节比较,SV1 与 SV2 同时挖矿并通过区块哈希核实支付相互独立,从挖出到花费的完整资金流程,以及一次超过五万个区块的通宵压力测试且全程无崩溃。之后按区域分批上线。