术语表 · 挖矿

Nonce(随机数)

作者:CloudMineCrypto 团队更新于 也称为“只使用一次的数字”

定义

Nonce 是比特币区块头中的一个 32 位数字,矿工每次尝试寻找有效区块时都会更改它。每个新 nonce 都会生成完全不同的哈希,所以矿工通过尝试不同的 nonce 来猜测。

属于比特币挖矿术语表,共收录 88 个通俗易懂的术语。

所有可能的 nonce

4,294,967,296

个可能值,从 0 到 4,294,967,295(32 位)

整个比特币网络每秒大约会遍历所有可能值 189十亿次。根据网络算力得出的实时估算值,每小时更新。

矿工如何使用 nonce?

矿工会构建区块头,将 nonce 设为 0 并计算哈希。如果哈希值大于目标值,就把 nonce 设为 1 再试一次,然后是 2,依此类推。Nonce 是“只使用一次的数字”的简称。

没有哪个 nonce 比其他的更好。哈希无法预测,所以每次尝试获胜的概率都一样低。这就是挖矿公平的原因:每秒尝试次数越多,机会越多,除此之外没有别的因素能帮上忙。

Nonce 用完后会发生什么?

4 个字节只能表示 4,294,967,296 个值。现代机器不到千分之一秒就能试完所有值。所以矿工会更改区块中的其他内容,再从头开始尝试 nonce。

矿工的循环

  1. 01

    把每个 nonce 都试一遍

    0、1、2 一直到 4,294,967,295。这就是 4 字节能存的全部数值。

  2. 02

    很快用完

    一台 100 TH/s 的机器,大概 43 百万分之一秒就能把它们全试完。

  3. 03

    修改额外 nonce

    矿工会在自己的奖励交易(coinbase)里改一个备用字段。

  4. 04

    新的默克尔根

    那笔交易变了,所以 merkle root 也会变,每个 nonce 又会产出全新的哈希。

然后回到第 1 步。矿工也可以稍微调整时间戳,这也会让区块头变掉。

通常会使用额外 nonce,也就是 coinbase 交易中的一个备用字段。更改它会改变 Merkle 根,从而产生一整套全新的区块头供矿工尝试。矿工还可以微调时间戳;如今许多机器也能调整版本字段中的几位。

来源

  1. Nonce(随机数) · Bitcoin Wiki
  2. 区块哈希算法 · Bitcoin Wiki
  3. 区块链参考资料:区块头、默克尔树、目标值 · 比特币开发者文档

本页的实时数据来自 CloudMineCrypto API 和公开的链上数据,会定期更新,并在相应位置标明。仅供学习参考,不构成财务建议。

现在看看挖矿是怎么进行的。

Claim a free 8-hour mining plan in the CloudMineCrypto app and watch your estimated BTC tick up from live network data. Withdraw to your own wallet, Lightning included. Rewards are estimates.