Mining Pool 负责协调多个矿工,并按约定规则分配收入。单个矿工不必等自己的机器找到区块后才开始获得报酬。矿池不会降低 Bitcoin 的挖矿难度,也不保证盈利;它主要改变的是工作量的计量方式和报酬的支付方式。
安娜有一台矿机。她每天都要支付电费,但独自挖矿时,可能很久都找不到自己的区块。如果她找到被网络接受的区块,就能获得该区块的奖励;在此之前,这份挖矿工作没有收入。等得久也不意味着即将成功。在条件不变时,每次新的尝试仍有相同的成功概率。 加入矿池后,她的机器与其他机器一起工作。即使某个区块不是她找到的,矿池也能按测得的贡献和约定的报酬模型给她付钱。安娜放弃独享自己区块全部收入的机会,换取较小、通常更稳定的收入。这不会降低网络难度,也不会凭空增加奖励。矿池通常还会收取费用。收入能否覆盖电费和设备成本,是另一个问题。 [6] [7]
矿池看不到安娜机器的每一次计算,却需要确认它确实在工作,并估算它的贡献。因此,矿池设置了比 Bitcoin 网络更容易满足的条件。满足这一条件的结果叫作 Mining Share,简称 share。这样,即使没有找到区块,机器也能经常提交可验证的结果。 矿池根据被接受的 shares 及其难度,统计估算工作量,而不是精确数出所有尝试。如果两台设备的 share 难度不同,就不能直接比较提交次数。普通 share 不会产生 Bitcoin 区块,也不会确认一笔付款。只有少数同时满足网络条件的结果,才允许提交区块;该区块还必须通过其他检查。因此,share 是给矿池看的工作证明,不是机器刚刚制造出来的一小块比特币。 [7] [9]
安娜把同一台机器接入不同矿池,可能会看到不同的收入变化。原因之一就是报酬计算模型。PPS,即 Pay Per Share,会根据被接受的 share 的难度,记入预先确定的期望价值。安娜不必等矿池幸运地找到区块:区块发现数量的随机波动风险由运营方承担。但这既不保证运营方一定有能力付款,也不等于固定时薪。share 数量和挖矿条件仍会变化。 FPPS,即 Full Pay Per Share,通常在新发行比特币的预期份额之外,加上估算的交易手续费收入。PPLNS,即 Pay Per Last N Shares,则按照某个近期窗口内的工作量,分配实际找到的区块收入。因此,报酬更受矿池近期运气的影响。窗口由矿池规则定义,并不一定就是过去一小时。 仅看缩写不足以比较矿池。费用、估算方法、窗口大小,以及如何处理未留在主历史中的 Stale Block,都很重要。报酬模型决定应得金额及其计算方式;什么时候转入钱包,则由另一套付款规则决定。 [7] [8]
安娜看到账号余额不断增加。但在钱进入自己的钱包之前,她仍依赖矿池正确记账并实际付款。因此,需要了解付款时间、是否有最低金额、费用以及收款地址。不同服务的规则不同;自动记入报酬不代表立即转账。 还要关注运行情况:被接受或拒绝的 shares、称为 Share Difficulty 的难度、服务器可用性和备用连接。Firmware 是控制矿机的软件,必须能与矿池配合。将较长时期的矿池记录与自己的运行日志、实际收款相比较,有助于发现差异。找到的区块可以在区块链上核查,但区块链不能展示矿池全部内部账目。能否更换矿池,以及谁选择交易,同样值得关注。 [8] [9]
如果结果送达之前任务已经改变,矿池可能不再计入这份结果。这里的延迟是设备与矿池通信所需的时间。 Share 可能因为过期(stale)、重复、格式错误或不符合分派的任务而被拒绝。矿工与矿池之间的较高延迟、缓慢的任务更新和网络中断会增加无效工作。Stale shares 的比例反映矿工与矿池连接的运行效率,并不等同于区块链上的 Stale Block。 [9]
区块奖励记录在特殊的第一笔交易中,称为 Coinbase Transaction。它的输出规定金额以及日后花费这些资金的条件。因此,奖励可以分配给一个或多个收款方。 Block Template 是包含所选交易的区块草案。 传统矿池通常由运营者构建 Block Template,并决定 coinbase 输出的收款方。矿工主要在分配的任务中尝试不同数值,寻找满足网络条件的结果。这赋予矿池影响交易选择的能力,却不能强迫节点接受无效区块;每个 Full Node 都独立验证区块。Full Node 是按照比特币规则验证区块和交易的程序。 [6] [10]
除了收入金额,还要看谁决定哪些付款进入区块。排除某些交易可能延迟它们的确认。 矿池集中很重要,因为少数协调者可能影响交易纳入、软件部署和短期 Hashrate 分布。Hashrate 是每秒进行的挖矿计算次数。但矿池的 Hashrate 不等于对挖矿设备的所有权:ASIC 是专用矿机,其运营者可以将设备连接到其他矿池。如果更换矿池的成本、合同或固件限制这种能力,风险就会增加。 [6] [10]
Stratum 规定矿机与矿池怎样通信。加密保护传输中的消息,身份认证帮助核实通信对方。 Stratum V1 用于分派挖矿工作,模板控制权通常留在矿池。Stratum V2 更清晰地分离角色,并支持加密和经过身份认证的通信。可选的 Job Declaration Protocol 允许矿工提交自行选择交易的模板,前提是矿工和矿池都支持所需组件。Stratum V2 的 Mining Protocol 可以在没有此功能的情况下运行,因此仅有 Stratum V2 标识并不保证独立的交易选择。 [10]
想进一步了解技术,可以先认识几个词:Block Template 是拟议的区块内容。Worker 标识接入的矿机,或用于记录其工作的账号;区块头是区块关键信息的简短记录。 挖矿任务来自 Block Template 或等效的候选区块构造。BIP22 描述 getblocktemplate,BIP23 描述其矿池挖矿扩展。矿池协议向 worker 传递所需字段、coinbase 交易数据和搜索空间。ASIC Miner 尝试不同的区块头,并计算其哈希,也就是数字指纹。要满足 Proof of Work(工作量证明),这个哈希必须小于或等于网络规定的阈值,称为 target。区块还必须符合比特币的其他规则。 [1] [2] [5]
技术细节:target 是一个数值上限,挖矿计算得到的哈希不能超过它;恰好相等也符合条件。VarDiff 表示可变的 share 难度。 矿池设置较易满足的 share 目标,以足够频繁地收到结果用于测量。比特币网络目标远难于满足。只满足矿池目标的 share 被接受后,按矿池的报酬规则计入;若同一哈希也满足网络目标,就可以提交候选区块。VarDiff 改变 share 的难度及其提交频率,不改变比特币的共识 Difficulty。 [9]
要获得更完整的理解,请将本词条与以下词条结合阅读: 挖矿, Hashrate, Braiins Pool, Stratum V2, Mining Share, Pay Per Share. 反向关联还来自: Coinbase交易, ASIC Miner, Hashrate, Nonce.