
挖矿究竟在做什么
矿工先依据待确认交易等信息构造候选区块,再对区块头反复进行哈希计算。只有计算结果低于网络规定的目标值,候选区块才满足这一项工作量证明要求。找到结果后,矿工将完整区块传播给网络;区块是否被接受,还取决于其他节点对区块及其中交易的验证。
哈希函数把输入转换为固定形式的摘要。输入只要发生变化,摘要就可能随之改变,因此矿工可以通过调整区块头相关数据不断尝试。这是大量试算的过程,并非预先知道哪个随机数一定有效。

区块头、随机数与额外随机数
区块头是参与挖矿计算的关键数据结构,包含前一区块哈希、默克尔根、时间、目标值的编码信息以及随机数等字段。前一区块哈希把候选区块与已有链条连接起来;目标值则是判断本次计算结果是否合格的门槛。

随机数通常称为 nonce。矿机可以不断更换它,得到不同的区块头哈希。由于区块头中的 nonce 字段可取值有限,矿工还会改变创币交易中的额外随机数,使该交易及默克尔根发生变化,从而产生新的区块头继续尝试。这里的“额外随机数”与区块头里的 nonce 不在同一位置。
默克尔根、目标值和难度
默克尔根是根据区块内交易构建默克尔树后得到的汇总值,它被写入区块头。改变创币交易中的额外随机数,会改变相关交易哈希,进而需要更新默克尔根。这样,即使其他区块头字段保持不变,矿工也能获得新的计算输入。
目标值用于比较哈希结果:结果必须低于目标值才符合要求。目标值越低,随机尝试命中的机会越小,也就越难找到合格区块。“难度”是描述这一门槛的术语,不应与矿机算力混为一谈;算力描述的是单位时间内进行哈希尝试的能力。
独立挖矿与矿池份额
独立挖矿由矿工自行寻找合格区块。矿池挖矿则让多个矿工按矿池分配的任务参与试算,矿池可设置比网络目标更容易达到的份额目标。矿工提交符合矿池要求的结果,称为份额;它可供矿池核验工作量,但普通份额不等于网络认可的区块。
如果某个结果同时满足更严格的网络目标,矿池就可以尝试将对应区块广播到网络。矿池如何依据份额分配所得,取决于其采用的规则。因此,理解“提交份额”和“找到有效区块”的区别,比单看提交次数更重要。
适用范围与常见疑问
上述术语用于理解比特币的工作量证明挖矿流程;其他区块链即使也使用“挖矿”一词,规则也可能不同。哈希结果低于矿池目标,只说明满足该矿池设定的份额门槛,不能据此判断已经产生新区块。反过来,找到满足网络目标的哈希也只是候选区块通过工作量证明检查,仍需符合网络的其他验证规则。