矿工如何使用 nonce?
矿工会构建区块头,将 nonce 设为 0 并计算哈希。如果哈希值大于目标值,就把 nonce 设为 1 再试一次,然后是 2,依此类推。Nonce 是“只使用一次的数字”的简称。
没有哪个 nonce 比其他的更好。哈希无法预测,所以每次尝试获胜的概率都一样低。这就是挖矿公平的原因:每秒尝试次数越多,机会越多,除此之外没有别的因素能帮上忙。
Nonce 用完后会发生什么?
4 个字节只能表示 4,294,967,296 个值。现代机器不到千分之一秒就能试完所有值。所以矿工会更改区块中的其他内容,再从头开始尝试 nonce。
矿工的循环
- 01
把每个 nonce 都试一遍
0、1、2 一直到 4,294,967,295。这就是 4 字节能存的全部数值。
- 02
很快用完
一台 100 TH/s 的机器,大概 43 百万分之一秒就能把它们全试完。
- 03
修改额外 nonce
矿工会在自己的奖励交易(coinbase)里改一个备用字段。
- 04
新的默克尔根
那笔交易变了,所以 merkle root 也会变,每个 nonce 又会产出全新的哈希。
通常会使用额外 nonce,也就是 coinbase 交易中的一个备用字段。更改它会改变 Merkle 根,从而产生一整套全新的区块头供矿工尝试。矿工还可以微调时间戳;如今许多机器也能调整版本字段中的几位。
来源
- Nonce(随机数) · Bitcoin Wiki
- 区块哈希算法 · Bitcoin Wiki
- 区块链参考资料:区块头、默克尔树、目标值 · 比特币开发者文档
本页的实时数据来自 CloudMineCrypto API 和公开的链上数据,会定期更新,并在相应位置标明。仅供学习参考,不构成财务建议。