第 7 篇比特币 Optech 年度回顾,总结了 2024 年比特币的重大发展。 这是继 201820192020202120222023 年度总结之后的又一篇年度回顾。

目录


一月

  • 依赖手续费的时间锁: John Law 提出了 “依赖手续费的时间锁”,这是一个软分叉提议,允许时间锁仅在区块费率中值低于用户指定的水平时才会过期(解锁)。相反,时间锁会延长,直到费用降低到预定值为止,从而解决了大规模通道关闭时引发的强制过期洪流的长期问题。这一提案改善了多用户环境如通道工厂joinpools的安全性,同时激励参与者避免造成费用峰值。讨论的重点包括将参数存储在 Taproot annex 字段中、为轻量客户端提供费率承诺、支持剪枝节点以及协议外手续费的影响。
  • 优化的合约协议退出: Salvatore Ingala 提出了一种对多方合约优化退出流程的方法,例如 joinpools 和通道工厂的使用场景。通过这一方法,用户可以协调生成一笔单一交易,而不是广播各自独立的交易。这种方式在链上交易规模上至少减少 50%,在理想情况下甚至可减少多达 99%,这在高费用环境下至关重要。该方法通过引入保证金机制(bond mechanism)来确保执行的诚实性:由一名参与者构建交易,但如果被证明存在欺诈行为,该参与者将没收其保证金。Ingala 建议使用 OP_CATMATT软分叉功能来实现此优化,进一步的效率提升可通过 OP_CSFS 和 64 位算术运算实现。
  • LN-Symmetry 概念验证实现: Gregory Sanders 分享了基于 Core Lightning 的 LN-Symmetry概念验证实现。LN-Symmetry 实现了无需罚款交易的双向支付通道,但依赖于一个软分叉,例如 SIGHASH_ANYPREVOUT,以允许子交易可以花费任何版本的父交易。Sanders 强调了其相较于 LN-Penalty的简单性、避免交易钉死的难度(这启发 Sanders 开展了有关包中继临时锚点的研究)、以及通过模拟 OP_CTV 实现更快支付的潜力。他确信惩罚是不必要的,这简化了通道实现并避免了预留资金。然而,LN-Symmetry 需要更长的 CLTV 到期差以防止被滥用。

二月

  • 按费率替换: Peter Todd 提出了按费率替换 (RBFr)以解决当标准RBF(手续费替换)策略失效时的交易钉死问题,该提案包含两种变体:纯 RBFr,允许使用费率显著更高(例如 2 倍)的替代交易进行无限次替换;单次 RBFr,允许单次替代交易,但只需支付中等幅度更高的费用(例如 1.25 倍),前提是替代交易可以进入交易池的顶部。Mark Erhardt 指出了该提案的一个初始问题,其他开发者讨论了在现有工具下全面分析这一提案的复杂性。Todd 发布了一个实验性实现,同时其他开发者也继续研究替代方案以解决交易钉死问题,并开发了必要的工具来增强对最终采用解决方案的信心。
  • 人类可读的支付指令: Matt Corallo 提出了一个基于 DNS 的人类可读比特币支付指令的改进提案(BIP),允许通过类似电子邮件的字符串(例如 example@example.com)解析为一个包含 BIP21 URI 的 DNSSEC 签名 TXT 记录。这种方法支持链上地址、静默支付(Silent Payments)和闪电网络要约(offers),还可以轻松扩展到其他支付协议。该提案标准被分配到BIP353。Corallo 还起草了针对 LN 节点的 BOLTBLIP 提案,支持泛域名 DNS(wildcard DNS)记录,并通过 LN 要约实现安全的支付解析。该实现于 11 月被合并到 LDK 中。该协议及静默支付的开发,促使 Josie Baker 开启了关于修订 BIP21 支付 URI 的讨论,这一讨论在年内继续进行。
  • LN 双向注资: 闪电网络(LN)规范增加了对双向注资支持,同时新增了对交互式交易构建协议的支持。交互式构建允许两个节点交换偏好和 UTXO 详细信息,从而协作构建注资交易。双向注资允许交易包含任一方或双方的输入。例如,Alice 希望与 Bob 开启一个支付通道。在此规范更改之前,Alice 必须提供通道的全部资金。而现在,在支持双向资金的实现中,Alice 可以开启一个由 Bob 提供全部资金的通道,或者一个由双方共同为初始通道状态出资的通道。该功能可以与实验性的流动性广告 协议结合使用,但该协议尚未被加入正式规范。
  • 对未来费率的免信任押注: ZmnSCPxj 提出了无信任脚本,允许两方押注未来区块的费率。一名用户希望某笔交易在未来某区块中得到确认时,可以通过这种方式抵消因当时费率异常高所带来的风险;一名预计将在用户需要交易确认时挖矿的矿工,则可以通过该合约抵消费率异常低的风险。该设计避免了中心化市场中常见的操控行为,因为矿工的决策完全基于实际的挖矿条件。此合约是免信任的,包含一个合作支付路径,从而将双方的成本降至最低。

2024 年总结:漏洞披露

在2024年,Optech 总结了超过两打的漏洞披露。其中大多数是 Bitcoin Core 的旧漏洞,首次在今年被公开。漏洞报告为开发者和用户提供了从过去问题中学习的机会,而负责任的披露出来则让我们有机会感谢那些谨慎报告发现的人。

注意:Optech 仅在认为漏洞发现者做出了合理努力以尽量减少对用户的伤害时,才会公布他们的名字。我们感谢本节中所有被提及的人士,他们的洞察力以及对用户安全的明确关切令人敬佩。

2023年年底,Niklas Gögge 公开披露了他两年前报告的两个漏洞,这些漏洞导致了修复版本的 LND 发布。第一个漏洞是一个 DoS 漏洞,可能导致 LND 内存耗尽并崩溃。第二个漏洞 是一个审查漏洞,攻击者可以阻止 LND 节点了解网络中目标通道的更新,攻击者可以利用这一点使节点偏向于为其发送的付款选择特定路由,从而为攻击者提供更多的转发费用和有关节点发送的付款的更多信息。

