Nonce
数据板排行榜对比研究方法论
数据板排行榜对比研究方法论常见问题Nonce 是什么
© 2026 Nonce
›
数据板›Nonce 是什么

Nonce 是什么:英文原义、密码学含义与比特币挖矿中的随机数

Nonce 指「只用一次、用完即弃」的东西。在英语中它保留在固定短语 for the nonce 里;在密码学中它是防止重放攻击的一次性值;在比特币挖矿中,它是矿工不断变更、用来寻找有效区块哈希的 32 位字段。

有三个不同的领域都在用 nonce 这个词,而它们底层的含义其实是同一个:只用一次、用完即弃。这个页面依次讲清楚它的英文原义、词源、密码学含义、比特币挖矿中的含义,以及以它命名的比特币矿场管理平台 Nonce。

nonce/nɒns/ 英/nɑːns/ 美

名词、形容词。源自中古英语,约 1200 年。复数 nonces。

英文原义

1名词古语

指「这一次、当下这个场合或目的」。今天几乎只保留在固定短语 for the nonce 中,意为「暂且」「就这一次」「针对眼下这个目的」。

2形容词语言学

指「为一次性使用而造、并不打算长期存在的」。最典型的搭配是 nonce word:为某一次特定场合临时造出来、之后并未进入通用词汇的词。

莎士比亚和乔伊斯都是临时造词(nonce word)的高产作者。

形容词用法比名词晚得多。1884 年,James Murray 主编《新英语词典》(即后来的《牛津英语词典》)时,需要一个标签来标注那些看起来只被使用过一次的词,于是造出了 nonce-word。形容词用法就是从这条编辑惯例扩散开来的。

词源:一次将错就错的断词

nonce 是一个「错着错着就成真」的词。它最初的中古英语短语是 for then anes,意思是「为了这一个目的」,其中 then 是定冠词的屈折形式。后来读者逐渐把词与词之间的边界划错了位置,把 then anes 重新拆成了 the nanes,那个多出来的 n 就从冠词滑到了后一个词上,英语于是得到了 for the nonce。

这种断词错误在英语里被称为「重新划界」(rebracketing),并不是孤例:

原形被错误重划为结果
for then anesfor the nanesnonce
an ewta newtnewt
a nadderan adderadder
a napronan apronapron

该短语约在 1200 年前后已有文献记录;乔叟在《坎特伯雷故事集》总引中使用了 for the nones——到那时它已经成了诗人们凑音节时顺手可用的填充语。

有一点需要澄清:nonce 不是 “number used once”(只用一次的数字)的缩写。那是后人根据密码学用法造出来的逆向缩写,好记,但不是词源。

密码学中的 nonce

3名词密码学

指协议中只使用一次的任意值,用来让每一条消息、每一次会话都保持唯一。它的作用是阻止攻击者录下一段合法通信、之后原样重放来冒充合法方。

服务器在每一次认证质询时都会下发一个全新的 nonce,因此被截获的响应第二次就失效了。

原理并不复杂:如果一条消息里包含一个接收方从未见过、并且此后永远不会再接受的值,那么这条消息的副本就无法被重复使用。没有 nonce,攻击者甚至不需要破解加密——直接把同一条加密订单再发十遍就够了。

nonce 在现代安全工程中随处可见:

  • HTTP 摘要认证:每次返回 401 质询时都下发新的 nonce,使每个响应只在一次交互中有效。
  • AEAD 加密算法:AES-GCM、ChaCha20-Poly1305 等把 nonce 与密钥配对,确保同一把密钥不会两次产生相同的密钥流。在这里重复使用 nonce 是灾难性的。
  • 以太坊账户:每个账户都有一个随交易递增的 nonce,用于固定交易顺序,并防止同一笔交易被打包两次。
  • 签名 API 请求:通常会同时携带 nonce 与时间戳,使被截获的请求无法重新提交。

这一术语于 1978 年由 Needham 与 Schroeder 关于大型网络认证的研究引入安全文献。

比特币挖矿中的 nonce

4名词比特币

指比特币区块头末尾的那个 4 字节字段。矿工不断变更它,以寻找一个小于难度目标值的哈希。能满足条件的那个 nonce,本身就 是工作量证明。

在 100 TH/s 的算力下,一台矿机每秒大约要把整个 32 位 nonce 区间跑完四十遍。

每个比特币区块都以一个 80 字节的区块头开始,由六个字段构成。其中五个由网络规则和区块内容决定,只有第六个是自由的:

