什么是 Nonce?
Nonce 是一个一次性使用的数字,用来使一次加密尝试具有唯一性。在比特币式挖矿中,它是矿工反复调整的临时值,直到区块哈希符合规则。把它想象成不断旋转保险箱转盘,直到它卡位为止。
误解
Nonce 总是随机的。不完全是。它只需对那次尝试唯一,因此矿工常常按顺序尝试数值,而不是从随机生成器取值。
Nonce 的工作原理
以下是挖矿的快速步骤。想象一名矿工坐在键盘前,手握咖啡,以机器速度尝试不同数值。
- 步骤 1: 矿工收集交易并准备好 区块头。
- 步骤 2: 他们尝试一个 Nonce 值,对区块头做哈希,然后检查结果是否满足由 网络难度设定的目标。
- 步骤 3: 如果失败,他们更改该值并再次尝试。重复。很多次。
- 步骤 4: 当成功时,矿工广播该区块,任何人都可以通过对相同的区块头加上所含的 区块数据 进行哈希来验证。
- 步骤 5: 到下一个区块,重新开始搜索。同样的过程,新一轮。
就是这样。
Nonce 的重要性
那对你有什么好处?
- 好处: 它让工作量证明可被任何人验证,这有助于保证区块产生的可信性。
- 视角: 在基于账户的链上,交易计数器也称为 Nonce,有助于阻止 重放攻击 和异常的重排手法。
- 相关性: 你会在区块浏览器、钱包界面、挖矿面板和开发工具中看到它。
小贴士
在查看区块浏览器时,请确认页面显示的是区块中的挖矿 Nonce 还是账户的交易计数器。相同的词,不同的作用。
Nonce 的关键特性
你需要关心的要点:
- 唯一性: 在特定的加密尝试中仅使用一次,之后在该位置不再重复使用。
- 可调: 在挖矿中,它是矿工用来寻找有效哈希的调节项。
- 可验证: 任何人都可以重新计算哈希来确认该结果,无需信任。
- 有限: 比特币提供了一个 32 位字段,因此当用尽时,矿工还会改变其他字段来扩展搜索。
变体
同一名称,有几种值得了解的形式:
- 挖矿: 位于区块头内用于工作量证明搜索的值。
- 额外: 塞在 coinbase 交易中的额外 nonce,用来扩展搜索空间。
- 账户: 在以太坊等链上作为交易计数器,防止重复并强制执行顺序。
- 签名: ECDSA 签名中的秘密随机值,绝不可重复,否则密钥可能泄露。
提醒
它不是密码。它随区块或交易一起公布,它的作用是使计算具有唯一性并可验证。
示例
矿工在区块头中循环尝试数值数十亿次,直到某个值使哈希以一长串零开头,然后提交该区块。
趣闻
Nonce 一词源自中古英语短语,意为“为此场合”。密码学家很早以前就采用该词来表示一次性数字,远早于 GPU 和迷因币 出现。
总结
一句话总结:它是一种一次性数字,使工作量证明和许多加密技巧得以运行,无需中介。