一月,Matt Morehouse 公布了一个漏洞,该漏洞影响 Core Lightning 版本 23.02 至 23.05.2。在重新测试已修复虚假注资漏洞(由他此前发现和披露的漏洞)的节点时,他触发了一个竞争条件,使得 CLN 在约30秒后崩溃。如果 LN 节点关闭,它无法保护用户免受恶意或损坏对等方的攻击,从而使用户资金面临风险。

同样在一月,Gögge宣布了一个他发现的影响 btcd 全节点的共识失败漏洞。该代码可能错误解释交易版本号,并对使用相对时间锁的交易应用错误的共识规则。这可能导致 btcd 全节点未能显示与 Bitcoin Core 一致的已确认交易,从而使用户面临资金损失的风险。

二月,Eugene Siegel 发布了一份他最初在近三年前披露的 Bitcoin Core 漏洞报告。该漏洞可被用于阻止 Bitcoin Core 下载最新区块,这可能导致连接的 LN 节点无法获取解析HTLC所需的哈希原象,从而可能导致资金损失。

六月,Morehouse 再次披露了一个漏洞,该漏洞崩溃了 0.17.0 之前版本的 LND。如前所述,关闭的 LN 节点无法保护用户免受恶意或损坏对等方的攻击,从而使用户资金面临风险。

七月,多次披露的 Bitcoin Core 旧版本漏洞开始首次公开:Wladimir J. Van Der Laan 在调查 Aleksandar Nikolic 发现的 Bitcoin Core 使用的库中的漏洞时,发现了一个允许远程代码执行的单独漏洞,该漏洞已在上游修复,并被纳入 Bitcoin Core;开发者 Evil-Knievel发现了一个漏洞,可耗尽许多 Bitcoin Core 节点的内存并导致崩溃,这可能被用于其他攻击(例如从 LN 用户窃取资金);John Newbery 与 Amiti Uttarwar 共同发现了一个漏洞,可用于审查未确认交易,并可能作为窃取资金(如 LN 用户资金)的攻击的一部分;一个漏洞被报告 ,该漏洞允许消耗过多的 CPU 和内存,可能导致节点崩溃;开发者 practicalswift 发现了一个漏洞,该漏洞可能导致节点在一段时间内忽略合法区块,延迟对 LN 等合同协议中的时间敏感事件的响应;开发者 sec.eine 披露了一个漏洞,该漏洞可消耗过多的 CPU,可能导致节点无法处理新的区块和交易,从而引发多种问题,导致资金损失;John Newbery 负责地披露了另一个漏洞,该漏洞可能耗尽许多节点的内存,导致崩溃;Cory Fields 发现了一个单独的内存耗尽漏洞,可能导致 Bitcoin Core 崩溃。John Newbery 披露了第三个漏洞,该漏洞可能浪费带宽并限制用户的对等连接插槽数量。Michael Ford 报告了个内存耗尽漏洞,该漏洞会影响任何单击 BIP72 URL 的人,该漏洞可能会使节点崩溃。

随后的几个月中,又披露了更多 Bitcoin Core 漏洞:Eugene Siegel 发现了一种使用 addr 消息崩溃 Bitcoin Core 的方法;Michael Ford 在调查 Ronald Huveneers 关于 miniupnpc 库的报告时,发现了一种使用本地网络连接崩溃 Bitcoin Core 的不同方法;David Jaenson、Braydon Fuller 和多位 Bitcoin Core 开发者发现了一个漏洞,该漏洞可能被用来阻止新启动的全节点同步到最佳区块链,Niklas Gögge 通过 post-merge 修复消除了该漏洞。Niklas Gögge还发现了另一个远程崩溃漏洞,该漏洞利用了致密区块消息处理的问题;多位用户报告了 CPU 消耗过高的问题,开发者 0xB10C 和 Anthony Towns 调查了原因并实施了解决方案;包括 William Casarin 和 ghost43 在内的多位开发者报告了他们的节点问题,最终由 Suhas Daftuar 确定了一个漏洞,该漏洞可能导致 Bitcoin Core 在很长一段时间内拒绝接受一个区块;年度最后的 Bitcoin Core 漏洞报告描述了一种延迟区块时间 10 分钟或更长时间的方法。

Lloyd Fournier、Nick Farrow 和 Robin Linus 公布了“Dark Skippy”,这是一种改进的从比特币签名设备中窃取密钥的方法,他们此前已将此方法负责任地披露给大约 15 家硬件签名设备厂商。 密钥外泄 是指交易签名代码故意制作出可以泄露关于底层密钥材料(例如私钥或BIP32 HD 钱包种子)信息的签名。一旦攻击者获得用户的种子,他们可以随时窃取用户的所有资金(包括在签名泄露导致的交易中花费的资金,只要攻击者行动足够迅速)。这一发现引发了对反泄露签名协议重新讨论

新 testnet 的引入还揭示了一个新的时间扭曲漏洞。Testnet4 修复了原始时间扭曲漏洞,但开发者 Zawy 于 8 月发现了一种新漏洞,可以将难度降低约 94%。Mark “Murch” Erhardt 进一步改进了该攻击,使难度可以降至最低值。针对几种解决方案的讨论及其权衡一直持续到十二月。

Illustration of new timewarp vulnerability

十月,Antoine Poinsot 和 Niklas Gögge 披露了另一个影响 btcd 全节点的共识失败漏洞。自比特币最初版本以来,其中包含一个用于在进行哈希之前从脚本中提取签名的隐秘(但关键)功能。btcd 的实现与 Bitcoin Core 继承的原始版本略有不同,这可能允许攻击者创建交易,使一种节点接受而另一种节点拒绝,从而以多种方式导致用户资金损失。

十二月,David Harding 披露了 一个影响 Eclair、LDK 和 LND 默认设置(以及非默认设置的 Core Lightning)的漏洞。请求打开通道(opener)并负责支付关闭通道所需内生费用的参与方可以承诺在一个状态下支付通道价值的 98%,在后续状态中将承诺减少到最低金额,将 99% 的通道价值转移给另一方,然后在 98% 费用状态下关闭通道。这将导致 opener 因使用旧状态损失 1% 的通道价值,而另一方损失 98% 的通道价值。如果 opener 自行挖出该交易,他们可以使得98% 通道价值作为费用支付。该方法可以每个区块内窃取大约 3,000 个通道。

