比特币挖矿本质上不是破解某个复杂数学题,而是围绕区块头持续执行双重 sha-256 哈希,寻找一个不大于网络目标值的结果。矿工把待确认交易、前一区块哈希、时间戳和奖励交易组合成候选区块,再由专用矿机不断修改参数进行计算。哈希输出具有近似随机性,任何输入只要改变一个比特,结果都可能完全不同,因此挖矿更像一场由算力、功耗和设备效率决定的概率竞争,而不是谁能推导出唯一答案。

真正送进 ASIC 矿机反复计算的核心数据,是一个 80 字节的区块头,包含版本号、前一区块哈希、Merkle Root、时间戳、nBits 和 nonce 六个字段。矿池或挖矿软件会从交易池中挑选交易,构造 coinbase 交易,把矿工或矿池的收款地址写入再将全部交易组织成 Merkle Tree,得到代表交易集合的 Merkle Root。矿机计算区块头双 SHA-256的结果,并把这个 256 位数字与 nBits 解码出的目标值比较,只有结果小于或等于目标值,区块才具备通过工作量证明的资格。
nonce 是区块头里专门留给矿工尝试的 32 位字段,理论上约有 42.9 亿种组合。现代 ASIC 的哈希速度极高,很快就能扫完这一区间,所以矿工不会只盯着 nonce。挖矿软件还会修改 coinbase 交易中的 extra nonce,使 coinbase 哈希变化,进而改变 Merkle Root,再重新生成一组区块头;时间戳、版本字段和交易排列也能提供额外变化空间。这样,矿机就能持续获得几乎无限的搜索范围,而不必等待网络出现新交易。

网络难度并不是矿工自行决定的,而是由共识规则约束。比特币每产生 2016 个区块,会根据这一周期实际耗时调整目标值,设计目标是让平均出块时间维持在约十分钟;出块过快,目标值降低,挖矿难度上升,出块过慢则相反。区块头中的 nBits 使用紧凑格式保存目标参数,节点收到新区块后无需重复进行海量计算,只要验证交易、Merkle Root、前区块哈希以及双 SHA-256 结果是否满足目标即可,这也是工作量证明验证容易、生成困难的关键。

现实中的比特币挖矿大多通过矿池完成。矿池利用 Stratum 等协议向矿工下发交易、coinbase 信息、Merkle 分支、前区块哈希和目标阈值,并设置一个比全网目标更宽松的 share 难度。矿机提交大量低难度 share,用来证明自己贡献了相应算力;其中极少数同时满足全网目标的 share,会被矿池包装成完整区块并广播。节点确认区块有效后,矿池再按照算力贡献或 share 数量分配收益。由此看,挖矿的技术核心包括交易组装、区块头构造、Merkle Root 更新、ASIC 哈希计算、矿池通信和节点验证,收益则最终取决于全网难度、设备能效、电价、手续费与比特币市场价格的综合变化。