
适用范围:关键词与技术主题
这里所说的比特币挖矿机,是参与比特币工作量证明计算的硬件。本文不据关键词中的“人民日报”声称该媒体发布了教程或推荐具体设备。NIST IR 8202《区块链技术概览》将区块链概括为分布式数字账本,并说明在网络正常运行时,已发布的交易记录难以被改写;Bitcoin Developer Guide 的挖矿章节则介绍了挖矿如何通过添加新区块,使交易历史更难被修改。
挖矿机如何工作
挖矿软件先取得下一候选区块所需的交易和参数,再整理交易、计算默克尔树的根,并将其写入区块头。Bitcoin Developer Guide 描述的区块头为80字节,包含前一区块哈希、时间、版本、目标相关字段、默克尔根和nonce等信息。ASIC硬件反复尝试不同的nonce并计算哈希;只有结果低于网络目标阈值,才符合新区块的工作量条件。
如果nonce需要扩展,挖矿软件可以更新coinbase交易中的extra nonce,并重新计算默克尔根,形成新的区块头继续尝试。找到符合网络目标的结果后,软件将完整区块交给节点广播,供网络处理。
硬件、软件与节点如何配合
矿机并不独立完成全部流程。独立挖矿时,软件可以向Bitcoin Core节点请求getblocktemplate,取得建议纳入区块的交易和相关参数,再构造候选区块;加入矿池时,软件连接矿池并接收当前任务信息。硬件负责计算,软件负责准备区块头并跟踪任务变化,节点或矿池则提供数据、接收提交结果。
独立挖矿与矿池挖矿的区别
独立挖矿由矿工自行寻找达到全网目标的区块。若区块被网络接收,区块奖励和交易手续费归该矿工;但找到区块的时间可能较长,等待间隔也有较大波动。
矿池把多个参与者的算力汇集起来,并设置比全网目标更宽松的share阈值。矿机提交符合该阈值的结果,作为已完成一定计算工作的证明。多数share不符合全网目标,不能作为链上区块;少数share也可能达到全网目标,矿池会将相应区块提交给网络。矿池依据工作份额分配所得奖励和手续费,但具体分配方式因矿池而异。
常见通信方式与能力差异
getblocktemplate会提供交易列表以及版本、前一区块哈希、目标相关字段等信息。使用这种方式时,挖矿软件可以检查交易,并按规则增添或移除非必需交易。Stratum提供构造coinbase、默克尔根和区块头所需的精简信息;使用Stratum的矿工不能查看或添加当前正在挖掘区块中的交易。较早的getwork方式已被开发指南标注为弃用。
常见问题与入门边界
share是不是正式区块?不是。share是达到矿池较宽松目标的工作证明;只有同时满足全网目标的结果,才有机会成为提交给网络的区块候选,之后还需经过网络处理。
有了矿机就能完成整个流程吗?不能简单这样理解。通常还需要挖矿软件构造区块头,并通过节点或矿池取得任务、提交结果。选择独立挖矿还是加入矿池,以及使用哪种通信协议,会影响软件取得和处理区块信息的方式。
share是否对应固定金额?不能一概而论。它记录的是工作份额,矿池的分配制度各不相同;了解具体结算方式,应查看相应矿池的规则。本文讨论的是比特币挖矿的一般技术流程,不用于判断设备收益或作出购买建议。