VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

工作量证明与累计工作量:目标值、尝试次数及有效分支

Three students in school uniforms work through open books at a classroom table, with textbooks and stationery nearby and study notes on the whiteboard behind them.

English version · 区块链学习导航 · 上一篇

区块链学习 · 文章 BC025

三名学生在教室桌旁一起阅读书本,身边放有课本和文具。
学习场景配图;不代表照片中的学生正在学习区块链。

工作量证明让验证者检查候选对象是否满足指定计算条件,而不必相信生成者声称自己工作了多久。在比特币中,区块头哈希必须满足规则要求的目标值。节点仍然要检查其他有效性条件,再依据累计工作量比较合格历史,而不是简单数可见机器或区块。

本篇把三个任务分开:检查哈希与目标值、确定该目标对应的工作量度量,以及比较有效分支。我们将使用可复现的 SHA-256 例子和刻意缩小的数字模型。这个模型不是比特币区块头格式,也不是实用挖矿系统;课程不提供设备、收益或投资建议。

选择适合你的阅读路线

本篇目录

先看目标值和精确输入例子,理解验证者检查什么。如果已经了解哈希,可以直接阅读预期工作量与实际尝试次数的区别,再计算两个竞争分支。后面的失败案例及练习,检验你能否把验证与排名分开。

哈希指纹本身不能证明寻找它很困难。困难来自额外的接受条件,以及寻找满足该条件输入时采用的假设。阅读过程中,请始终区分这两件事。

返回目录 · 下一节

1. 目标值是一条接受边界

设想某种哈希输出只用一个字节表示,数值范围为 0 至 255。把教学目标值设为 15。当输出小于或等于 15 时通过,因此成功值是 0 到 15,两端都包括。

256 个可能字节值中,共有 16 个成功值。在均匀输出模型下,一次独立尝试成功的概率为 16/256,即 1/16。目标值越低,允许成功的值越少,每次尝试成功的概率也越低。

这里比较的是数值,并不是投票决定哪个哈希看起来更厉害,也不是计算某人在报告里写了多少个零。在固定表示法中,前导零可以帮助理解小数值,但真正判断仍然要与目标值比较。

比特币使用大得多的数值空间。其区块头参考文档说明了区块头中的目标编码,以及区块头哈希必须小于或等于目标。本篇单字节模型只是教学缩小版,其中数值不是比特币难度设置。

返回目录 · 下一节

2. 固定精确的候选字节

可复现练习使用下面模式的 UTF-8 编码作为候选输入:archive-demo|parent=Q|records=R|nonce=N。把 N 换成普通十进制整数,不加前导零、空格、引号或末尾换行。

Q 和 R 都是课堂中的字面标签,不是真实区块哈希或真实交易承诺。nonce 是例子中变化字段的名字,其值只在题设字符串格式内有意义。

对整个候选输入执行一次 SHA-256。把摘要最前面的两个十六进制字符解释成一个无符号字节。教学规则拿这个字节与 15 比较,并不是拿整个摘要比较。

必须明确这些选择,因为一个看不见的换行、一个字符变化或另一种编码,都会改变输入。如果某工具悄悄添加行尾换行,“我对相同文本做了哈希”就不够准确。可复现性始于字节,不是两块屏幕看起来相似。

练习也刻意不同于比特币:真实比特币区块头采用规定的二进制布局,工作量证明哈希则对该区块头执行双重 SHA-256。不要把本篇字符串当作协议对象提交。它们只用于让一个小型验证计算可以被直接检查。

返回目录 · 下一节

3. 复现三个样本尝试

当 nonce 为 0 时,精确输入为 archive-demo|parent=Q|records=R|nonce=0。其 SHA-256 摘要是 f24ce500e8c7141106d109c24cc6928616508b65641b0ba0112fd71b35592937。首字节为十六进制 f2,即十进制 242,因此不满足目标 15。

当 nonce 为 2 时,摘要为 1e9d36698df1e4fe4970e28069c1aae26a76bdf086effd006affb9599a5ee1e0。首字节为十六进制 1e,即十进制 30,这个候选也失败。

当 nonce 为 13 时,摘要为 0cea7f12b0e6489aafb77d47fb3226d855ed034d2a0933f6d31c1ceb35dc3727。首字节为十六进制 0c,即十进制 12,因此通过。

按递增顺序检查 nonce 0 至 13,首字节依次为 242、80、30、129、106、209、114、126、195、221、41、169、182、12。前十三个候选失败,第十四个候选通过。总计十四次,是因为 nonce 0 也算一次尝试。

拿到成功候选的验证者,不必重做此前十三次失败尝试。它可以直接对这个候选做哈希,并检查条件。搜索与检查之间的这种不对称,是核心教学点;这个刻意简化的首字节条件,使例子容易复核。