年度最后披露涉及 Wasabi 和相关软件的去匿名化漏洞,该漏洞允许类似 Wasabi 和 GingerWallet 的coinjoin协调器为用户提供原本应该匿名的凭证,但这些凭证可以被设计为具有区别性,从而实现追踪。尽管一种生成区别性凭证的方法已被消除,但 Yuval Kogman 在 2021 年发现的一个更普遍的问题,即允许协调器生成不同的证书,截至撰写本文时仍未解决。

三月

  • BINANAs and BIPs: 由于 BIPs(比特币改进提案)合并过程中的持续问题,2024 年 1 月创建了一个新的 BINANA 库,用于规范和其他文档的管理。二月和三月,现有的 BIPs 编辑请求帮助,并开始了新增编辑的流程。经过广泛的公开讨论,最终在四月,几位比特币贡献者被推举为 BIP 编辑
  • 改进费率估算: Abubakar Sadiq Ismail 提议通过使用实时交易池数据来改进 Bitcoin Core 的费率估算。目前,估算主要依赖于已确认交易数据,这种方法更新缓慢但具有抗操纵性。Ismail 开发了初步代码,将当前方法与新的基于交易池的算法进行比较。讨论中重点关注了交易池数据是应该同时上调和下调估算,还是仅用于降低估算值。双向调整可以提升实用性,但限制为仅下调估算可能更有效地防止操纵。
  • 更高效的交易资助: Martin Habovštiak 提议使用 taproot annexa 字段来提高无关交易的优先级,与早期的费用资助方法相比,显著减少了空间需求。David Harding 提出了一个更高效的方法,利用签名承诺消息,这种方法无需占用链上空间,但依赖于区块排序。对于重叠的资助交易,Harding 和 Anthony Towns 提出了可将空间需求降至 0.5 vbytes 的替代方案。Towns 指出,这些资助方法与提议的族群交易池(cluster mempool)设计兼容,尽管最有效的版本对交易有效性缓存提出了轻微挑战,因为这使得节点更难预先计算并存储有效性信息。这种资助方法以极低成本实现动态费用提升,对需要外生费用的协议具有吸引力,但无信任外包问题仍然存在。Suhas Daftuar 警告说,资助可能会给非参与用户带来问题,建议若采用该方法,应将其设计为可选功能以避免意外影响。

四月

Antoine Poinsot 回顾了 Matt Corallo 在 2019 年提出的 “共识漏洞清理” 提议;该提议尝试解决最慢区块验证、允许盗窃的时间扭曲攻击,以及影响轻客户端和全节点的虚假交易漏洞。Poinsot 也着重指出将在区块高度 198 3702 处影响全节点的交易 ID 重合问题。所有问题都有软分叉解决方案,虽然对最慢区块验证的一项提议修复面临可能会让一些罕见的预签名交易作废的担忧。被提议的其中一项更新在八月和九月获得了重要的讨论,目的是寻找影响轻客户端甚至(有些时候的)全节点的默克尔树漏洞的替代性解决方案。虽然 Bitcoin Core 曾经尽可能缓解了漏洞,一次之前的代码重构放弃了必要的保护,所以 Niklas Gögge 为 Bitcoin Core 编写了尽早检测所有可发现的漏洞并拒绝无效区块的代码。在十二月,讨论转向使用共识漏洞清理软分叉来修复时间扭曲漏洞的 Zawy-Murch 变体,该变体是在最初为共识清理提议设计的规则在 testnet4 上实现之后发现的。

在关于添加新的 BIP 编辑的讨论过程中反映出了人们革新 BIP2 的愿望,该 BIP 指明了现在添加新的 BIP 以及更新现有 BIP 的的流程。讨论持续了几个月;在九月,一份关于更新后的流程的BIP 草案出现了。

LND 引入了对入账路由费的支持,该特性是由 Joost Jager 领头支持的,它让节点可以向从对等节点的某一条通道中收到的支付收取手续费。这可以帮助节点管理流动性,比如向管理不善的节点的入账支付收取更高的手续费。入账路由费是后向兼容的,最初会设置成负值(例如,折扣),从而与更老的节点一起工作。虽然这项提议已经提出很多年了,其它闪电实现出于设计上的顾虑和兼容性问题而抵制这一特性。可以看出,该特性在 LND 中的开发贯穿了一整年。

Greg Sanders 提出使用 “准区块(weak block)” —— 包含的都是有效交易但不具备足够工作量证明的区块 —— 来提高多种交易转发策略和挖矿策略中的致密区块中继的效率。矿工天然会生成与他们的 PoW 占比成比例的准区块,这些准区块会反映处他们尝试确认的交易。准区块可以抵御滥用,因为它的生产成本也是很高的,从而交易池和缓存都可以更新,无需浪费大量额外的带宽。这可以保证致密区块中继保持高效,甚至在矿工在区块中包含了非标准交易也是如此。准区块也可以解决 “交易钉死攻击” 并改善手续费估计。Sander 的概念验证实现演示了这个想法。

Jameson Lopp 在四月开启了一项关于当时的比特币公开测试网(testnet3)上的问题,并建议重启它,而且可以使用另一组专用的共识规则。五月,Fabian Jahr 宣布了一个 BIP 草案,并提议了 testnet4 的实现。这个 BIP 和 Bitcoin Core 的实现在八月合并。

四月在一个不幸的消息中结束:致力于隐私软件的两位开发者被逮捕。同时,还有至少两家其他公司宣布,因为法律风险,他们希望停止服务美国客户。

2024 总结:族群交易池

