
先理解:挖矿与共识机制是什么
在采用工作量证明的区块链中,挖矿是参与者反复计算并尝试生成有效区块的过程。区块通常包含待确认交易以及用于连接前后区块的信息。矿工找到符合网络规则的结果后,会把区块传播给其他节点,由网络节点验证其格式、交易和工作量是否有效。
工作量证明是决定区块如何产生、网络如何在多个候选区块之间形成共同记录的一套规则。挖矿是执行计算工作的过程,工作量证明则规定什么样的计算结果才算有效。两者相关,但不是同一个术语。该机制的一个特点是验证结果相对容易,而寻找结果需要反复试算。

常见核心术语:哈希、难度与Nonce
哈希可以理解为一种固定规则的加密计算结果。矿工改变区块头中的某些数据并重新计算哈希,目标是得到低于网络目标值的结果。只要输入数据发生变化,输出通常也会明显改变,因此其他节点可以较快检查区块是否满足条件。

Nonce是区块头中用于反复尝试的数值。矿工会不断改变Nonce并计算新的哈希;如果可尝试的Nonce范围用尽,挖矿软件还可能调整交易集合、时间或Coinbase交易中的额外数据,以形成新的区块头组合。
难度通常通过目标值体现。目标值越低,满足条件的有效哈希越少,寻找有效结果所需的平均尝试次数就越多。这里的难度描述的是网络规则下的计算要求,不能单独用来判断某个设备或某次挖矿是否一定能够获得收益。
独立挖矿与矿池挖矿有什么区别
独立挖矿由单个矿工自行准备区块并向网络提交。若成功找到有效区块,相关区块奖励和交易费用按照网络规则归属于该矿工或其指定地址,但出块间隔具有随机性,等待时间可能较长。
矿池挖矿则把多个参与者的计算资源集中起来。矿池会设置一个比全网出块目标更宽松的份额目标,使矿工能够更频繁地提交部分计算结果。达到矿池目标的结果称为Share,主要用于证明矿工完成了相应工作;只有同时达到全网目标的结果,才可能成为提交到区块链的有效区块。
矿池通常依据参与者提交的有效份额或其他约定规则分配矿池获得的款项。不同矿池可能采用不同的计算和分配方式,因此“提交了Share”不等于“挖到了一个完整区块”,也不等于必然获得固定金额。
区块模板、Stratum与交易组织
挖矿软件需要获得上一一区块哈希、区块版本、目标值、待处理交易以及奖励接收信息等内容,才能构造新区块。Bitcoin开发资料中提到的getblocktemplate是一种提供这些区块构造信息的接口,软件可据此准备交易并生成区块头。
Stratum是矿池常用的另一类挖矿通信协议。它向矿工提供构造区块头所需的关键信息,以及矿池用于接收Share的目标。与能够提供较完整交易信息的方式相比,Stratum通常让矿池承担更多交易组织工作,矿工侧获得的数据更集中于完成计算所需的部分。
Merkle root,即默克尔根,是由区块交易逐层哈希得到的摘要,并写入区块头。交易集合改变时,默克尔根通常也会改变。它让节点能够用较紧凑的结构验证交易集合与区块之间的对应关系。
分叉、确认与术语适用范围
如果不同矿工几乎同时找到有效区块,网络可能暂时出现两个候选分支。后续区块继续连接后,网络会依据共识规则选择被接受的链,另一分支中的部分交易可能需要重新进入待处理状态。因此,工作量证明网络中的“确认数”通常用于描述交易所在区块之后又增加了多少区块,确认越多通常意味着被临时分支替换的概率降低,但它不是绝对不变的保证。
上述术语主要适用于采用工作量证明的网络。以太坊历史上曾使用工作量证明,但其官方资料说明该网络已在2022年转为权益证明,因此不能把当前以太坊的验证者、质押和出块方式直接称为矿工挖矿。权益证明以质押资产和验证者机制承担共识职责,和工作量证明中的算力竞赛存在明显区别。
判断一篇挖矿介绍是否准确,可以先确认它讨论的共识机制,再区分全网有效区块与矿池Share,最后核对奖励、难度、确认和协议名称的适用范围。这样能避免把矿池记账、设备计算和区块链最终确认混为一谈。