比特币共识清理

这篇文章详细介绍了比特币改进提案BIP 54(共识清理),这是一个软分叉提案,旨在修复比特币核心共识协议中的四个长期存在的漏洞。这些漏洞包括影响工作量证明的Timewarp攻击、导致区块验证时间过长的攻击、伪造支付证明以及UTXO双重交易。文章逐一分析了每个漏洞的危害和BIP 54提出的具体修复方案,并讨论了提案的演变和当前状态。

From The Core Issue: A look at BIP 54, a softfork proposal to fix four outstanding bugs in Bitcoin's core consensus protocol.

Antoine Poinsot

作者:Antoine Poinsot

The Core Issue: Consensus Cleanup

协议开发者对Bitcoin未来的看法,往往比大多数Bitcoin持有者更为悲观。日常接触Bitcoin的缺点,无疑塑造了一种清醒的视角,而且反思Bitcoin已取得的成就也很重要。世界上任何人,无论其种族、年龄、性别、国籍或任何其他武断标准,都能够在一个比以往任何时候都更健壮的中立货币网络上存储和转移价值。话虽如此,Bitcoin确实存在许多Bitcoin持有者没有意识到的问题,如果不能妥善解决,可能会威胁到其长期前景。由Consensus Cleanup修复的漏洞就是其中一个例子。

Consensus Cleanup (BIP 541) 是一个软分叉提案,旨在修补Bitcoin共识协议中多个长期存在的漏洞。作为一个软分叉提案,它在性质上与本期特稿中介绍的大多数其他Bitcoin Core工作有所不同。尽管该提案历史上一直由与Bitcoin Core项目相关的个人倡导,但它实际上属于更广泛的Bitcoin协议开发类别。

我们将逐一介绍该提案的四个项目,描述所解决问题的影响以及所应用的补救措施。我们将讨论提议的缓解措施如何演变以应对反馈以及新发现的漏洞。最后,我们将简要概述软分叉提案的当前状态。

Bitcoin工作量证明中的一个漏洞

Bitcoin网络会调整挖矿难度,以保持平均每10分钟一个区块的出块速度。其实现中的一个“off by one”错误(一种常见的编程错误)开启了一种名为“Timewarp攻击”的攻击,通过操纵难度向下,大多数矿工可以人为地加快出块速度。

幸运的是,这种攻击需要超过51%的矿工门槛,但人为地加快出块速度是一个关键问题。这意味着全节点不再能控制资源使用,并且攻击者可以显著加速比特币补贴的发行计划。

尽管它需要“51%的矿工”,但这与标准的Bitcoin威胁模型显著不同。51%攻击传统上使矿工能够阻止交易的确认,只要他们保持优势。但是,这个bug的存在赋予他们能力,通过迅速降低网络难度,在短短38天内瘫痪网络。

攻击者更有可能利用这个bug到较小的程度,而不是完全摧毁网络。当前的矿工可以协调将出块速度提高四倍(达到2.5分钟一个区块),同时保持Bitcoin网络看似正常运行的状态,从而有效地将可用区块空间增加四倍,并从未来的矿工那里窃取区块补贴。短视的用户可能会被激励支持这种攻击,因为更多的可用区块空间将意味着——在其他条件相同的情况下——链上交易的费用更低。这当然会以全节点运行者为代价,并损害网络的长期稳定性。

What difficulty adjustment takes into account.

Timewarp攻击利用了难度调整周期不重叠的事实,允许设置区块时间戳,使得新周期似乎在旧周期结束之前开始。由于使它们重叠将是一个硬分叉,因此次优的缓解措施是将难度调整周期边界处的区块时间戳关联起来。BIP 54规范要求,一个周期的第一个区块的时间戳不能比前一个周期的最后一个区块早超过两小时。

此外,BIP 54规范要求难度调整周期必须始终花费正向时间。也就是说,对于给定的难度调整周期,最后一个区块的时间戳绝不能早于第一个区块。你惊讶这并非已经如此吗?我们也很惊讶这竟然是必要的。事实证明,这是一个针对一个巧妙攻击的简单修复,该攻击与Timewarp有关,是由化名开发者Zawy和Mark “Murch” Erhardt在审查Consensus Cleanup提案时提出的。

验证耗时数小时的区块

任何矿工都可以利用某些昂贵的验证操作来创建需要很长时间才能验证的区块。普通的Bitcoin区块验证时间大约为一百毫秒,而这些“攻击区块”的验证时间在高配置计算机上从超过十分钟到Raspberry Pi(一种流行的全节点硬件选择)上长达十小时不等。

一个外部动机的攻击者可以利用这一点来扰乱整个网络,而在更具经济理性的攻击变体中,矿工可以延迟其竞争对手足够长的时间,以增加其利润,而不会造成广泛的网络中断。

历史上解决这个问题的尝试一直动荡不安,因为它需要对Bitcoin的脚本功能施加限制。这种限制有可能具有没收性,这在任何严肃的软分叉设计中都必须避免。