在 2024 年一整年,一项来自 2023 年的重新设计交易池的想法变成了多位 Bitcoin Core 开发者的重点关注。“族群交易池(cluster mempool)” 让交易对一个矿工将要创建的所有区块的影响变得更加容易分析,只要这个矿工的交易池跟本地节点的交易池一摸一样。这可以让交易驱逐变得更加理性,并且可以帮助确定一笔(或者一组)替代交易是否比它要替代的交易更优。当前交易池的多种局限性,对许多影响合约式协议(比如闪电通道)的问题(有时会置资金于风险中)有负面影响,族群交易池可以解决这些局限性。

此外,如我们在一月 Abubakar Sadiq Ismail 的帖子中看到的,从族群交易池的设计中产生的工具和洞见,也许可以改善 Bitcoin Core 的交易手续费估计。今天,Bitcoin Core 将祖先费率挖矿实现为一种支持 CPFP 手续费追加 的激励兼容方式,但手续费估计是在单体交易的基础上操作的,所以 CPFP 手续费追加不会被考虑在内。族群交易池将交易群组切分为 “分家(chunk)”,并且可以在交易池中同时跟踪这些分家,还可以在被挖掘的区块中定位他们,从而允许优化手续费估计(尤其是,如果 CPFP 相关的技术比如 “交易包转发”、“(P2A)” 以及外生的手续费支付获得更多采用的话)。

随着族群交易池项目的成熟,架构师们撰写了多份解释和概述。Suhas Daftuar 在一月给出了一份概述,揭示了该提议所面临的挑战之一:它与现有的 “CPFP carve-out” 规则不兼容。这个三难问题的一种解决方案是,让现有的的 carve-out 的用户选择性使用 “确认前拓扑受限的交易(TRUC transactions)”,它提供了一组更优的特性。Pieter Wuille 在七月提供了另一份详细描述。该文介绍了基本的原理、提议的算法,并链接了多项 PR。这些 PR中的几项以及其它相关 PR 已经先后合并。

Daftuar 参与到了族群交易池和相关提议(比如 TRUC 交易)的研究和后续思考中。在二月,他评估了多种想法(比如 “手续费率替换”)的激励兼容性,并区分了不同算力占比的矿工的不同激励,并寻找了不能抵制 DoS 但激励兼容的行为。在四月,他研究了如果族群交易池能够早一年部署,会有什么样的影响;他发现,这会允许稍微多一些交易进入交易池,但不会显著影响观察盗的数据中的交易替换,也可能帮助矿工在短期内捕获更多手续费。基于最后一点,Pieter Wuille 在八月为构建区块的矿工介绍了原理以及一种高效的接近最优的交易选择算法。

五月

让 “静默支付(silent payments,SP)”能够被广泛采用的工作在今年持续。Josie Baker 开始讨论为 SP 设计一些用在 “待签名的比特币交易(PSBT)” 数据格式中的插件,根据的是 Andrew Toth 的一份规范草案。讨论持续到六月,还评估了使用 ECDH 碎片运行免信任协作的想法。此外,Setor Blagogee 为一个旨在帮助轻客户端接收静默支付的协议提出了规范草案。基本的 SP 规范在六月经历了少量调整,并且出现了两种提议 PSBT 特性的 BIP草案。

Sergio Demian Lerner 和多位联合作者发表了一篇论文,部分基于 BitVM 背后的观念设计了一种新的虚拟 CPU 架构。这个项目名叫 “BitVMX”,其目标是,让任何能够编程到在已有的 CPU 架构(比如 RISC-V)上的程序的合理执行,都能够得到高效证明。就像 BitVM,BitVMX 并不要求任何共识变更,但它需要一个或多个被指定的参与者作为受信任的验证者。这意味着,多位交互式参与一个合约式协议的用户,可以防止任何一个(和多个)参与者从合约中取出资金,除非该参与者能够成功执行一个由该合约指定的任意程序。

Adam Gibson 介绍了他开发出来的一种匿名使用的 token,允许可以通过密钥路径花费一个 UTXO 的人证明自己可以花费它,且无需揭晓这个 UTXO 是哪一个。他着重指出的一个用法是让闪电通道可以公开,但无需所有者们指明通道背后的具体 UTXO(在当前,这是必需的,为了防止浪费带宽的 DoS 攻击)。Gibson 也创建了一个用作概念验证的论坛,要求提供一个匿名证据来登录 —— 这就创造了一种环境,可以认定每个人都是比特币的持有者,但又无需他们提供关于自己和他们的比特币的任何信息。晚些时候,Hohan Halseth 发布了一个概念验证实现,使用另一种机制实现了绝大部分相同的目标。

几年来,闪电网络的开发者一直在讨论修改闪电网络协议,以允许现有的通道在多个方面升级。在五月,Carla Kirk-Cohen 测试了部分场景,并比较了三种支持升级的提议。最终,一种休眠(quiescence)协议在六月被添加到闪电网络规范中,以帮助升级以及其它敏感的操作。在十月,我们看到一项提议中的、更新通道公告消息的协议的重新开发,它将支持新的基于 taproot 的注资交易

Ethan Tueele 在 Delving Bitcoin 论坛中发帖建议矿池可以使用跟矿工的贡献数量成比例的ecash token 来奖励矿工。这样,矿工就可以立即卖出或者转移这些 token,或者,他们可以等矿池挖出一个区块,这时候矿池就会用聪来交换撰写 token。不过,Matt Corallo 提出了一种顾虑:大型矿池还没有实现标准化的支付手段,能让矿工在一个较短的时间间隔内计算出自己可以收到多少钱。这就意味着,如果矿工的主要矿池开始欺诈,他们无法迅速切换到另一个矿池,无论矿池是用 ecash 还是其它手段来支付。

Ava Chow 在五月为 miniscript 提出了一份 BIP。该 BIP 在七月被命名为BIP379

同样在五月,出现 utreexod 的一个 beta 版本;该版本允许用户试用这种最小化硬盘空间要求的全节点设计。

六月

René Pickhardt 研究了闪电网络可行性概率的估计,办法是分析通道容量内可能的财富分布。比如说,如果 Alice 想要通过 Bob 发 1 BTC 给 Carol,成功率取决于 Alice-Bob 和 Bob-Carol 的通道能否支持这样的资金转移。这一指标突出了实际中的支付能力约束,并且可以帮助钱包软件和商用软件作出更聪明的路由选择、提高闪电支付的成功率。在今年的晚些时候,Pickhardt 的研究为通道耗竭 —— 一条通道变得无法转发特定方向的支付 —— 的原因和概率提供了洞见。该研究也指出 k>2 的多方通道管理协议(比如通道工厂)可以大大提高可行支付的数量、减少通道耗竭的概率。

