699 / 736TIMEWARP

Timewarp Attack

利用区块时间戳攻击挖矿难度

Bitcoin 根据区块中记录的时间估算挖矿速度,而这些时间由矿工自己填写。Timewarp Attack 利用时间规则与难度计算之间的漏洞:力量足够强的一群矿工,可以让挖矿看起来更慢,从而降低后续区块的挖矿难度。

Timewarp Attack 是对区块头时间戳的协同操纵,会扭曲下一次难度计算。即使算力没有相应下降,攻击也可能降低难度,加快出块。

Bitcoin 每 2016 个区块重新计算难度,目标是平均每 10 分钟出一个区块。计算用周期末块的时间减去首块的时间,因此只覆盖 2015 个间隔。一个周期末块与下个周期首块之间的间隔,没有计入这些差值。在这条边界上,时间可以倒退,而两个周期的计算并未把它们连续连接起来。 [4] [3]

新区块的时间必须大于 Median Time Past(MTP),即前 11 个区块时间的中位数。但它不必晚于紧邻的前一个区块。攻击者可以把大多数时间设为仅比 MTP 大 1 秒,将周期末块标为接近真实时间,然后再次使用较早的时间。他们操纵的是新挖出的区块,不是在改写已确认的区块头。 [1]

经典情形需要多数算力,或拥有额外区块排序影响力的少数算力,例如通过 Selfish Mining 获得这种优势。攻击需要长期控制时间序列,而不是只挖出一个时间异常的区块。经典攻击约需一个月的准备,其痕迹会公开留在链上。 [1]

在第二个受攻击周期,时间戳可以制造平均每 20 分钟出一块的假象,使难度大致减半。下一周期挖得更快,但受操纵的时间又要求降低难度。单次调整最多四倍的限制,无法阻止反复操作。MTP 带来的理论长期极限约为每秒 6 个区块;这不是对网络实际吞吐量的保证。 [1] [3]

更快的区块会把未来的区块补贴提前集中到更短时间内领取,但这本身不会提高 2100 万 BTC 的上限。节点必须更快地验证和转发数据。处理器过载、网络连接不足、竞争分支以及频繁重组,都会削弱确认的可靠性。 [1]

BIP 113 使用前一个区块的 MTP,判断以时间表示的绝对 nLockTime 锁定条件。以区块高度表示的锁仍然依赖高度。攻击期间,MTP 可能比真实时钟推进得慢得多。受时间条件约束的资金可能比预期更久无法使用,复杂协议中各步骤的时间配合也可能失效。 [5] [1]

该提案限制周期首块的时间:它不能比前一个区块早超过 7200 秒,也就是两小时。周期末块的时间也不能早于首块。规范的状态是 Complete,表示提案已完成,而非已经激活。要在主网强制执行新的共识规则,仍需单独激活。 [2]

对照区块头时间、MTP、每 2016 个区块的边界、实际挖矿速度、难度和算力。区分经典攻击与 Murch–Zawy 变体,也要区分测试网和主网规则。软件可以预先生成更安全的区块模板,但这不代表整个网络都会拒绝违反拟议防护规则的每个区块。 [3] [2]

要获得更完整的理解,请将本词条与以下词条结合阅读: Difficulty Adjustment, 挖矿, Proof of Work, Consensus Cleanup, Timelock, Reorg. 反向关联还来自: Consensus Cleanup.

01攻击需要多数算力吗?

经典情形需要多数算力,或能提供足够区块排序影响力的其他优势。没有这种优势的小矿工,无法充分控制区块时间。

02Median Time Past 的保护够用吗?

不够。MTP 限制单个时间戳,却没有堵住周期间的缺口。BIP 54 提议进一步约束首块与末块时间之间的关系。

DOC · 001Bitcoin Optech — Time warp文档 DOC · 002BIP 54 — Consensus Cleanup规范 DOC · 003Bitcoin Core — pow.cpp一手来源 DOC · 004Bitcoin Developer Guide — Block chain文档 DOC · 005BIP 113 — Median time-past as endpoint for lock-time calculations规范
修订日期: 来源优先 · 非投资建议