Matt Corallo最初在2019年提出的Great Consensus Cleanup,通过使非Segwit(“传统”)Script中一些晦涩的操作失效来解决这些长时间的区块验证问题。有人提出担忧,尽管使用这些操作的交易多年来默认未被Bitcoin Core中继或挖矿,但某处可能仍有人在不知情的情况下依赖它。当然,这必须与矿工利用此问题给所有Bitcoin用户带来的实际风险进行权衡。

尽管没收的担忧相当理论化,但在尝试为漏洞设计最小化没收面的适当缓解措施时,关于如何进行Bitcoin协议开发存在一个哲学观点。我后来迭代的Consensus Cleanup提案通过引入一个精准定位有害行为的限制来解决了这一担忧,而没有使任何特定的Bitcoin Script操作失效。

伪造的支付证明

Bitcoin区块头包含一个Merkle根,它承诺了区块中的所有交易。这使得能够提供一个简洁的证明,证明给定的交易是具有一定工作量证明的链的一部分。这通常被称为“SPV证明”。

由于Merkle树设计中的一个弱点,在区块中包含一个经过特殊制作的64字节交易,攻击者可以为任意虚假(不存在的)交易伪造此类证明。这可能被用来欺骗SPV验证器,这些验证器通常用于验证传入的支付或存入侧链系统。存在允许验证器拒绝此类无效证明的缓解措施;然而,这些措施常常被忽视——即使是加密专家——并且在某些情况下可能很繁琐。

Consensus Cleanup通过使序列化大小恰好为64字节的交易无效来解决这个问题。此类交易首先就无法安全(它们只能销毁资金或任由任何人花费),并且自2019年以来,Bitcoin Core默认不再中继或挖矿此类交易。曾讨论过替代方法,例如通过一种迂回的方式来改进现有的缓解措施,但作者选择修复问题的根本原因,从而消除了实现者应用缓解措施的需要,也消除了他们一开始就知道此漏洞的需要。

a:将Merkle树深度提交到区块头版本字段的一部分

UTXO Doppelgängers:重复交易

微观……中观……宏观通胀——经济过热”是Russell O'Connor在2012年2月发表的一篇博客文章4的标题,其中他描述了Bitcoin交易如何被复制。这是Bitcoin的一个关键缺陷,它打破了交易标识符(哈希)是唯一的这一基本假设。这是因为矿工的coinbase交易只有一个空白输入,这意味着任何具有相同输出的coinbase交易将具有相同的交易标识符。

Bitcoin Core(当时仍称为“Bitcoin”)开发者通过BIP 302修复了这个问题,该BIP 302要求全节点在接收区块时执行额外的验证。这种额外的验证并非严格必要,并在同年通过BIP 343绕过了。不幸的是,BIP 34中引入的修复是不完善的,BIP 30的额外验证将在20年后再次需要。除了不是严格必要之外,这种验证不能由Utreexo等替代Bitcoin客户端设计执行,并且会有效地阻止它们完全验证区块链。

Consensus Cleanup引入了一种更健壮、更具前瞻性的解决方案来解决这个问题。所有Bitcoin交易,包括coinbase交易,都包含一个“时间锁”字段来锁定交易。该字段的值代表交易无效的最后一个区块高度。BIP 54规范要求所有coinbase交易将此字段设置为其区块的高度(减1)。

结合Anthony Towns的巧妙建议,确保时间锁验证始终发生,这保证了以前的区块中不可能包含具有相同时间锁值的coinbase交易。这反过来又保证了任何coinbase交易都不会与过去的任何交易具有相同的唯一标识符(哈希),而无需BIP 30验证。

一盎司的预防胜过一磅的治疗

Consensus Cleanup (BIP 54) 解决的漏洞目前并非对Bitcoin构成生存威胁。虽然有些漏洞有可能使网络瘫痪,但目前不太可能被利用。话虽如此,这种情况可能会改变,因此我们主动缓解Bitcoin网络的长期风险至关重要,即使这意味着必须承担协调软分叉的短期负担。

Consensus Cleanup的工作始于Matt Corallo在2019年的原始提案。6年后,随着我发布BIP 54以及在Bitcoin Inquisition(一个Bitcoin共识变更的测试平台)中实现软分叉,它得以完成。在此期间,该提案收到了大量的反馈,考虑了各种替代方案,并纳入了针对其他弱点的缓解措施。我相信它现在已经准备好与Bitcoin用户分享以供考虑。

Consensus Cleanup是一个软分叉。Bitcoin协议开发者选择优先改进哪些并提供给公众。但采纳Bitcoin共识规则更改的最终决定权在于用户。选择权在你手中。

不要错过拥有《核心议题》的机会——其中收录了许多核心开发者撰写的文章,解释了他们自己正在进行的项目!

本文是最新一期《Bitcoin Magazine》印刷版《核心议题》中的编辑来信。我们在此分享,作为对本期完整内容中探讨的想法的抢先一瞥。

[1] https://github.com/bitcoin/bips/blob/master/bip-0054.md

[2] https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki

[3] https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki

[4] https://r6.ca/blog/20120206T005236Z.html

  • 原文链接: bitcoinmagazine.com/prin...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
bitcoinm
bitcoinm
江湖只有他的大名,没有他的介绍。