Example of channel depletion

开发者 Hunter Beast 发布了一份 “粗糙的草稿” BIP, 将版本 3 的隔离见证地址分配给了一种抗量子计算的签名算法。这份 BIP 草案链接了多种备选的算法,以及它们的问题和它们的预计链上体积。算法的选择和具体实现细节留待后续讨论。

2024 总结:P2P 交易转发

手续费管理一直是去中心化的比特币协议中的一个挑战,但 LN-Penalty 这样的合约式协议的广泛使用、以及对更新更复杂的协议的持续研究,让交易的手续费管理变得前所未有地重要,因为要保证用户支付手续费并按需要追加手续费。Bitcoin Core 的贡献者们几年来一直在克服这个问题,而在 2024 年,我们看到了多项能够显著改善问题的新特性的公开发行。

一月从一项关于 TRUC 提议在最差条件下克服交易钉死攻击的成本的讨论开始;相比之前部署的 CPFP carve-out 规则,TRUC 提供了一种更健壮的替代方案。虽然 TRUC 在最差条件下的抗攻击成本低得多,开发者们还是考虑了调整少量参数是否能进一步降低成本。在一月发生的另一项讨论则分析了一种理论上的风险:“外生的手续费支付” 日益获得更多采用,将让用户直接给矿工暗箱支付在链上操作上更高效(因此也更便宜),从而陷挖矿去中心化于风险之中。Peter Todd 建议使用一种替代性的手续费管理手段来解决这个问题:通过预签名每一笔结算交易在不同费率下的多个版本,保证手续费是完全内生于交易的。然而,人们指出这种办法有多个问题。

一月份还发生了另一项讨论:Gregory Sanders 研究了在闪电网络协议中将被修剪得 HTLC中的价值放到 P2A 输出有无风险;这可能会给在挖掘交易池交易的必要软件之外还运行了专用软件的矿工带来 “矿工可抽取价值(MEV)”。Bastien Teinturier 开始讨论闪电网络协议处理使用 TRUC 和 P2A 输出的承诺交易所需的必要变更;这包括 Sanders 所考虑的修建 HTLC 提议、消除不再必要的 1 区块时延,以及减少链上交易体积。这一讨论也引出了一种 “渗透式 TRUC” 提议:自动对看起来像是闪电网络现有 CPFP carve-out 用法的交易应用 TRUC 规则,从而提供 TRUC 的好处、无需闪电网络软件升级。

在一月结束的时候,Golria Zhao 为 “亲属间手续费替代” 提出了一份提议。常规的RBF规则只应用在相互冲突的交易上、在一个节点决定要接受一笔交易某个版本的时候,因为最终只有一个版本能进入有效的区块链。然而,在 TRUC 中,一个节点只会接受一笔未确认的版本 3 父交易的一个子交易,非常类似于处理冲突交易的情形。允许一笔子交易替代同一父交易的另一笔子交易 —— 即,亲属驱逐 —— 将改善 TRUC 交易的手续费支付,尤其在渗透式 TRUC 被采用的情况下,非常有好处。

二月份的起始是关于将闪电网络协议从 CPFP carve-out 迁移到 TRUC 的后果的额外讨论。Matt Corallo 发现了现有的零确认的通道开启操作在使用 TRUC 时会面临的挑战:注资交易和一笔紧随其后的关闭交易可能都是未确认的, 这就阻止了包含 CPFP 手续费追加的第三笔交易被使用,因为 TURC 限制智能使用两笔未确认的交易。Teinturier 指出,在形成一条 “通道拼接” 的链条时,也有类似的问题。这项讨论一直没有得到一个清晰的结论,但一个迂回的解决方案 —— 保证每一笔交易都包含一个自身的锚点输出、用于 CPFP 手续费追加(就像在使用 TRUC 之前要求的那样)—— 似乎已经能够解决问题,同时,每个人都希望族群交易池可以在未来放宽 TRUC 的一些要求,并允许更加灵活的 CPFP 手续费支付。

关于由族群交易池进步可以带来的 TRUC 规则变更的话题,Gregory Sanders 介绍了关于未来的规则变更的多种想法。相对应的是,Suhas Daftuar 分析了他的节点在过去一年中收到的所有交易,以检验渗透式 TURC 规则会如何影响这些交易的接纳。大部分在 CPFP carve-out 规则下被交易池接纳的交易,在一种渗透式 TRUC 规则下也会被接纳,但也有少数例外,可能要求软件在采用渗透式规则之前改变。

经历了年初的讨论丰收之后,五月和六月出现了一系列的 PR 合并,为 Bitcoin Core 带来了对新的交易转发特性的支持。一种受限形式的 “一父一子(1p1c)”交易包转发规则 —— 不要求对 P2P 协议的任何变更 —— 被添加到了 Bitcoin Core 中。一项后续的合并通过加强 Bitcoin Core 对故而交易的处理,提高了 1p1c 交易包转发的可靠性。TRUC 规范作为 BIP431合并到了 BIP 仓库。TRUC 交易也因为另一次合并而变成默认可转发的。对 1p1c 族群(包括 TRUC 交易包)的 RBF 的支持也加入了

两位长期的开发者在七月提出了对 TRUC 的延伸批评,虽然其他开发者回应了他们的顾虑。这两位开发者在八月又提出了进一步批评

Bitcoin Core 的开发者们继续开发交易转发的优化、在八月合并对 “支付到锚点(P2A)” 标准化输出的支持,并在十月发布 Bitcoin Core 28.0;该版本支持 1p1c 交易包转发、TRUC 交易转发、交易包 PBF 以及亲属替代,还有一种标准化的 P2A 输出脚本类型。作为所有这些特性的开发贡献者,Gregory Sanders 建议 了钱包软件和其他软件的开发者如何使用 Bitcoin Core 来创建和广播可以利用这些新功能的交易。

