主页 > imtoken钱包苹果 > 一篇了解比特币时间戳安全性的文章

一篇了解比特币时间戳安全性的文章

imtoken钱包苹果 2023-01-18 09:34:24

推送时间戳窗口

如果你考虑一个敌手矿工可能如何尝试延长可接受的时间戳窗口,很明显,无论他有多少计算能力,他都不能将时间戳向后推超过 2 小时。但是,具有足够计算能力的攻击者可以通过仅打包几乎没有有效时间戳的区块来对“比特币时间”施加渐进式强加——仅比过去 11 个区块的中位时间晚一秒有些拖累。

有这样做的动机吗?在极端情况下,“时间扭曲攻击”会提供短期的财务激励,我们稍后会讨论它们。目前尚不清楚仅仅将时间戳拖几个小时可能存在什么激励措施。虽然考虑到其他协议可以构建在比特币之上(例如闪电网络)并且可能涉及时间锁定,但未来可能会有其他协议可能会被缓慢的区块链上时间戳的进展所欺骗。

算力时间拖累

由于最早的有效区块时间是基于过去 11 个区块的中值时间,因此恶意矿工需要生成大量区块才能在过去的中值时间内造成任何明显的拖累。

我们假设所有矿工通过网络时间协议大致同步,但有一个对手矿工试图尽可能多地拖动过去 11 个区块的中位时间。

比特币的安全性基于什么技术_比特币基础技术_比特币技术团队

有一点很清楚:对于 Satoshi 来说,使用最后 11 个区块的中间时间戳而不是平均值是一个明智的决定,因为平均值更容易操纵。另一种思考“过去的中位时间”的方式是,如果所有时间戳都按顺序排列,则它仅表示第 6 个最近区块的时间戳。如果不是,算法会重新排序它们。因此,如果您希望对该值产生不可忽略的影响,则需要计算过去 11 个块中的 6 个。为了维持这种攻击,你需要 55% 的算力,此时比特币热力学安全性的主要假设之一被打破。但幸运的是,算力较少的矿工有时仍然可以做到这一点。

从 11 个区块中挖出 6 个有多难?好吧,给定矿工找出下一个区块的概率基本上等于其占网络总算力的百分比。因此,如果你只有 1% 的算力(这仍然很多),那么你在任何 11 个连续区块中挖出 6 个的机会 = (0.01⁶*0.99⁵)*( 11 !/(5!* 6!)) = 大约 20 亿分之一。如果您保留 1% 的哈希率,那么在您挖出 11 个中的 6 个之前需要发生的预期区块数将超过 43,000 年。

实现成功的时间拖动攻击的预期延迟的更通用公式是:

(1 / (462 * (Hashrate %⁶ * (1 - Hashrate %)⁵))) / 144 块/天 = 天数

比特币的安全性基于什么技术_比特币基础技术_比特币技术团队

我们可以看到,对于想要在任何有意义的时间尺度上进行此类攻击的攻击者,他们需要一个相当大的矿池,至少占网络总算力的 10%。

最大阻力

然而,为了在过去的中位时间内产生最大阻力比特币的安全性基于什么技术,矿工必须连续计算 6 个区块。如果他们没有按顺序开采最后 11 个区块中的所有 6 个,则其他矿工创建的间隔将迫使该敌对矿工将其区块的时间戳设置为彼此提前一秒,因为每个区块的中位经过时间将显着跳跃诚实的矿工在他们的区块上设置的更准确的时间戳。

连续开采 6 个街区有多难?如果我们再次假设矿工拥有 1% 的网络总算力,那么连续挖出任意 6 个区块的机会为 0.01⁶ = 大约万亿分之一。如果你保留 1% 的算力,那么在你连续挖出 6 个区块之前需要发生的预期区块数几乎是 200 万年。

对于成功的时间拖曳攻击的预期时间,公式的更通用版本将是:

比特币技术团队_比特币的安全性基于什么技术_比特币基础技术

(1 / Hashrate %⁶ ) / 144 块/天 = 天数