返回目录 · 下一节

4. 预期尝试次数不是实际工作收据

在练习的独立均匀输出模型下,成功概率为 1/16,对应预期等待次数为十六次。上面的确定性序列在第十四次成功,并不矛盾:期望值不是对每一串尝试的承诺。

有人可能第一个候选就成功,也可能需要远多于十六次。找到通过结果,不会揭示一个经过认证的失败次数、机器运行时间或用电量计数器。本篇知道进行了十四次,是因为练习明确计算并记录了这个搜索顺序。

nonce 的数值本身也不能证明尝试次数。生成者可以从另一个数字开始、并行搜索,或修改另一个允许变化的字段。nonce 为 13 是输入值,不是一张可靠收据,不能证明恰好消耗十四单位努力。

这也解释了协议为什么把工作量关联到目标条件,而不直接接受生成者申报的小时数。系统需要验证者能依据规则与候选对象复算的度量,而不是生成者可以夸大的私人活动日志。

即使“计算工作”这个词也需要谨慎。成功对象说明在哈希假设下满足了搜索条件,却不能证明硬件归谁所有、控制者是否独立,或交易中关于现实世界的陈述是否属实。

返回目录 · 下一节

5. 特别低的幸运哈希不会自动获得额外工作量

我们的成功首字节是 12,要求目标为 15。假设另一候选在相同目标下得到首字节 1。两者都满足条件。在本篇工作量计量模型中,后者不会仅因更幸运就得到额外分数。

分配的工作量来自要求的目标值,不是成功输出偶然低于目标多少。如果要按这种距离给予奖励,就变成另一条计量规则,需要另外定义和分析。不能从视觉上醒目的哈希自行推断奖励。

作为实际实现参考,Bitcoin Core 的链工作量计算根据编码后的目标推导工作量贡献。链接指向可能变化的开发分支,本篇已在文末日期核对。下一节的小公式只是算术类比,并非复制的生产代码。

这还能避免一个报告错误:“这个区块有更多前导零”,本身不能证明其分支累计工作量更高。需要知道要求的目标,以及合格历史中各区块的贡献。

返回目录 · 下一节

6. 在八位教学模型中计算工作量

定义一个有效区块的教学工作量贡献为:256 除以目标值加一,再取整数部分,即 floor(256/(target+1))。括号很重要。分母加一,是因为包含等号的比较也把零算作成功输出。

目标为 63 时,共有 64 个通过值,模型成功概率为 64/256,分配贡献为 4。目标为 31 时,共有 32 个通过值,贡献为 8。目标为 15 时,共有 16 个通过值,贡献为 16。

这些特意选定的目标都能整除。如果换成另一个目标,由于取整,整数工作量度量与成功概率倒数不一定数值完全相同。本篇采用简单值,使分支比较容易检查,同时不掩盖这个区别。

这些值是没有物理单位的教学数值,不是秒、焦耳、货币,也不是某个生成者实际计算过的哈希数。把它们乘上虚构价格,不会把练习变成收益估算。

模型给定每个区块的目标,并假设该目标符合虚构规则。生成者不能自行挑一个方便的目标,就要求被接受。真实协议会规定所需目标如何由上下文确定;本篇没有复现比特币的难度调整安排。

返回目录 · 下一节

7. 比较长度不同的两条有效分支

两条分支都从题目给定的同一个祖先 Q 开始。因为共有历史贡献完全相同,可以在比较中省略它。课堂题目把全部后继区块,包括各自要求的目标,都设为已经完整验证。

A 分支在 Q 后面有三个区块。每个目标为 63,贡献 4 单位。新增累计工作量为 4+4+4=12。

B 分支在 Q 后面有两个区块。每个目标为 31,贡献 8 单位。新增累计工作量为 8+8=16。按照选择累计工作量较大合格分支的教学规则,B 虽然区块较少,却胜出。

这是说明区块数量与累计工作量不同的数字例子,不是说同祖先之后两条短比特币分叉,可以恰好合法采用这些目标安排。它们的许可性由虚构模型给定。

如果 A 再增加一个有效的目标 63 区块,总量变为 16,与 B 平局。工作表没有规定平局规则,因此无法从已有资料唯一确定修改后案例的结果。如果 A 改为增加两个这样的区块,新增总量则为 20,超过 B 的 16。

分支偏好仍然不同于对全部未来历史的绝对保证。本题是在固定候选集合上比较,不是普遍最终性证明,也不是关于真实交易需要多少次确认的建议。

返回目录 · 下一节

8. 先验证,再排名

现在加入 C 分支。它宣称具有 100 单位工作量,但其中一个区块包含练习验证规则禁止的状态转换。按照题设规则,C 没有资格。仅仅宣称数字更大,不能让它战胜 A 或 B。