晚些时候,对使用 P2A 的%#192%#输出的支持也在一次合并中变得标准化。这让一笔支付零手续费的交易也可以靠一笔子交易来支付所有相关的手续费 —— 这是一种完全外生的手续费来源

Optech 在今年的最后一期常规周报总结了一次 Bitcoin Core PR 审核俱乐部的会议,人们在会上讨论了对 1p1c 交易包转发的进一步优化。

七月

Elle Mouton 提出了一项 BLIP,向 BOLT11 发票添加一个盲化路径字段,从而允许支付的接收者隐藏自己的身份和通道对手。比如说,Bob 可以添加一条盲化路径到他的发票中,然后 Alice 能够私密地给他支付,如果她的软件支持的话,不然,她会收到一条报错。Mouton 认为这是一种在 offer(原生支持盲化路径)得到广泛采用之前的过渡解决方案。这份提议在八月变成了 BLIP39

Tim Ruffing 和 Jonas Nick 提出了 ChillDKH,这是一个 BIP 草案和参考实现,用于为兼容比特币 Schnorr 签名FROST 类型的无脚本门限签名方案安全地生成密钥。ChillDKG 结合了为 FROST 设计的一种著名的密钥生成算法以及前沿的密码学原语,以在参与者之间安全地分享随机密钥元素,同时保证完整性和抗审查性。它使用基于椭圆曲线的 Diffie Hellman 密钥交换(ECDH)来加密和运行带有身份验证的广播,以验证签过名的会话记录。参与者们在接受最终的公钥前要确认会话的完整性。这一协议简化了密钥管理,仅要求用户备份自己的秘密种子以及一些不敏感的复原数据。使用种子来加密复原数据的方案旨在加强隐私性并进一步简化用户的备份手续。

在七月,多项帮助不同软件交互以创建 MuSig2 签名的 BIP 合并。同一个月的晚些时候,Sivaram Dhakshinamoorthy 宣布 了用于为比特币的 Schnorr 签名 创建无脚本门限签名的 BIP 提议。这让一组已经执行过一次初始化流程(例如使用 ChillDKG)的签名者可以安全地创建签名,只要求这些签名者的一个动态的子集的交互。这个签名在链上跟 单签名用户/无脚本多签名用户 所创建的 Schnorr 签名是无法区分的,可以提高隐私性和货币同质性。

八月

Sergi Delgado 发布 了 Hyperion,这是一个网络模拟器,用于追踪数据在模拟的比特币网络中的传播情况。这项工作最初的动机是为了比较比特币当前的交易公告传播方法与提议的 Erlay 方法。

开发者 0xB10C 研究 了最近 致密区块 重建的可靠性。有时新区块会包含节点之前未见过的交易。在这种情况下,接收致密区块的节点通常需要向发送节点请求这些交易,并等待对方响应。这会减慢区块传播速度。该研究帮助推动了考虑在 Bitcoin Core 中默认启用 mempoolfullrbf 的拉取请求,该请求后来被合并

2024 总结:限制条款和脚本升级

2024 年,一些开发者投入了大量时间推进限制条款、脚本升级以及其他支持高级合约协议(如 joinpools通道工厂)的提案。

2023 年 12 月底,Johan Torås Halseth 宣布了一个概念验证程序,该程序可以使用来自 MATT 软分叉提案的 OP_CHECKCONTRACTVERIFY 操作码,允许合约协议中的一方在任意程序成功执行时认领资金。这在概念上类似于 BitVM,但由于使用了专门为程序执行验证设计的操作码,其比特币实现更为简单。Elftrace 可以处理使用 Linux ELF 格式为 RISC-V 架构编译的程序;几乎任何程序员都可以轻松地为该目标创建程序,这使得使用 elftrace 变得非常容易。8 月份,Halseth 提供了一个更新。Elftrace 与 OP_CAT 操作码结合,可以验证零知识证明。

1 月份,LNHANCE 组合软分叉提案公布。该提案包括此前提出的 OP_CHECKTEMPLATEVERIFY(CTV)和 OP_CHECKSIGFROMSTACK(CSFS),以及一个新提案的 OP_INTERNALKEY,用于将 taproot 内部密钥放在堆栈上。今年晚些时候,该提案更新还包括了一个 OP_PAIRCOMMIT 操作码,该操作码提供了类似于 OP_CAT 的功能,但在其组合性上有刻意的限制。该提案旨在允许部署 LN-SymmetryArk 风格的 joinpools、减少签名的 DLC保险库,以及底层提案的其他描述的好处,如 CTV 风格的拥塞控制和 CSFS 风格的签名委托。

Chris Stewart 发布了一份 BIP 草案,用于在未来的软分叉中启用比特币脚本中的 64 位算术运算。比特币目前只允许 32 位运算(使用有符号整数,所以超过约 20 亿的数字无法使用)。对 64 位值的支持在任何需要操作输出中支付的聪数的构造中都特别有用,因为这是使用 64 位整数指定的。该提案在二月六月都有进一步讨论。

同样在 2 月,开发者 Rijndael 创建了一个概念验证程序,实现一个只需要在当前共识规则上增加提议的 OP_CAT 操作码的保险库。Optech 将 OP_CAT 保险库、当前使用预签名交易就可实现的保险库与添加 BIP345 OP_VAULT 到比特币后可实现的保险库进行了比较。

预签 BIP345 OP_VAULT 使用 schnorr 的 OP_CAT
可用性 当前 需要 OP_VAULTOP_CTV 的软分叉 需要 OP_CAT 的软分叉
最后时刻地址替换攻击 易受攻击 不受影响 不受影响
部分金额提现 仅在预先有设置的情况下允许 允许 不允许
静态且非交互地计算存款地址 不允许 允许 允许
批量的重新保管/隔离以节省费用 不允许 允许 不允许
最优情况下的操作效率,即仅有合法花费
(仅由 Optech 非常粗略地估计)
常规单签名大小的 2 倍 常规单签名大小的 3 倍 常规单签名大小的 4 倍

