学习 · 比特币如何运作

什么是工作量证明(PoW)?

作者:CloudMineCrypto 团队更新于 9 分钟阅读

简短答案

工作量证明是比特币决定由谁添加下一个区块的方式:矿工必须通过找到一个足够罕见的哈希值,证明自己付出了实际的计算工作,其他人才会接受这个区块。矿工使用 SHA-256 对一个 80 字节的区块头进行两次哈希,每次都更改一个称为 nonce 的数字,直到哈希值低于目标值。找到符合条件的哈希值需要猜数万亿次,但验证一个哈希值只需一次计算。因此,要篡改历史记录,就必须重新完成所有这些工作。

重点速览

  • 有效区块就是:它的区块头做两次 SHA-256 后的哈希值低于目标值,表现出来就是前面有很多个 0。
  • 只能靠猜。改动一个字符,哈希里大约一半的位都会翻转。
  • 节点会跟随总工作量最多的那条链,所以攻击者需要掌握大部分算力。
  • 用电不是副作用。这正是让篡改比特币历史变得很贵的原因。

自己算哈希 · 一个真实的区块头

编辑区块。你输入时,双重 SHA-256 会实时更新。

  1. 版本4 字节

    20000000

  2. 前一个区块哈希32 字节

    000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

  3. 默克尔根32 字节

    3526fd3f26cb386534c88c5455a8465f971578b7d9fb64b8a342ad0e99e4280e

    上面那笔交易的指纹。你输入就会改变它。

  4. 时间4 字节

    2026-09-26 12:00 UTC

  5. 目标(bits)4 字节
    1f00ffff · 4 个零
  6. Nonce(随机数)4 字节

区块哈希 · SHA-256 两次

✓ 低于目标值:有效区块

0000470da4a7ab0614c83d2181b1ef1c294e53f49cde408a8c9a08592bca6e17

目标值 0000ffff00000000000000000000000000000000000000000000000000000000

4 个前导 0,目标需要 4

你的浏览器会像矿机一样,一个接一个地猜 nonce。

雪崩效应 · 你上次编辑改动的比特数

122 / 256(48%)

改动一个字符,会随机翻转大约 256 位里的一半。哈希没法被“引导”,所以矿工只能不停猜。

参与哈希的这 80 字节

000000206fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d61900000000000e28e4990ead42a3b864fbd9b77815975f46a855548cc8346538cb263ffd2635c0b3b76affff001f96060000

数字用小端序存储,哈希按字节倒序,和比特币的做法一模一样。现在一个真实区块大概需要 20 个前导零(根据实时全网算力估算)。

什么是工作量证明?

定义 · 工作量证明(PoW)

一种机制:谁先找到一个低于目标值的区块头哈希,谁就有权添加区块。找到它要猜非常多次;验证只要算一次哈希。

中本聪在 2008 的 比特币白皮书 里描述了它,基于 Adam Back 的 Hashcash,一个更早的想法,用来让垃圾邮件变贵。有效哈希就是证明。你不做功就拿不到它,而且任何人都能看出你做过。

本页后面会把每一部分都讲一遍,上面的框也能让你自己试:这是真实的比特币区块头格式,会在你的浏览器里实时计算哈希。想看挖矿的全局概念,可以看我们的 完整比特币挖矿指南。

工作量证明解决了什么问题?

比特币没有公司、银行或服务器来管。成千上万台电脑各自保存一份账本副本,它们必须对下一个区块是谁、付款发生的顺序达成一致。不然就有人能把同一枚币花两次。

网上用简单投票不行,因为任何人都能开一千台假电脑,投一千次票。这叫女巫攻击。工作量证明绕开了它:你有多少话语权,看的是你算了多少哈希,而哈希要电和硬件。

谁能影响下一个区块?

每个节点一票

攻击者免费启动 60 个假节点,就能在投票里压过 12 个诚实节点。

每个哈希一票

诚实矿工 88%攻击者 12%

这些 60 个节点还是共用攻击者的真实硬件,所以加起来也还是只有 12%。复制节点几乎不花钱,算哈希可不是。

女巫攻击就是伪造很多身份。工作量证明不看身份,只看你做了多少工作,而这要花真金白银。