版本 Version4B
区块版本号与信号位
前块哈希32B
上一个区块头的哈希
默克尔根32B
对区块内全部交易的承诺
时间戳4B
Unix 纪元以来的秒数
难度 Bits4B
难度目标值的紧凑表示
Nonce4B
矿工变更的 32 位计数器
合计 80 字节。nonce 是矿工唯一可以零成本任意改动的字段,因此它是搜索过程的最内层循环。

挖矿的搜索过程

  1. 矿工组装一个候选区块,并构造出它的 80 字节区块头。
  2. 用双重 SHA-256 计算哈希:SHA256(SHA256(区块头))。
  3. 把结果与 Bits 字段所编码的难度目标值作比较。
  4. 如果哈希不小于目标值,就把 nonce 加一,重新计算。
  5. 如果小于目标值,这个区块就是有效的。矿工向全网广播,其他节点只需算一次哈希即可完成验证。

这种不对称性正是工作量证明的意义所在:找到这个 nonce 需要全网做出以亿亿次计的尝试,而验证它只需要一次哈希。

nonce 跑完了怎么办

32 位字段一共有 4,294,967,296 个取值,约 43 亿个。这个数字听起来很大,实际上完全不够用——一台现代 ASIC 矿机在不到一秒内就能跑完整个区间,而全网平均每个区块需要 10²³ 量级的尝试。

因此矿工会改动区块头中的其他内容,从而重置整个 nonce 搜索空间:

extraNonce

写在 coinbase 交易里的任意数据。改动它会改变这笔交易,进而改变默克尔根、改变区块头,于是又获得全新的 43 亿个 nonce。这是标准的外层计数器。

时间戳滚动(Timestamp rolling)

时间戳字段可以在共识规则允许的窗口内合法地向前推进,每换一个取值就再获得一个完整的 nonce 区间。

版本滚动(Version rolling)

版本字段中未被使用的位也可以拿来当作额外搜索空间。这正是 ASICBoost 所标准化、并通过 Stratum 协议协商的机制。

所以区块头 nonce 是内层计数器,extraNonce 是外层计数器。两者结合,矿工就拥有了实际上无限的搜索空间。而算力(每秒哈希数)衡量的,本质上就是一个矿场跑过 nonce 的速度。

一条用法提醒

在英国和爱尔兰的俚语中,同样拼写的 nonce 还有一个完全无关、且带有强烈贬义的含义,约自 1970 年代中期开始被记录,指性犯罪者。它与上文所述的词在词源上毫无关系。如果你要在英国听众面前使用这个技术术语,值得事先知道这一点;本页其余内容与该义项无关。

Nonce:以它命名的比特币矿场管理平台

Nonce 是一款面向比特币矿场的管理平台——由矿工为矿工而做。产品名取自挖矿的工作单位本身:矿场算出的每一个哈希,都意味着又试了一个 nonce;每秒能跑过多少个 nonce,正是矿场真正被支付报酬的东西。

产品围绕三件事组织:

Monitor Metrics · 监控指标

掌握每个场地、每台机器的运行状况,知道什么在正常工作、什么不正常,让问题被快速修复。

Manage Assets · 管理资产

减少人工运维时间、让机器保持在线——扫描发现、批量开关机、固件升级、批量重启、定位灯、批量改矿池,可一次覆盖数千台矿机。

Automate Strategy · 自动化策略

让数据驱动策略——挖矿模式、自动重启、快捷指令,把矿场推向更高的「每瓦特产出比特币」。

在使用上,它以工作区(workspace)组织矿场(farm),并在现场部署 Agent 来发现矿机并与之通信。支持网页、移动端与 Slack;通过 SOC 1 Type 2 审计;同时提供公开 API 与 MCP 服务,AI 助手可以直接查询并操作矿场。

  • 产品官网 —— nonce.app
  • 产品文档 —— docs.nonce.app

延伸阅读

本页是总览。挖矿部分的更深入内容见:

  • 比特币挖矿中的 Nonce 是什么?矿工为什么不断寻找正确的 Nonce
  • ASIC 矿机如何寻找 Nonce?从 SHA-256 哈希计算理解比特币挖矿
  • Nonce 是什么?一文讲透 Nonce 在比特币挖矿中的两个重要概念
  • 比特币矿工为什么需要 Nonce?理解 PoW 挖矿中的随机数机制
  • Nonce 和 Nonce.app 有什么区别?从比特币技术概念到矿场管理平台

常见问题

Nonce 是什么意思?+