三月,开发者 ZmnSCPxj 描述了一个协议,该协议将 UTXO 的控制权交给能正确预测特定软分叉是否会激活的一方。虽然其他人之前也提出过这个基本想法,但 ZmnSCPxj 的版本有至少一个潜在的未来软分叉 OP_CHECKTEMPLATEVERIFY 的具体细节。

三月还见证了 Anthony Towns 开始基于 Lisp 语言为比特币开发一种替代性脚本语言。他提供了一个 Chia 山寨币已在使用的 Lisp 风格语言的概述,并提出了一个 BTC Lisp 语言。在今年晚些时候,受比特币脚本和 miniscript 之间关系的启发,他将他的 Lisp 项目分成两部分:一个可以通过软分叉添加到比特币中的低级比特币 lisp 语言(bll)和一个可以转换为 bll 的符号化 bll(symbll)高级语言。他还描述了一个与 symbll(可能还有 Simplicity)兼容的通用结构,该结构允许将 UTXO 划分为特定金额和支出条件。他展示了这些 灵活币标记 的使用方式,包括改进闪电网络通道的安全性和可用性(包括基于 LN-Symmetry 的通道)、BIP345 版本保险库的替代方案,以及支付池设计。

五月,Jeremy Rubin 对 OP_CHECKTEMPLATEVERIFY 设计提出了两个更新:可选的支持更短的哈希摘要,以及支持额外的承诺。这些更新有助于优化 CTV 在数据发布方案中的使用,这些方案可能对恢复 LN-Symmetry 和类似协议中的关键数据有用。

Pierre Rochard 询问,对于那些能以相似成本提供许多相同功能的软分叉提案,是否应该将它们视为互斥的,还是激活多个提案更合理,因为可以让开发者使用任何他们所偏好的方案。

Jeremy Rubin 发表了一篇论文,论述了如何在理论上使用函数加密来为比特币添加完整的限制条款功能,而无需任何共识变更。从本质上说,函数加密允许创建一个对应于特定程序的公钥。任何能满足该程序的一方都能创建与该公钥对应的签名(无需知道相应的私钥)。与之前提出的一些限制条款相比,这种方式总是更私密的,而且通常能节省空间。不幸的是,根据 Rubin 的说法,函数加密的一个主要缺点是“加密技术尚未成熟,目前无法实际使用”。

Anthony Towns 发布了一个用于 signet脚本,该脚本使用 OP_CAT 允许任何人通过工作量证明(PoW)来花费发送到该脚本的币。这可以用作去中心化的 signet 比特币水龙头:当矿工或用户获得过多的 signet 比特币时,他们可以将其发送到该脚本。当用户需要更多 signet 比特币时,他们可以在 UTXO 集中搜索支付给该脚本的交易,生成工作量证明,并使用他们的工作量证明创建一笔交易来获取这些币。

Victor Kolobov 宣布设立了一个 100 万美元的基金,用于研究提议的添加 OP_CAT 操作码的软分叉。提交截止日期为 2025 年 1 月 1 日。

11 月,Towns 总结了与通过 Bitcoin Inquisition 提供的提议软分叉相关的默认 signet 活动。Vojtěch Strnad 受 Towns 的帖子启发,创建了一个网站,列出了“在比特币 signet 上使用已部署软分叉的所有交易”。

Ethan Heilman 发布了一篇与 Victor Kolobov、Avihu Levy 和 Andrew Poelstra 合著的论文,论述了如何在不改变共识的情况下轻松创建限制条款,尽管从这些限制条款中花费需要非标准交易和价值数百万(或数十亿)美元的专用硬件和电力。Heilman 指出,该工作的一个应用是允许用户今天轻松包含一个备用的 taproot 花费路径,如果突然需要量子抗性并且比特币上的椭圆曲线签名操作被禁用,就可以安全地使用该路径。这项工作似乎部分受到了几位作者之前关于比特币 lamport 签名研究的启发。

12 月以一项对精选了若干项限制条款提案的开发者意见调查结束。

从 2025 年 1 月开始,Optech 将在每月第一期周报中的特别专栏中开始总结与限制条款、脚本升级和相关变更有关的重要研究和发展。我们鼓励所有从事这些提案工作的人将任何有趣的内容发布到我们的常规来源中,以便我们可以对其进行报道。

九月

Carla Kirk-Cohen 描述了对 Clara Shikhelman 和 Sergei Tikhomirov 最初提出的混合通道阻塞缓解方案的测试和调整。试图去阻塞一个通道一小时大多会失败,因为攻击者要么花费会超过现有攻击所需的成本,要么无意中为攻击目标增加收入。然而,沉没攻击 通过破坏通过较短路由的支付,有效地破坏了节点的声誉。为了应对这一问题,在 HTLC 背书中添加了双向声誉机制,使提案更接近 Jim Posen 在 2018 年最初提出的想法。节点现在在决定转发支付时会评估发送方和接收方的可靠性。可靠的节点会收到背书的 HTLC,而较不可靠的发送方或接收方则面临拒绝或非背书转发。这项测试是在 HTLC 背书规范Eclair 实现之后进行的。年底前还添加了 LND 的实现

Jonas Nick、Liam Eagen 和 Robin Linus 介绍了一个新的客户端验证(CSV)协议,暗影 CSV,它能够在不透露代币详情或转账历史的情况下,实现由比特币工作量证明保护的代币转账。与现有协议不同,在现有协议中客户端必须验证大量代币历史,暗影 CSV 使用零知识证明来确保验证只需要固定的资源,同时保护隐私。此外,暗影 CSV 通过将数千个代币转账捆绑到每个比特币交易中的单个 64 字节更新中,减少了链上数据需求,提高了可扩展性。该论文探讨了通过 BitVM 实现无信任的比特币到 CSV 桥接、基于账户的结构、处理区块链重组、未确认交易以及潜在的扩展。该协议承诺在效率和隐私方面比其他代币系统有显著改进。