比特币区块头里有什么?

矿工不会对整个区块做哈希。他们哈希的是它的 80 字节区块头,而区块头会承诺区块里的其他所有内容。下面是你在上方框里编辑过的 6 个字段:

字段字节它包含什么谁能改动它
版本4这个区块遵循哪套规则很少变化
上一个区块的哈希32上一个区块的哈希,把整条链连起来每个区块都会更新
默克尔根32区块里所有交易的一个指纹矿工,当交易或 extra nonce 改变时
时间4矿工宣称区块生成的时间(Unix 时间)矿工,在一定限制内
Bits4目标值,压缩后装进 4 字节网络,每 2,016 个区块
Nonce(随机数)4一个可以免费再试一次的数字矿工,每次尝试时

因为区块头里包含上一个区块的哈希,改动旧区块就会改掉它的哈希,下一块的区块头就对不上,再下一块也会断。我们在构建本页时,用 hero 里同一段代码,在我们的服务器上核对了来自 2009 的真实创世区块:

SHA-256(SHA-256(genesis header)) =
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
比特币的第一个区块,版本 1,nonce 2,083,236,893。它的哈希以 10 个零开头,和每个 Bitcoin 节点都知道的那个一致。

SHA-256 在比特币里怎么用?

SHA-256 会把任意输入变成一个 256 位的数字,用 64 个十六进制字符表示。比特币会在区块头上跑两次(大家叫它 SHA-256d)。对挖矿来说,关键属性很简单:

输入一样,输出就一样

确定性的

同一个区块头在任何电脑上都会得到同一个哈希。这就是为什么验证能成立。

256 位

固定大小

不管是短短一行还是一本书,哈希值永远是 64 个十六进制字符。

单向的

没有回头的捷径

你没法推算出某个输入,让它得到你想要的哈希。你只能不断尝试不同的输入。

≈ 50%

雪崩效应

改一个字符,大约会有一半的比特翻转。看看 hero 里的网格。

最后这点就是工作量证明的核心。哈希值离目标值很近,并不能告诉你下一次会更接近还是更远,所以没有什么取巧的路能直接找到有效区块。每个矿工跑的都是同一种彩票,你每秒算的哈希越多,就只是买到更多“票”。

什么是目标值?为什么要看前导零?

目标值是一个 256 位的数字。把区块的哈希当成数字来读,只要它小于等于目标值,区块就有效。因为小数字开头会有很多 0,所以目标值越低,显示出来的前导 0 就越多。十六进制里每多一个 0,平均要多猜 16 倍。

找到一个有效区块平均需要的哈希次数

  • 开头的玩具区块 · 十六进制前导 0 有 4 个65,536
  • 比特币最容易的目标(2009) · 十六进制前导 8 个零,bits 1d00ffff4,294,967,296
  • 现在一个比特币区块· 约 20 个前导十六进制 0(实时估算)4.9 × 1023
柱状图用对数刻度:每多一个零,平均工作量就多 16 倍。实时这一行是我们的估算,用网络算力乘以 600 秒得到,每小时更新一次。

网络每 2,016 个区块调整一次目标值,大约两周,这样不管算力进来多少或离开多少,区块都能保持大约每 10 分钟出一个。现在全网算力大约是 811 EH/s(实时,每小时更新)。调整机制怎么运作,我们在 比特币挖矿难度指南 里讲了;单位怎么读,算力说明 会讲清楚。

nonce 是什么?extra nonce 又是什么?

nonce(“只用一次的数字”)是一个 4 字节的字段,矿工每次猜测都会改它。它是区块头里唯一“就是为了被修改”而存在的字段。问题在于,4 字节也只够大约 4.3 十亿种取值,现代机器几乎一瞬间就能全跑完。

矿工的循环

  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 步。矿工也可以稍微调整时间戳,这也会让区块头变掉。

所以矿工还会改一个 extra nonce,也就是 coinbase 里多出来的几字节。coinbase 是区块第一笔交易,用来把奖励付给矿工。coinbase 一变,merkle root 就会变,也就等于又多了几十亿个全新的 nonce 可以试。在 矿池 里,矿池会给每个矿工分配各自的 extra nonce 范围,这样就不会重复别人算过的东西。