验证者需要分开几个问题:候选是否满足正确目标;这个目标是否由上下文要求;数据是否符合所需承诺;区块及状态转换的其他方面是否有效?通过一个检查,不会免除其余检查。

Bitcoin Core 的工作量证明检查展示了真实实现中的目标与哈希验证。这些函数属于更大的验证系统,并不是单独证明每笔交易或整段历史有效。比特币开发者指南也在有效区块的前提下讨论分支比较。

课堂工作表应在 C 旁边写“无效,排除”,而不是给它安排一个有效分支名次。这样的措辞能减少把夸张宣传误当成已接受事实的风险。

返回目录 · 下一节

9. 候选改变,就需要重新检查

假设生成者找到 nonce 13 后,把 records=R 改成 records=S。旧摘要不再认证改变后的输入。验证者必须对新的精确字节做哈希,并评估新结果。nonce 没变,不代表旧成功结果可以转移。

在真实区块结构中,承诺及父区块引用把区块头关联到具体内容与祖先。一个改动可能沿这些承诺传播,并要求重新计算区块头。本篇并不声称可以把任意文本字段直接塞进比特币区块头。

更窄而准确的原则是:被检查的工作条件,属于特定规则下的特定候选对象。它不是一张通用证书,不能随意贴到生成者后来喜欢的任何文件、交易或分支上。

同样,在错误目标下得到正确哈希还不够。如果上下文要求目标 15,那么首字节为 30 的候选,不能靠自行宣布目标 63 通过。换成更容易的目标,是改变问题,不是回答原问题。

返回目录 · 下一节

10. 六道带解答的问题

  1. 字节值 15 能否通过目标 15?可以,因为比较包含等号。值 16 则失败。
  2. nonce 为 13,是否证明生成者恰好尝试十四次?不能。本篇记录的顺序练习确实如此,但 nonce 本身不是尝试计数器。
  3. 目标 15 下,成功字节 1 是否比成功字节 12 获得更多教学工作量?没有。按本题规则,两者获得同一目标对应的贡献。
  4. 三个目标 63 区块,与两个目标 31 区块,哪条分支胜出?后者贡献 16 而非 12,前提是要求的目标及全部区块有效。
  5. 无效分支宣称 100 单位,应该排第几?它在有效分支比较之前就被排除。
  6. 上下文要求目标 15,但候选宣称目标 63,字节值为 30。能否接受?不能。它不满足所需目标,也不能自行授权更容易的条件。

扩展问题:预期十六次尝试,是否意味着十六次之内保证成功?不是。在独立模型下,十六次全部失败的概率为 (15/16) 的十六次方,大于零。平均等待次数不是截止期限。

返回目录 · 下一节

11. 验证者的阅读检查表

接受文件里的工作量主张前,应明确候选格式、哈希过程、数值解释及目标比较方式。随后查明要求的目标从哪里来。仅由主张者自行选择的目标,不能支持原本要求的难度规则。

比较历史之前,确认哪些分支合格,以及各项工作量贡献如何推导。把累计工作量与高度分开记录。如果比较平局,不要发明规范没有提供的平局规则。

最后,把结论写在正确层级。“这个候选满足教学目标”,比“这个区块有效”更窄;后者又比“这个分支被选择”更窄。任何一条都不自动意味着现实主张属实,或未来历史绝不会改变。

返回目录 · 下一节

12. 常见问题

工作量证明与哈希是同一件事吗?

不是。哈希是一种操作。工作量证明增加指定接受条件,并在相关假设下要求通过搜索满足该条件。

最长链一定是区块数量最多的链吗?

这个说法可能误导。在本篇讨论的比特币语境中,重要的是有效累计工作量。两分支例子特意让较短分支拥有较大工作量总和。

一个幸运哈希能否证明具体电费?

不能。通过结果及目标,并不认证生成者实际使用的硬件、尝试次数或耗电量。

更多工作量能否让无效交易变有效?

不能。验证规则仍然有效力。基于工作量的排名适用于合格历史,不适用于任何声称总量很大的对象。

返回目录 · 下一节

资料来源与下一步学习

主要资料于新加坡时间 2026 年 10 月 12 日核对:比特币区块头参考、比特币开发者指南、Bitcoin Core 链工作量源码及工作量证明源码。本篇仅采用已说明的区块头、目标、验证及工作量计量概念,不把文档中无关的历史参数当成当前操作指引。

精确 SHA-256 尝试字符串与八位分支算术,都是原创课堂例子,不必连接区块链即可独立复现。下一步可以比较权益证明参与:区块提议和见证消息分别做什么,协议检查哪些行为,以及为什么离线与签署互不兼容消息属于不同情况。

返回目录