Andy Schroder 概述了一个启用闪电网络离线支付的流程,通过在在线时生成认证令牌,允许支付者的钱包在离线时通过其始终在线的节点或 LSP 授权支付。令牌可以通过 NFC 或其他简单协议传输给接收者,实现无需互联网的支付。开发者 ZmnSCPxj 提出了一个替代方案。而 Bastien Teinturier 则引用了他的远程节点控制方法用于类似用例,这种方法增强了智能卡等有限资源设备的离线支付解决方案。

十月

BOLT12 规范中的 offer合并。这个在 2019 年最初提出的报价功能允许两个节点使用洋葱消息在闪电网络上协商发票和支付。洋葱消息和兼容报价的支付都可以使用盲化路径来防止支付者了解接收者节点的身份。

Bitcoin Core 开发了一个新的挖矿接口,目标是为使用 Stratum v2 协议的矿工提供支持。该协议可以设置为允许每个矿工选择自己的交易。然而,Anthony Towns 在今年早些时候指出,独立的交易选择可能会提高矿池的份额验证成本。如果矿池通过限制验证来应对这个问题,那么又可能会带来一种类似于著名的扣块攻击的无效份额攻击。2011 年就已提出过一个解决扣块攻击的方案,但该方案需要一个具有挑战性的共识变更。

2024 年总结:流行的基础设施项目的主要版本

十一月

ZmnSCPxj 提出了 SuperScalar 设计,这是一个使用超时树通道工厂,使闪电网络用户能够以更低的成本开通通道并获取流动性,同时保持无需信任。该设计使用分层超时树,要求服务提供商支付将树上链的任何成本,否则将失去树中剩余的任何资金。这鼓励服务提供商激励用户合作关闭他们的通道,以避免需要上链。该设计同时使用双工微支付通道LN-Penalty 支付通道,这两种通道都不需要任何共识变更就可以实现。尽管其复杂性——结合多种通道类型和管理链下状态——该设计可以由单个供应商实现,而无需大规模的协议更改。为了支持该设计,ZmnSCPxj 后来向闪电网络规范提出了可插拔通道工厂调整

John Law 提出了一个链下支付解决方案(OPR)微支付协议,该协议要求双方参与者都向一个保证金池注入资金,这些资金可以在任何时候被任何一方有效销毁。这为双方创造了一个互相妥协的激励机制,否则就会面临保证金资金的相互确保摧毁(MAD)风险。该协议并非无需信任,但它比其他替代方案更具可扩展性,能提供快速解决方案,并且在时间锁到期前不会强制各方在链上发布数据。这使得 OPR 在通道工厂超时树或其他理想情况下保持嵌套部分在链下的嵌套结构中更加高效。

2024 年总结: Bitcoin Optech

在 Optech 的第七个年头,我们发布了 51 期每周周报,并在我们的主题索引中新增了 35 个页面。总的来说,Optech 今年发布了超过 120,000 个英文单词的比特币软件研究和开发内容,相当于一本 350 页的书。

每期周报和博客文章都被翻译成中文、捷克语、法语和日语,2024 年总共完成了超过 200 篇翻译。

此外,今年的每期通讯都配有一期播客节目,总计超过 59 小时的音频内容和 488,000 字的文字记录。比特币领域的许多顶尖贡献者都作为嘉宾参与了节目——有些人甚至多次参与——2024 年共有 75 位不同的嘉宾:

  • Abubakar Sadiq Ismail (x2)
  • Adam Gibson
  • Alex Bosworth
  • Andrew Toth (x3)
  • Andy Schroder
  • Anthony Towns (x5)
  • Antoine Poinsot (x5)
  • Antoine Riard (x2)
  • Armin Sabouri
  • Bastien Teinturier (x4)
  • Bob McElrath
  • Brandon Black (x3)
  • Bruno Garcia
  • callebtc
  • Calvin Kim
  • Chris Stewart (x3)
  • Christian Decker
  • Dave Harding (x3)
  • David Gumberg
  • /dev/fd0
  • Dusty Daemon
  • Elle Mouton (x2)
  • Eric Voskuil
  • Ethan Heilman (x2)
  • Eugene Siegel
  • Fabian Jahr (x5)
  • Filippo Merli
  • Gloria Zhao (x10)
  • Gregory Sanders (x7)
  • Hennadii Stepanov
  • Hunter Beast
  • Jameson Lopp (x2)
  • Jason Hughes
  • Jay Beddict
  • Jeffrey Czyz
  • Johan Torås Halseth
  • Jonas Nick (x2)
  • Joost Jager
  • Josie Baker
  • Kulpreet Singh
  • Lorenzo Bonazzi
  • Luke Dashjr
  • Matt Corallo (x3)
  • Moonsettler (x2)
  • Nicholas Gregory
  • Niklas Gögge (x2)
  • Oghenovo Usiwoma
  • Olaoluwa Osuntokun
  • Oliver Gugger
  • Peter Todd
  • Pierre Corbin
  • Pierre Rochard
  • Pieter Wuille
  • René Pickhardt (x2)
  • Richard Myers
  • Rijndael
  • rkrux
  • Russell O’Connor
  • Salvatore Ingala (x2)
  • Sebastian Falbesoner
  • SeedHammer Team
  • Sergi Delgado
  • Setor Blagogee
  • Shehzan Maredia
  • Sivaram Dhakshinamoorthy
  • Stéphan Vuylsteke
  • Steven Roose
  • Tadge Dryja
  • TheCharlatan
  • Tom Trevethan
  • Tony Klausing
  • Valentine Wallace
  • Virtu
  • Vojtěch Strnad (x2)
  • ZmnSCPxj (x3)

Optech 很幸运且感激地收到了来自人权基金会的 20,000 美元捐赠。这笔资金将用于支付网站托管、电子邮件服务、播客转录以及其他费用,使我们能够继续并改进向比特币社区提供技术内容的工作。

十二月

十二月延续了此前的几个讨论,并宣布了多个漏洞。所有这些内容在本期通讯的前文已有总结。

我们感谢上述提到的所有比特币贡献者们,以及其他有着同样重要工作的贡献者们。他们为比特币开发带来了又一个令人难以置信的年份。Optech 周报将于 1 月 3 日恢复其常规的周五发布时间表。