Nonce 指「只用于某一次、某一个场合」的东西。作名词时意为「这一次、当下这个目的」,今天几乎只出现在固定短语 for the nonce(暂且、就这一次)中;作形容词时表示「为一次性使用而造的」,典型用法是 nonce word(临时造词)。现代技术英语借用了这个词:在密码学中,nonce 是一条消息或一次会话中只使用一次的值;在比特币挖矿中,它是矿工不断变更、用来寻找有效区块哈希的计数器。

Nonce 这个词是怎么来的?+

它源于中古英语的一次「断词错误」。原短语是 for then anes,意为「为了这一个目的」,其中 then 是定冠词的一种屈折形式。后来读者把词的边界划错了位置,把 then anes 重新拆成 the nanes,多出来的 n 就滑到了后一个词上,于是产生了 nonce。英语里这类错误并不罕见:an ewt 变成了 a newt,a nadder 变成了 an adder。该短语约在 1200 年前后已有文献记录,乔叟在《坎特伯雷故事集》总引中就用过 for the nones。

Nonce 是 “number used once” 的缩写吗?+

不是。“number used once”(只用一次的数字)是后造的逆向缩写。它之所以流行,是因为恰好非常贴切地描述了密码学里的用法,但它并不是这个词的真实词源——真正的来源是中古英语短语 for then anes。作为工程师的记忆口诀它很好用,作为词源解释则是错的。

Nonce 在今天的英语里还算常用词吗?+

名词用法已经属于古语,除了固定短语 for the nonce 之外,日常英文中基本见不到。形容词用法反而比名词年轻得多:1884 年,James Murray 在编纂《新英语词典》(后来的《牛津英语词典》)时,需要一个标签来标注那些看起来只被使用过一次的词,于是造出了 nonce-word,形容词用法才从这一编辑惯例扩散到普通语境中。

密码学中的 nonce 是什么?+

密码学中的 nonce 是协议中只使用一次的任意值,作用是让每一条消息或每一次会话都是唯一的,从而阻止重放攻击——攻击者即使截获了一段合法通信,也无法在之后重新发送一遍来冒充合法方。HTTP 摘要认证每次质询都会下发一个新的 nonce,正是出于这个原因;AES-GCM、ChaCha20-Poly1305 等 AEAD 算法则把 nonce 和密钥配对使用,确保同一把密钥不会产生两次相同的密钥流。这个术语于 1978 年由 Needham 与 Schroeder 引入安全领域文献。

比特币挖矿中的 nonce 是什么?+

它是比特币 80 字节区块头末尾的一个 4 字节(32 位)字段。挖矿本质上是一次搜索:矿工组装出一个候选区块头,用双重 SHA-256 计算哈希,再检查结果是否小于难度目标值;如果不小于,就改变 nonce 再算一次。nonce 是区块头中改动成本最低的字段,因此它是整个搜索过程的最内层循环。能让哈希值落在目标值之下的那个 nonce,就是使区块生效的工作量证明。

nonce 一共有多少个取值?用完了会怎样?+

32 位字段共有 4,294,967,296 个取值,约 43 亿个。现代 ASIC 矿机在远不到一秒的时间里就能把这个区间跑完,所以仅靠 nonce 提供的搜索空间是完全不够的。当它溢出时,矿工会改变区块头里的其他内容,从而重新获得完整的 43 亿个 nonce:递增 coinbase 交易中的 extraNonce(这会改变默克尔根)、在共识规则允许的窗口内向前滚动时间戳、或者滚动版本字段中未使用的位。以上任一改动都会重置 nonce 的搜索空间。

nonce 和 extraNonce 有什么区别?+

nonce 是区块头里真实存在的字段,4 字节,直接参与哈希计算。extraNonce 则完全不是区块头字段,它是矿工写在 coinbase 交易里的任意数据;改动它会改变这笔交易,进而改变默克尔根,最终改变区块头。因此 extraNonce 是外层计数器,区块头 nonce 是内层计数器。两者结合,矿工就获得了实际上无限的搜索空间。

比特币矿场管理工具 Nonce 为什么叫这个名字?+

因为 nonce 正是挖矿工作真正发生的地方。矿场算出的每一个哈希,都意味着又试了一个 nonce;每秒能跑过多少个 nonce,就是这个矿场的算力。Nonce 这款产品以这一「工作单位」命名:它负责监控、管理并自动化那些正在做搜索的机器,让矿场中更多的算力在更多的时间里产出有效工作。