比特币挖矿难度按链上规则算定,全网算力和预计调整幅度是数据站估的
比特币每出满 2,016 个区块调一次挖矿难度,新闻里的「上调 X%」就是这一次算出来的结果:这批区块实际用的时间比两周短,难度按比例调高;比两周长,就调低。调整认区块数、不认日历,2026 年 7 月到 10 月的 7 次调整,按 UTC 日期数(UTC 加 8 小时是北京时间),相邻两次隔了 13 到 15 天不等。难度值和已经发生的调整幅度,每台运行比特币软件的电脑(节点)按同一条规则都会算出同一个数;数据站上的全网算力、预计下次调整幅度和预计日期是估算值。
比特币挖矿难度多久调整一次?
每 2,016 个区块一次,目标是两周。「区块」是比特币账本上的一页,网络的目标是平均 10 分钟出一个;「难度」是矿工争这一页记账权时要过的门槛,门槛越高,全网平均要试算的次数越多。按比特币开发者文档的区块链指南,每满 2,016 个区块,网络用这些区块上记的时间(叫时间戳,写在每个区块开头 80 字节的区块头里),算出这一批区块的第一个和最后一个之间隔了多少秒,理想值是 1,209,600 秒,也就是两周。
2,016 个区块出满要多久,每一期都不一样,看这一期区块出得快还是慢。mempool.space 的公开接口(给程序读数用的地址)记着 2026 年 7 月到 10 月的 7 次调整,每一次都落在一个固定的区块高度上,也就是链上的第几个区块:
| 调整日期(2026 年,UTC) | 区块高度 | 调整后的难度 | 相对上一期 |
|---|---|---|---|
| 7 月 11 日 | 957,600 | 127.17T | −5.00% |
| 7 月 25 日 | 959,616 | 126.23T | −0.74% |
| 8 月 8 日 | 961,632 | 127.48T | +0.99% |
| 8 月 23 日 | 963,648 | 125.81T | −1.31% |
| 9 月 5 日 | 965,664 | 127.45T | +1.31% |
| 9 月 19 日 | 967,680 | 132.76T | +4.16% |
| 10 月 3 日 | 969,696 | 132.72T | −0.03% |
相邻两行的高度都差 2,016。日期就没这么整齐:按 UTC 日期数,间隔依次是 14、14、15、13、14、14 天。难度一栏末尾的 T 代表万亿。
数据站上的「下次调整日期」因此只能是预估。下一次调整发生在高度 971,712,这一点已经定了;哪一天走到这个高度,要看剩下的区块出得多快。10 月 9 日 08:54 UTC,mempool.space 给出的预估时刻是 10 月 16 日 19:20 UTC,之后出块快一点或慢一点,这个时刻就跟着前后挪。
难度调整幅度按 2,016 个区块的实际用时和两周之比计算
新闻里的百分比,就是新难度相对旧难度高出或低出的那一截。
链上实际记的是一个「目标值」:矿工对区块头反复试算,结果小于或等于它,这个区块才有效。这个数越小越难碰上,难度也就越高。Bitcoin Core 的调整逻辑源码 pow.cpp 里,这一步是一次乘、一次除:新目标值 = 旧目标值 × 实际用时 ÷ 两周。用时短于两周,新的数变小,难度上升,反过来则下降。这段计算只在高度走到 2,016 的整数倍时执行,其余区块直接沿用前一个区块的难度,两次调整之间难度不动。
幅度有上下限。源码在做乘除之前,先把实际用时限制在两周的四分之一到 4 倍之间:用时再短,也按两周的四分之一算,难度单次最多变成原来的 4 倍,即上调 300%;用时再长,也按两周的 4 倍算,难度最少变成原来的四分之一,即下调 75%。
「实际用时」算不上秒表读数。区块上的时间由矿工自己填,mempool.space 的常见问题页说区块时间戳只准到一小时上下。开发者文档还提到,每 2,016 个区块调一次,计算时用到的却只是 2,015 个区块的时间跨度,结果略有偏差。
全网算力是拿难度和出块速度倒推出来的估算值
难度值本身是个倍数。Bitcoin Core 查难度的命令 getdifficulty,返回的是相对最低难度的倍数,所以它是个纯数字,没有单位。10 月 3 日调整后的难度,mempool.space 记的完整数值是 132,716,002,350,731.3,页面上缩写成 132.72T,读作现在的门槛约是最低难度的 132.72 万亿倍。
算力指全网矿机每秒试算多少次,看板上的单位 EH/s 是每秒 10 的 18 次方次。全网算力没法精确测得:矿工不公开自己的算力,用节点也没有办法直接测,这是算力数据站 Hashrate Index 在介绍全网算力的文章里自己交代的。查算力的命令 getnetworkhashps 返回的同样是估算值:按最近若干个区块来估,默认取最近 120 个,也可以改成从上一次难度调整算起。
倒推用的式子在 Bitcoin Wiki 的 Difficulty 词条(社区维基)里:难度为 D、正好 10 分钟出一个区块时,全网算力约为 D × 232 ÷ 600。把 132,716,002,350,731.3 代进去,约 950 EH/s。出块比 10 分钟快,分母就换成实际的平均出块秒数:10 月 9 日 08:54 UTC,接口里本期的平均出块时间是 578.683 秒,代进去约 985 EH/s。08:57 UTC 的页面上,标着 1w(一周)的算力是 975 EH/s;当天接口给出的当前算力约 976 EH/s。难度是同一个,出块速度换一段时间来取,倒推出的算力就换一个数。
取多长一段时间来平均,这段时间的长短叫时间窗口。前面那篇介绍全网算力的文章认为 24 小时的窗口太短,盖不住出块时间的波动,它列出的做法是取 7 日、两周或 30 日的移动平均。看到一个全网算力数字,先看它标的是多长的窗口,上面那个 975 EH/s 标的就是 1w。这类分歧出在时间窗口上;比特币市占率 BTC.D 在 TradingView 和 CoinGecko 上读数不同,则是因为分母圈进来的币不一样。
mempool.space 挖矿看板的 Remaining、Estimate 和 Previous 读数
mempool.space 的挖矿看板上有个 Difficulty Adjustment 方框,和难度有关的是这三项:
- Remaining:本期还差多少个区块满 2,016 个,是直接数出来的。它下面那行 In ~7 days 是按出块速度估的。
- Estimate:预计下次调整幅度,也就是本期结束时难度调多少,箭头向上是上调。这是估算值。
- Previous:上一次调整的实际幅度,已经发生,不会再变。
Estimate 为什么是正数:10 月 9 日 08:54 UTC,本期平均 578.7 秒出一个区块,比 600 秒的目标短。后面的区块也按这个速度出,这一期用不满两周,难度就该上调 600 ÷ 578.7 − 1 ≈ 3.7%。
看板上的数和 3.7% 接近,但不相等。按 mempool 公开的代码,预估幅度用的平均出块时间,是到读取那一刻为止的用时 ÷(本期已出区块数 + 1),上面那个 578.7 秒则是用时 ÷ 已出区块数,分母差了 1。这个预估还跟着出块一直变:08:54 UTC 的读数是 +3.80%,本期还剩 1,110 个区块;08:57 UTC 页面显示 +3.88%,还剩 1,109 个。3 分钟、多出 1 个区块,预估挪了 0.08 个百分点。新闻里的「预计下次上调 X%」是某一刻的读数,链走到高度 971,712 时,幅度才由规则定下来。
方框里的 Next Halving 也是一个预估日期。减半指每个区块新发的比特币数量砍半,它按区块高度触发,哪一天走到那个高度取决于之后出块的快慢;本站的比特币减半倒计时是按平均约 10 分钟一块推算的。想核对难度值和历次调整,看板的 Adjustments 表列着每次调整的高度、难度和幅度;自己运行节点的话,getdifficulty 命令直接返回当前难度。
下表把这几个数各自怎么来的列在一起:
| 数字 | 怎么来的 | 换个时刻或换种算法会不会变 | 2026 年 10 月 9 日的读数 |
|---|---|---|---|
| 难度值 | 每个节点按同一条规则算出 | 不会,到下一次调整才变 | 132.72T |
| 上一次调整幅度 | 新旧难度相除,已经发生 | 不会 | −0.03%(10 月 3 日) |
| 本期剩余区块数 | 2,016 减去本期已出的区块数 | 只随出块一个一个减少 | 1,110(08:54 UTC);1,109(08:57 UTC) |
| 全网算力 | 用难度和一段时间的出块速度倒推 | 会,取的时间段不同数就不同 | 975 EH/s(页面,一周);约 976 EH/s(接口当前值) |
| 预计下次调整幅度 | 按这一期到目前为止的出块速度往后推 | 会,每出一个区块都在变 | +3.80%(08:54 UTC);+3.88%(08:57 UTC) |
| 预计调整日期 | 读取时刻 + 剩余区块数 × 平均出块时间 | 会 | 10 月 16 日 19:20 UTC(08:54 UTC 的预估) |
难度上调和手里的比特币有关系吗?
钱包里的币不会因为难度调整多一个或少一个。调整算式的输入只有区块上的时间和上一期的难度,币价不在里面;9 月 19 日的 +4.16% 和 10 月 3 日的 −0.03%,记的都是此前两周矿工那一侧的出块速度。
每个区块新发多少比特币,也不由难度决定。Bitcoin Core 源码里计算区块补贴(每个区块新发给矿工的比特币)的函数,读的是区块高度:从 50 个比特币起,每满 210,000 个区块减半一次,注释里说大约每 4 年发生一次。难度调整做的事是把平均出块间隔拉回 10 分钟;间隔回到 10 分钟,新币按区块发放的节奏也就回到原样。
比特币难度调整规则的几个疑问
比特币挖矿难度会下调吗?
出满 2,016 个区块用的时间超过两周,难度就调低。mempool.space 记录的 2026 年 7 月 11 日到 10 月 3 日这 7 次调整里,4 次是下调,幅度在 0.03% 到 5.00% 之间,另外 3 次是上调。
为什么是每 2,016 个区块调一次?
2,016 是两个参数相除得来的。Bitcoin Core 源码给比特币主网设的目标周期是两周,也就是 1,209,600 秒,目标出块间隔是 10 分钟,也就是 600 秒,调整间隔定义为前者除以后者:1,209,600 ÷ 600 = 2,016。按 10 分钟一个区块算,两周正好出 2,016 个。
难度调整之后出块就稳定在 10 分钟一个了吗?
难度管的是平均值,而且带着前提。比特币白皮书的写法是让难度跟着一个移动平均走,对准的是每小时平均出块数。前提是矿工保持同样的计算速度,接下来 2,016 个区块才会正好用两周;算力在这期间涨了或跌了,实际出块就比 10 分钟快或慢,差出来的部分留到下一次调整再纠正。