这种类型的攻击更难实施,需要整个网络更多的计算能力,比如 20% 或 30%,才能在合理的时间范围内发生。可以想象,这种情况很少发生,当它发生时,人们会注意到。上一次发生这种情况是在 2014 年 7 月,GHash 的哈希率一度超过 40%,甚至在短时间内达到 51%。它在 9 个月前再次发生,当时 BTC Guild 拥有近一半的哈希率。如果你有 50% 的算力,你连续挖出 6 个区块的机会是 0.5⁶ = 1 in 64。如果你保持 50% 的算力,你将能够在一个区块中找到 6 个区块几乎每12小时排一次。

显然,如果没有大部分哈希率,就不可能长期拖动比特币过去的中位时间,但是你可以在几个小时内结合运气和耐心,在短时间内(一个区块左右)拖动它。如果您假设其他矿工的时间戳相当准确,那么过去的中位时间应该是大约 1 小时前,尽管由于开采区块的波动性可能会多几个小时。如果您设法制作 6 个带有 1 小时前时间戳加上 1 秒、2 秒、3 秒等的区块,那么在第 6 个区块中,经过的时间中值大约是 2 小时前。如果我们假设区块间隔为 1 小时的极端条件,则过去的中位时间将是 6 小时前。

通过在区块时间戳中允许合理的灵活性,然后取最近区块的中间时间,我们最终得到了一个很难被愚弄但又不会脆弱到对不同步的矿工有用的算法实时产生负面影响。

比特币技术团队_比特币的安全性基于什么技术_比特币基础技术

让我们再做一次时间扭曲

如果攻击者确实拥有超过 50% 的网络总算力并且他们想要减慢比特币时间的流逝怎么办?他们可以做一些非常讨厌的事情。这种敌对的矿工会阻止时间戳在每个新区块中推进超过 1 秒。如果他们继续这样做足够长的时间,并且最终在难度调整间隔内创建块,并且时间戳看起来像是 2016 个块是在超过 2 周前创建的,那么他们可以操纵调整后的逻辑以将难度降低多达 75% 2016 块。最终,在足够低的难度下,他们可以在给定的时间段内随意出块,获得高于预期的挖矿奖励。优化的时间扭曲攻击可以在 18.7 天内挖掘所有剩余的比特币。我们实际上已经在比特币的 Testnet 3 上看到了类似的行为,

时间扭曲攻击并不是什么新鲜事。该攻击于 2011 年首次针对名为“Geist Geld”的代币进行,该代币在 BitcoinTalk 上被讨论为“51% 攻击的变体”。Geist Geld 希望以非常短的出块时间测试出块速率的上限,以及具有(几乎)稳定的生成速率且没有供应上限或供应变化的加密货币的行为。

Whitecoin 似乎也在 2014 年遭受了时间扭曲攻击。

2018年,Verge就被这样攻击了。然后在6周后再次受到攻击!

比特币技术团队_比特币基础技术_比特币的安全性基于什么技术

通常,对于给定类型的硬件(ASIC 或 GPU),具有低计算能力的加密货币容易受到时间扭曲攻击,因为它们本身容易受到 51% 攻击。

有趣的是,虽然时间扭曲通常被称为攻击,因为它会导致系统出现意外行为,但有些人已经表明它可以用于潜在的预期用途。2015 年比特币的安全性基于什么技术,Vitalik Buterin 描述了一种通过软分叉加速区块来增加链上容量的方法。2018 年,比特币开发者 Mark Friedenbach 提议利用这种意外行为为比特币添加新功能。在他的“Forward Blocks”提案中,Mark 阐述了他的方法,该方法可以将链上交易量扩大到当前水平的 3,584 倍,以向后兼容的方式改变工作量证明算法,Sharding,一个可返还的费用市场共识费用检测,矿工补贴的顺利终止,保密交易的前提协议,mimblewimble,

然而,这些提议是有争议的,并且可能会迫使建立在比特币区块头时间戳上的系统在其他地方寻找这些数据。阻止这样的更改也相当容易,正如 Greg Maxwell 将其放在比特币开发者邮件列表中:

它可以通过进一步限制区块时间戳的软分叉来修复,并且已经有沿着这条路线的提议。

综上所述

比特币的时间戳安全性,以及一些限制可接受时间戳窗口的简单规则,尽管存在已知缺陷,但在对抗环境中经受了 10 年的考验。我们知道 51% 的矿工至少会在短时间内对网络造成严重破坏,但这从未发生过——可能是因为激励措施不适合矿工这样做。理性的矿工不会选择短期收益来杀死长期的金鹅。