
“最早”的适用范围
比特币挖矿文档介绍了独立挖矿、矿池挖矿及任务接口,但不足以据此认定哪一家是历史上最早的矿池。讨论“早期挖矿方法”时,也应把软件接口的先后与矿池成立的先后分开;前者不能证明后者。本文围绕通用技术术语展开。
哈希:把数据变成摘要
NIST《安全哈希标准》说明,哈希算法能够为消息生成摘要,用于检测消息是否发生变化。理解挖矿时,可以把摘要看成依照固定规则计算出的结果:输入改变,就需要重新计算,不能凭肉眼判断结果是否满足条件。
摘要本身不说明谁提交了数据,也不直接证明一个区块有效。挖矿中的哈希条件只是区块验证的一部分,交易及其他区块内容仍须符合规则。
独立挖矿与矿池:工作如何组织
比特币挖矿指南将独立挖矿解释为矿工自行尝试生成区块,矿池挖矿则是多人协作,并通过提交的份额衡量贡献。矿池改变的是工作组织和报酬分配方式,并不取消找到有效区块的不确定性。
这里的“协作”可以理解为分工尝试不同候选数据,而不是把不同矿工的哈希结果相加,拼出一个合格结果。最终仍需出现满足网络条件的候选区块。
目标值、难度与份额
目标值是哈希结果必须满足的数值上限。目标值越小,条件越严格,难度越高。矿池通常采用比网络目标更宽松的份额目标;满足份额要求的提交称为 share,其中只有部分也满足网络出块条件。
因此,“份额被接受”与“区块被网络接受”是不同事件。份额用于统计工作贡献,不是一枚比特币,也不是已经确认的区块。比较贡献时还要考虑份额对应的难度,不能在条件不同的情况下只比较提交次数。
Nonce 与任务接口
Nonce 是区块头中可调整的字段;extra nonce 位于 coinbase 交易中,可通过改变默克尔根扩展尝试空间。这里的 coinbase 指区块中的特殊交易,不指同名交易平台。
getwork 是早期任务接口,getblocktemplate 提供构造区块所需的模板,Stratum 则用于矿工与矿池交换任务和提交结果。这些名称描述通信与任务构造方式,不能据此判断某个矿池的历史地位。阅读旧文档时,接口描述也应放回其版本背景中理解。