主页 > imtoken限制中国用户该咋办 > Time Warp Attack - 理论上最快18.7天可以挖完剩下的比特币
Time Warp Attack - 理论上最快18.7天可以挖完剩下的比特币
前言:中本聪设计的2100万个BTC总量,按照正常挖矿情况,预计剩余数量在2140个左右挖完。那么,是否存在某种情况会导致比特币提前被挖出? 完成的? 答案是:可以,但目前这种解决方案只是理论上的。 51% 攻击的一种变体称为时间扭曲攻击,理论上可以让剩余的比特币以最快的时间在 18.7 天内被开采出来。 但是,理性的矿工不会面对长期的金蛋。 遇鹅,选择短线获利比特币挖完时间,杀之。 而这也是原作者 Jameson Lopp 想要讨论的时间戳安全的话题。 以下为译文:
时间扭曲攻击可以在 20 天内挖出剩余的比特币.jpeg (19.97 KB, 下载次数: 0)
下载附件
昨天 19:03 上传
(图片来自:pexels.com)比特币通常被称为安全时间戳服务。 在比特币之前,我们从来没有可靠的时间戳全球真实记录,那么这是怎么发生的呢? 这通常是由于工作证明 (PoW) 被纳入矿工必须遵守的一些简单规则。 矿工的主要功能是:
正是这最后一个属性允许比特币控制比特币供应的释放。 没有它,每当计算能力增加时,比特币就会经历快速通货膨胀的过程。 但事实证明,这一属性为比特币协议赋予了相当大的效用,也使人们能够将比特币用作其他服务的数据锚点。 因为我们对时间戳在给定范围内有相当有力的保证,并且我们对重写区块链历史所需的能量有数学保证,所以比特币为数据中的时间戳提供了可靠的锚点。 但它有多可靠? 比特币时间戳的灵活性 为了让节点认为区块头的时间字段有效,它必须满足两个条件:
第一条规则是有道理的,我们显然不希望任何人声称来自未来比特币挖完时间,并且节点很容易拒绝这样的声明,因为我们都同意当前时间(有多种方法可以检查当前时间,并且 A计算机同步时钟的非常流行的方式是通过网络时间协议)。 但是,很难保证时间不会超前于一个合理的时间点。 这是因为我们不能假设节点在其原始创建时间附近的任何时间点都在验证块。 节点需要能够出于任何原因或无原因离开和重新加入网络。 如果必须在当前时间的几个小时内创建历史区块,那么距离链顶太远的节点将开始拒绝历史区块。 这是中本聪白皮书中的一段话:
“节点可以随意离开和重新加入网络,并接受工作证明链作为它们消失时发生的事情的证据。”
也许违反直觉,实际上并没有规定一个块的时间戳必须在前一个块的时间戳之后。 仔细想想,这样的规则会导致一个问题:如果一个矿工创建一个时间戳在未来将近 2 小时的区块,那么下一个区块也需要等待很长时间,而且对于其他矿工自我修正过去 11 个区块的中值时间(MTP); 另外请记住,虽然比特币网络预计每 10 分钟产生一个区块,但这并不能真正保证。 块创建之间的间隔可以从几毫秒到几个小时不等。 虽然过去 11 个区块的预期中值时间应该是 1 小时前,但可能更多或更少;
来源:Pushing the Window 如果你考虑对手如何尝试延长可接受的时间戳窗口,很明显没有对手能够将时间戳推到未来超过 2 小时(无论他们拥有多少计算能力)。 然而,具有足够算力的攻击者只需要在过去 11 个区块的中值时间的一秒内创建具有勉强有效时间戳的区块,就可以对“比特币时间”的进程施加一些限制。 拖; 有这样做的动机吗? 在极端情况下,“时间扭曲攻击”提供短期经济激励,我们将在后面讨论这个话题。 目前尚不清楚将时间戳拖延几个小时的动机是什么。 未来可能会有其他协议通过减慢区块链上时间戳的进程来玩游戏,尽管考虑到其他协议可以建立在比特币之上(如闪电网络)并且可能涉及时间锁。 算力时间拖拽(Hashpower Time Dragging) 由于最早的有效出块时间是基于过去11个区块的中值时间(MTP),恶意矿工需要生成大量的区块才能在MTP上造成任何一个区块。 明显的阻力。 让我们假设这样一种情况,所有矿工通过 MTP 大致同步,但是有一个恶意矿工试图将 MTP 拖到尽可能超过 11 个区块。 有一件事非常清楚:中本聪明智地决定使用过去 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% 网络哈希率的矿池; 最大阻力产生在价值时间(MTP),矿工需要连续解决6个区块。 如果过去的 11 个区块中有 6 个不是全部有序的,其他矿工造成的时间间隔将迫使敌对矿工将他们的区块的时间戳设置为彼此相隔超过一秒,因为每个区块的 MTP 将大幅向前跳跃(诚实的矿工会在他们的区块上设置更准确的时间戳)。 连续解决 6 个方块有多难? 如果我们再次假设一个矿工拥有 1% 的网络哈希率,那么任何给定的 6 个连续区块的概率是 0.01⁶,大约是万亿分之一。 如果一直保持全网算力的 1%,从 11 个数据块中找到 6 个连续块的预期时间将接近 200 万年。 成功完成时间拖曳攻击的预期等待时间的更通用公式是:
(1 / % hashrate⁶ ) / 144 个区块/天 = # 天
这种攻击较难完成,需要在合理的时间内发生,因此矿工需要掌握全网20%或30%的算力。 可以想象,这种情况很少发生,一旦发生,人们就会注意到。 至于比特币,其历史上最后一次出现这种情况是在 2014 年 7 月,当时 GHash 矿池在一段时间内占据了超过 40% 的算力,甚至在短时间内超过了 51%。 如果你有 50% 的算力,那么你能找到 6 个连续区块的概率是 0.5⁶(64 分之一)。 如果维持全网50%的算力,那么预计每12小时,可以找到6个连续的区块; 维度中拖比特币的中位时间,但是你可以在短时间内(1个区块左右)拖到几个小时,运气和耐心。 如果你假设其他矿工有相当准确的时间戳,过去的中值时间应该是大约 1 小时前(尽管由于发现的区块发生变化可能会多几个小时)。 如果您可以创建 6 个块,时间戳为 1 小时前加上 1 秒、2 秒、3 秒等,那么在第 6 个块处,MTP 大约为 2 小时前。 如果我们假设区块之间的极端条件为 1 小时,那么 MTP 将是 6 小时前。 凭借区块时间戳的合理灵活性,然后采用最近区块的中值时间,我们最终得到了一个难以博弈的算法,但又不会太脆弱以至于与实时矿工有点不同步而受到不利影响。
时间扭曲攻击如果攻击者拥有超过 50% 的网络计算能力并且他们想要减慢比特币的时间流逝,会发生什么? 他们可以做一些非常讨厌的事情。 这样一个敌对的矿工可以通过每个新块推送超过 1 秒,以防止时间戳。 如果他们这样做的时间足够长,以至于之前 2016 年区块的创建似乎花费了 2 周以上,他们可以利用重定向逻辑将每 2016 年区块的挖掘难度降低 75%。 最终,在足够低的难度下,他们可以在给定时间内铸造任意数量的区块,获得比预期更多的挖矿奖励。 一种优化的时间扭曲攻击,可以在 18.7 天内挖掘所有剩余的比特币。 事实上,我们在比特币的testnet3上也发现了类似的行为,这是由于重置难度的巧合造成的(曾经一天出块16000个),现在testnet3,经过8年的历史,已经挖出了1,482,878个区块,大约预期排放量的 350%。 时间扭曲攻击并不是什么新鲜事。 2011年,这种攻击首先针对一种名为“Geist Geld”的硬币进行,被社区认为是51%攻击的变种。 2014 年,一种名为 Whitecoin 的山寨币也遭到了时间扭曲攻击。 2018年,隐私币Verge也是这样被攻击的,6周后,再次被攻击! 通常,对于给定类型的硬件(ASIC 或 GPU)具有少量计算能力的加密货币容易受到时间扭曲攻击,因为它们天生就容易受到 51% 攻击。
有趣的是,虽然时间扭曲通常被称为攻击,因为它会导致系统出现意外行为,但一些人已经证明它可以被用于潜在的预期用途。 2015 年,Vitalik Buterin 描述了一种通过软分叉加速块的方法,从而增加链上容量。 2018 年,比特币开发者 Mark Friedenbach 提议利用这种意外行为为比特币添加新功能。 在他的“前向区块”提案中,Mark 表示他的方法能够将链上交易扩展到当前水平的 3,584 倍。 然而,这样的提议是有争议的,它迫使任何构建依赖比特币区块头时间戳的系统的人到别处寻找该数据。 防止此类更改也很容易,正如 Greg Maxwell 在比特币开发者邮件列表中所说:
“它可以通过进一步限制时间戳的软分叉来修复,沿着这条线有几个提议。”
总结比特币时间戳的安全性,以及限制可接受时间戳窗口的简单规则,尽管存在已知的弱点,但它们在对抗环境中经受住了 10 年的考验。 我们知道,至少在短时间内,一群拥有 51% 算力的矿工可能会对网络造成破坏,但这从未发生过,可能是因为矿工没有被激励这样做。 理性的矿工不会选择短期利益,长期杀一只能下金蛋的鹅。