
先理解“抓获”与挖矿术语的关系
“抓获”不是比特币挖矿流程中通常使用的标准术语。它可能是检索语句中的表达,实际想了解的内容往往包括如何寻找有效区块、矿工如何提交计算结果,以及矿池如何确认工作量。以下解释只针对比特币工作量证明挖矿及相关区块链基础概念,不延伸到特定矿机、矿池或项目。
工作量证明、哈希与目标阈值
比特币挖矿的核心是工作量证明。矿工不断改变区块头中的部分数据并计算哈希值,只有当结果低于网络规定的目标阈值时,区块才可能被网络接受。哈希函数会把输入转换为固定形式的结果,输入发生细微变化,输出通常也会明显改变,因此矿工不能直接推算出答案,只能反复尝试。

“难度”可以理解为寻找合格哈希结果的相对困难程度,而“目标阈值”是判断哈希是否合格的具体边界。目标越严格,满足条件的哈希越少,平均需要尝试的次数就越多。目标阈值和难度相关,但二者并不是同一个字段。

区块头、随机数与默克尔根
矿工并不是对整条区块链进行计算,而是围绕候选区块构造区块头。区块头包含版本、前一区块哈希、默克尔根、时间、难度目标相关字段和随机数等信息。随机数通常指区块头中的 nonce,矿机会遍历不同 nonce,寻找满足目标的哈希。
当 nonce 的可尝试范围不足以继续产生新结果时,挖矿软件还可以改变 coinbase 交易中的额外随机数据。coinbase 交易是新区块中特殊的交易,通常用于记录区块奖励归属信息;它发生变化后,相关交易哈希会变化,进而形成新的默克尔根。默克尔根是交易集合经过哈希树汇总得到的根值,用于把区块中的交易内容与区块头关联起来。
独立挖矿与矿池挖矿
独立挖矿是矿工自行构造候选区块并直接参与寻找有效区块。若找到符合网络目标的区块,区块奖励和交易费用按照规则归属于相应的收款安排,但成功出现的时间具有较大随机性。矿池挖矿则把多个矿工的计算能力组织起来,由矿池提供任务并根据各矿工提交的工作证明进行记录和分配。
矿池通常会设置一个比网络目标更宽松的目标,让矿机提交大量“份额”。份额不一定足以让区块被整个网络接受,但可以证明矿机完成了一定量的哈希尝试。偶尔会有某个份额同时达到网络目标,这时它才可能成为提交到网络的有效区块候选。份额是矿池核算工作量的技术凭据,不等同于区块奖励,也不代表必然获得收益。
getblocktemplate 与 Stratum 怎么区分
getblocktemplate 是一种用于获取候选区块信息的接口方式,可提供交易、前一区块哈希、版本、目标等构造区块所需内容。挖矿软件据此组织交易、计算默克尔根,并把区块头交给专用硬件反复尝试。该方式适合需要较完整区块信息的工作流程。
Stratum 是矿池常用的挖矿通信协议,重点是向矿工提供构造区块头所需的必要信息,以及矿池用于接收份额的目标。它通常通过持续的双向连接及时更新任务。与能够提供较完整交易信息的方式相比,使用 Stratum 的矿工通常不会自行检查或改动当前任务中的全部交易。二者都是通信或任务分发机制,不是共识算法本身。
常见问题与适用范围
问:找到一个低于矿池目标的哈希,就是挖到新区块吗?答:不一定。矿池目标通常比网络目标宽松,低于矿池目标只能作为份额提交;还必须满足网络目标及区块有效性要求,才可能被网络接受为新区块。
问:nonce 越大,成功概率越高吗?答:不是。nonce 只是改变区块头输入的一种方式,哈希结果具有不可预测性,某个具体 nonce 的大小不会直接决定成功概率。
问:矿池份额是否等同于区块链上的交易记录?答:不是。份额主要用于矿池内部证明和核算,只有符合网络规则并被网络接受的完整区块,才会进入区块链。上述术语主要适用于比特币的工作量证明挖矿;采用权益证明或其他共识机制的区块链,流程和术语会有所不同。