为什么找到一个区块很贵,但验证它很便宜?

用来挖到一个区块

≈ 4.9 × 1023 哈希

整个网络,所有机器一起算,大概猜十分钟。

实时估算,每小时更新一次。

用来验证

1 哈希

任何节点,哪怕是便宜的笔记本,也能把这段 80 字节的区块头哈希一次,并在远小于 1 毫秒内和目标值对比完成。

矿工必须不断试哈希,直到有一个落在目标值以下。其他人只要把区块头哈希一次再对比就行。这个成本差,就是为什么成千上万台普通电脑能验证整条链,而不用信任挖出这些区块的矿工。

下面你可以自己动手试试“搜索”这部分。这个演示用的区块格式比顶部的示例更简单,但本质还是同一个双重 SHA-256 抽奖,而且每个挖到的区块都会连到上一个。

互动 · 在浏览器里挖一个区块

真实 SHA-256d 工作量证明,简化版区块头

区块 #1上一个哈希0000000000000000000000000000000000000000000000000000000000000000Nonce(随机数)0

区块哈希(双重 SHA-256)

改一下交易内容,只改一个字母,哈希就会完全变掉。

尝试次数:0

你的算力:n/a

用时:0.0 s

什么是最长链规则?什么是 51% 攻击?

有时两个矿工几乎同时找到区块,网络会短暂出现两条版本。节点会跟随“总工作量”更多的那条链。大家常叫它“最长链”,但更准确是“最重的链”:少数几个高难度区块,可能比更多低难度区块更重。

想把一笔付款倒回去,攻击者得从那笔付款之前开始,造出一条比所有人都更“重”的链。每多叠一个新区块在上面(也就是一次确认),攻击者就更落后一步。白皮书算过概率。拖动滑块看看:

互动 · 攻击者追得上吗?

来自《比特币白皮书》第 11 节的公式

  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

攻击者落后的区块数(确认数)。柱状图用对数刻度,从百万分之一到几乎确定。

当算力占比为 10% 时,在 6 次确认后改写一笔支付的概率是 0.024%,在 1 次确认后是 20.5%。

当算力占比达到 50% 或以上时,攻击者最终会赢。这就是 51% 攻击。很严重,但它也有局限:

掌握大部分算力时,攻击者可以

  • 用自己的链替换最近的区块
  • 把他们转给自己的币做双花
  • 把一些交易排除在他们的区块之外

就算这样,他们也做不到

  • 花掉别人钱包里的币
  • 在区块奖励之外造币
  • 替所有人改掉比特币规则

所以交易所对大额充值会等多个 确认。常见的经验值是 6 次。

为什么工作量证明要消耗这么多能量?

因为能量就是安全性。一个有效区块证明确实消耗了真实电力。想改写历史,攻击者至少得再花同样多的成本,还要在诚实网络继续前进时持续投入。

能量花到哪里了,它换来了什么

  1. 区块奖励和手续费

    每个区块的新 BTC 加上手续费,发给找到它的人。

  2. 机器和电力

    矿工最多会花到“这份奖励对他值多少钱”为止。

  3. 网络算力

    这些投入最后都会体现为每秒哈希数。

  4. 篡改历史的成本

    攻击者得在每个区块上都花得比所有人加起来还多。

你可以把它当成一个循环来读:奖励越值钱,吸引的算力就越多,攻击成本也就越高。

用多少电、从哪来,这是个合理的讨论点。剑桥指数会跟踪各类预估,我们的 比特币挖矿能耗指南 也会把数字讲清楚。每次 减半 都会减少奖励里的新币部分,所以时间久了,手续费得承担更多这笔安全预算。

工作量证明 vs 权益证明:有什么区别?

权益证明(PoS)会从把币锁起来当押金的人里选出下一个出块者,而不是从烧电的人里选。以太坊在 2022 从工作量证明切换到了权益证明。下面是公平的并排对比:

工作量证明权益证明
谁来添加下一个区块第一个找到低于目标值哈希的矿工按质押比例选出来的验证者
是什么在保护它在链外消耗的电力和硬件锁在链里的币,作弊时可能会被没收
能耗很高,这是设计使然低
用来参与机器和低价电力要质押的币
结算每多一次确认就更安全明确的最终性检查点
主要批评点能耗与挖矿集中度质押更集中,设计也更复杂
历史记录比特币,自 2009 起以太坊,从 2022 起

