本文深入探讨了比特币中的Full RBF(Full Replace-by-Fee)策略,该策略允许节点基于费用率来决定冲突的未确认交易。文章详细介绍了Full RBF的背景、近期讨论、不同观点,以及相关的争议和未来发展方向,包括对企业的影响,并提出了部署时间表和检测方法。
免责声明:这是我通过阅读所有能找到的资料并尽可能多地与人交流后,个人的理解。当我给出自己的观点时,我会加以说明。否则,我试图保持开放和公正的态度,但可能存在无意的偏见。
手续费替换 (Replace-by-Fee, RBF) 是一种 mempool 策略,允许节点根据交易费率在冲突的未确认交易之间做出选择。在此策略之前,mempool 接受它首先看到的任何交易。
完整 RBF 的定义已经随时间变化。在本文档中,它指的是一种接受交易替换的策略,即使原始交易没有发出 BIP125 可替换信号。
2021 年 6 月:Antoine Riard 发表了一项关于在 v24.0 中添加 -mempoolfullrbf 选项的计划 (计划于 2022 年 9 月/10 月),征求意见和疑虑。
2022 年 6 月:Antoine Riard 打开了 #25353 以添加 -mempoolfullrbf 选项
2022 年 7 月:Bitcoin Core 合并了 #25353
2022 年 10 月:Dario Sneidermanis 在 Bitcoin Core 中发布了关于完整 RBF 和 -mempoolfullrbf 选项的担忧,认为这会给接受未确认交易作为最终结果的企业带来问题。他要求从 v24.0 中删除 -mempoolfullrbf 选项,以便给 Muun 和其他应用程序更多的时间来准备。
这篇文章引发了各种讨论和邮件列表帖子,主要是关于一般的完整 RBF:
几个与完整 RBF 相关的拉取请求已提交给 Bitcoin Core。
-mempoolfullrbf=1
选项,它不会在那之前生效。用户也可以设置 -mempoolfullrbf=0
选项,以继续要求在那天之后发出信号。这是我在阅读和与人一对一交流后对情况的理解。仍然有一些我没能联系到的人,这里可能有一些偏见,但我已经尽力了,如果我不公平地代表了任何人的论点,我深表歉意。
似乎有 3 种思想流派:
我们应该积极地朝着完整 RBF 发展
我们现在应该努力阻止完整 RBF,但最终还是会走到那一步
我们应该努力阻止完整 RBF 发生
第一个立场主要由协议开发者持有,第二个立场由一些企业持有。最后的立场似乎非常罕见。
完整 RBF 是网络的自然状态。比特币区块、PoW 等的目的是解决双重支付问题;未确认的交易从未得到任何保证。当矿工收到两个冲突的交易时,激励兼容的策略是选择给他们更高费用的交易。使用 RBF 策略有助于节点更准确地了解哪笔交易可能被确认。当非信号交易具有更高费率的冲突时,"矿工会很好 "的安全假设明显弱于 "矿工会做理性的事情"。
完整 RBF 已经可以观察到,所以我们应该准备好更新我们的 mempool 策略,以便更准确地了解将被挖掘的内容。如果完整 RBF 变得普遍,而我的节点仍然假设选择加入得到遵守,它将拒绝可能被挖掘的交易,并可能使我对双重支付的尝试视而不见。
启用完整 RBF 可以消除各种基于信号的 DoS/pinning 攻击。
常见的反驳:
常见的反驳:
一般来说,RBF 为接受未确认交易作为最终交易结果的企业带来了更高的双重支付风险。目前的风险接近于零。这些企业应该能够继续做出这些假设,因为它能够实现 "快速 "链上支付。
美式看涨期权:如果在交易创建和确认之间汇率发生变化,用户可以替换交易以 "取消 "它并创建一个新交易。
常见的反驳:
该选项的存在与 Bitcoin Core 对其的认可无法区分。Bitcoin Core 没有默认启用它,但是通过添加该选项,表明用户拥有此选项是安全的。
添加该选项使运行完整 RBF 变得更容易,因此矿工 将 启用它,从而增加了非信号替换在实践中传播的机会。只有少数人就足以进行非信号替换。Dario Sneidermanis 帖子
如果这导致在企业准备好之前就实现了完整 RBF,它们可能会受到攻击和/或被迫缩小其 (许多) 用户的选择范围。这对 Bitcoin 来说可能是不利的。
软件产品的用户不应能够剥夺其他用户的选择权。我们有一些用户说 "我想要配置我的个人节点来执行此操作的选项",而另一些用户说 "我不希望其他用户拥有此选项,因为 _。" 说 "是的,对不起,你不能拥有此功能,不是因为我们无法支持它,而是因为另一个用户这样说 " 似乎是不合理的。
这是让 Bitcoin Core 对个人节点运营商的决定负责。它没有改变默认行为。它添加了一个选项。拥有此选项并不意味着会发生完整 RBF;即使我们删除它,仍然可能发生完整 RBF。Pieter Wuille 帖子
常见的反驳:
我认为值得专门用一个章节来介绍这些根本性的分歧,因为它们导致人们在许多讨论中各说各话。
我有一些悬而未决的问题,并且非常希望能够向矿工提出这些问题:
-mempoolfullrbf
选项,是否会有矿工启用它?如果是,多久启用?我们应该尝试监控完整 RBF 在网络上的普及程度,因为如果看到非信号替换变得非常普遍,我们应该坚定地建议启用 -mempoolfullrbf=1
。需要关注的一些事项:
Bitcoin Core v24.0 计划 于 2022 年 10 月 19 日发布。错误修复也推迟了发布,但我认为这是最后一个障碍。我不认为 "我们太接近了,无法更改任何内容 "是一个好的论点,但是存在紧迫性。
完整 RBF 在每周的 bitcoin-core-dev irc 会议中讨论 过。没有做出合并或推进任何 PR #26323 或 #26287 的决定。许多人支持 #26305,但时间更长 (从现在起 1-2 个版本或 1-2 年)。许多人不喜欢从用户那里删除一个选项的想法,特别是如果该选项是人们想要的并且对个人节点运营商来说是安全的做法。
对我来说,最大的问题是 "添加此选项是否会导致矿工切换到完整 RBF? ",我认为这需要由矿工来回答,而不是通过推测。就像完整 RBF 的支持者不能明确地说 "矿工会这样做,因为这是理性的 "一样,我不认为人们可以说 "矿工会这样做,因为它很容易翻转配置。"
Dario 从 Muun 的角度发布了对可用 PR 的 分析。它明确地支持完整 RBF,但对某些可预测性感兴趣。例如,如果预计每个人都会在从现在起大约 6 个月后的预定时间切换到完整 RBF,那么 Muun 有时间来实施和部署他们的解决方案。
多人提出了协调部署完整 RBF 的时间表:
我个人也认为,部署完整 RBF 最安全的方法是以协调的方式进行,与人们同意生态系统已准备就绪的时间保持一致。虽然这不是共识变更,但对于网络上的每个人来说,在同一时间切换更为安全。
如前所述,如果网络上开始发生完整 RBF,并且大多数 Bitcoin Core 用户没有办法配置他们的节点以接受非信号替换,那么他们的 mempool 就会变得不准确。即使我们密切监控网络并且矿工主动沟通他们正在接受非信号替换,让节点自动切换也比尝试告诉每个人使用 -mempoolfullrbf=1
重新启动安全得多。
时间表会给企业带来压力,要求它们弄清楚技术和用户体验方面的事情,但在我看来,大约 2 年的时间是非常合理的。同样,如果矿工计划在 2024 年减半后切换到完整 RBF (即,因为随着补贴的减少,费用变得更加重要),这将与他们的计划相符,因此 (我认为) 他们可能不会觉得有必要通过补丁来做到这一点。
但是,我也认为,合并某种超时锁定激活可能会导致大量指责 Bitcoin Core 试图强制执行完整 RBF 的指责。试图问会受到完整 RBF 影响的企业 "你什么时候可能准备好使用完整 RBF? "似乎总是会得到 "永远不会! "虽然我认为仍然值得尝试。
- 原文链接: github.com/glozow/bitcoi...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!