比特币的开发者一直保留工作量证明,因为它的成本在系统之外,没人能用自己已经持有的币买下控制权。权益证明的支持者则强调更省电和更快的最终确定性。

Can you get mining rewards without running proof of work yourself?

Yes. With CloudMineCrypto you mine bitcoin for free from your phone or browser, with no hardware, noise or power bill. Claim the free 8-hour plan, and add more free plans by watching ads, playing games, completing offers and checking in daily. Your estimated BTC ticks up while your plans run, and you withdraw to your own wallet, Lightning included.

Each plan has a hashrate, and your estimate is that hashrate’s share of the whole network, times 6 blocks an hour, times the block reward. That’s the formula the app uses to estimate your rewards (rules and limits apply). Want more speed? Paid plans are an optional boost for fun. They usually mine less than they cost, and the price is shown before you confirm.

你要知道:奖励是预估值,会随网络变化,不保证一定拿到,而且方案不代表你拥有任何矿机或矿池。提现可能有额度限制,或需要验证。细节见 奖励规则 和 免费比特币挖矿指南。适用条款。

常见问题

用大白话说,工作量证明是什么?

它让“添加一个区块”必须付出真实的努力。矿工会一遍遍对区块头做哈希,不断改一个叫 nonce 的数字,直到结果低于目标值。找到那个哈希需要海量次尝试,但任何人只要做一次哈希就能验证。

比特币里的 nonce 是什么?

区块头里的一个 4 字节数字,矿工每次猜测都会改它。它大约有 4.3 十亿种可能取值。用完后,矿工会改 coinbase 交易里的额外 nonce,这会生成新的默克尔根,也就得到一整套新的哈希可试。

为什么比特币要把 SHA-256 计算两次?

比特币用 SHA-256 对 80 字节的区块头做哈希,然后再把结果哈希一次。中本聪从没解释过为什么这么选。一般的理解是:它能防长度扩展攻击,并多给一层安全余量。

51% 攻击能让人做到什么?

如果有人掌握了大部分算力,就能私下挖出一条更长的链,再用它替换最近的区块。这样他们可以对自己的币做双花,或者阻止某些交易进块。但他们不能花别人的币,不能在规则之外凭空造币,也不能替所有人改规则。

权益证明比工作量证明更好吗?

它用的能量少很多,安全性来自被锁定当作质押的币。工作量证明把安全性绑定到链外成本上,也就是电力和硬件,并从 2009 年起一直支撑着比特币运行。两者取舍不同,所以哪个更好,取决于你看重什么。

Can I get bitcoin mining rewards without my own hardware?

Yes. In the CloudMineCrypto app you claim free mining plans (the free plan, ads, games, offers and a daily check-in) and your estimated BTC ticks up while they run, then you withdraw to your own wallet. Rewards are estimates based on your plan’s hashrate and live network data, they aren’t guaranteed, and a plan doesn’t give ownership of any hardware.

来源与延伸阅读

  1. 《Bitcoin: A Peer-to-Peer Electronic Cash System》(白皮书) · 中本聪,bitcoin.org
  2. 区块链指南:区块头、工作量证明、coinbase · 比特币开发者文档
  3. 挖矿指南:独立挖矿、矿池、getblocktemplate · 比特币开发者文档
  4. 难度 · Bitcoin Wiki
  5. 确认 · Bitcoin Wiki
  6. 剑桥比特币用电量指数 · 剑桥另类金融研究中心
  7. 挖矿面板:算力、难度、最近区块 · mempool.space

本页实时数据来自 CloudMineCrypto API 或旁边标注的公共区块链数据服务,按计划定时刷新,并在页面上标明来源。本指南仅供学习,不构成财务建议。CloudMineCrypto 不是投资产品;应用中的奖励均为估算值,不保证获得。

你已经知道它怎么运作了。现在看它实际跑起来。

在 CloudMineCrypto 应用中领取一个 8 小时的免费挖矿方案,根据实时网络数据查看你的预估 BTC 不断增长。无需硬件,无需银行卡。