Bitcoin Magazine 核心议题:集群内存池,分块处理更容易 来自核心议题:深入探讨集群内存池,一种重新架构节点的方式Bitcoin Magazine 核心议题:集群内存池,分块处理更容易 来自核心议题:深入探讨集群内存池,一种重新架构节点的方式

核心问题:集群内存池,问题分块更容易解决

2026/02/21 03:38
阅读时长 14 分钟

Bitcoin Magazine

核心议题:集群内存池,问题分块更易解决

集群内存池1是对内存池如何处理交易组织和排序的完整重构,由Suhas Daftuar和Pieter Wuille构思和实现。该设计旨在简化整体架构,更好地将交易排序逻辑与矿工激励对齐,并提高第二层协议的安全性。它于2025年11月25日通过PR #336292合并到Bitcoin Core中。 

内存池是您的节点必须追踪的一组巨大待处理交易,原因有很多:费用估算、交易替换验证,以及如果您是矿工的话,区块构建。 

这对于节点的单一功能来说是很多不同的目标。Bitcoin Core直到30.0版本都以两种不同方式组织内存池来帮助实现这些功能,两者都从任何给定交易的相对角度出发:向前查看交易及其子交易的综合费率(后代费率),以及向后查看交易及其父交易的综合费率(祖先费率)。 

这些用于决定当内存池满时从中驱逐哪些交易,以及在构建新区块模板时首先包含哪些交易。 

我的内存池是如何管理的?

当矿工决定是否在其区块中包含一笔交易时,他们的节点会查看该交易,以及任何必须首先确认才能使其在区块中有效的祖先交易,并查看所有这些交易的平均每字节费率,将它们支付的单个费用作为整体考虑。如果该组交易在费用上超过其他交易的同时符合区块大小限制,它就会被包含在下一个区块中。这对每笔交易都是如此。

当您的节点在内存池满时决定驱逐哪些交易时,它会查看每笔交易及其任何子交易,如果内存池已经充满了支付更高费率的交易(及其后代),就会驱逐该交易及其所有子交易。 

查看上面的交易示例图,费率在括号中显示(祖先费率,后代费率)。矿工查看交易E时可能会将其包含在下一个区块中,这是一笔支付非常高费用的小交易,只有一个小祖先。然而,如果节点的内存池正在填满,它会查看交易A及其两个支付相对低费用的巨大子交易,并可能驱逐它,或者如果刚收到就不接受和保留它。 

这两种排名或排序完全相互矛盾。内存池应该可靠地传播矿工将要挖掘的内容,用户应该确信他们的本地内存池准确预测矿工将要挖掘的内容。 

内存池以这种方式运作对以下方面很重要:

  • 挖矿去中心化:让所有矿工获得最有利可图的交易集
  • 用户可靠性:准确可靠的费用估算和交易确认时间
  • 第二层安全性:可靠准确地执行第二层协议的链上执行交易

内存池的当前行为并未完全与挖矿激励的现实对齐,这造成了盲点,通过创建交易是否会到达矿工的不确定性,对第二层安全性造成问题,同时也给矿工的非公开广播渠道带来压力,可能会加剧第一个问题。 

在替换未确认交易时,这尤其成问题,无论是简单地激励矿工更快地包含替换交易,还是作为链上执行的第二层协议的一部分。 

根据现有行为的替换变得不可预测,取决于您的交易所陷入的交易网络的形状和大小。在简单的费用提升情况下,即使挖掘替换交易对矿工更有利,这也可能无法传播和替换交易。 

在第二层协议的背景下,当前逻辑允许参与者可能使必要的祖先交易从内存池中被驱逐,或者由于恶意参与者创建的子交易或必要祖先交易的驱逐,使另一个参与者无法根据当前规则向内存池提交必要的子交易。 

所有这些问题都是这些不一致的包含和驱逐排名及其造成的激励错位的结果。拥有单一的全局排名将解决这些问题,但为每笔新交易在全局范围内重新排序整个内存池是不切实际的。 

这全都只是一个图

相互依赖的交易是一个图,或一系列有向"路径"。当一笔交易花费过去另一笔交易创建的输出时,它与那笔过去的交易相关联。当它还花费第二笔过去交易创建的输出时,它将两笔历史交易联系在一起。 

当未确认时,像这样的交易链必须先确认早期交易,后期交易才有效。毕竟,您不能花费尚未创建的输出。 

这是理解内存池的重要概念,它明确按方向排序。 

这全都只是一个图。 

块组成集群,集群组成内存池

在集群内存池中,集群的概念是一组彼此直接相关的未确认交易,即花费集群中其他交易创建的输出,反之亦然。这成为新内存池架构的基本单元。分析和排序整个内存池是一项不切实际的任务,但分析和排序集群是一项更易管理的任务。 

每个集群被分解为,即来自集群的小交易集,然后按每字节最高费率到最低费率的顺序排序,遵守方向依赖关系。例如,假设从最高到最低费率,集群(A)中的块是:[A,D]、[B,E]、[C,F]、[G,J],最后是[I,H]。 

这允许预先排序所有这些块和集群,并在此过程中更高效地排序整个内存池。 

矿工现在可以简单地从每个集群中抓取最高费率的块并将它们放入模板中,如果还有空间,他们可以转到下一个最高费率的块,继续直到区块大致满载,只需要弄清楚它可以容纳的最后几笔交易。假设可以访问所有可用交易,这大致是最优的区块模板构建方法。 

当节点的内存池满时,他们可以简单地从每个集群中抓取最低费率的块,并开始从内存池中驱逐这些块,直到不超过配置的限制。如果这还不够,它会转到下一个最低费率的块,依此类推,直到在其内存池限制范围内。以这种方式完成可以消除与挖矿激励不一致的奇怪边缘情况。 

替换逻辑也大大简化了。将集群(A)与集群(B)进行比较,其中交易K已替换G、I、J和H。需要满足的唯一标准是新块[K]必须具有比[G,J]和[I,H]更高的块费率,[K]必须支付比[G,J,I,H]更多的总费用,并且K不能超过它正在替换的交易数量的上限。 

在集群范式中,所有这些不同的用途彼此对齐。 

新内存池

这种新架构允许我们简化交易组限制,消除了对内存池中交易可以拥有多少未确认祖先的先前限制,并用每个集群64笔交易和101 kvB的全局集群限制取而代之。 

这个限制是必要的,以保持预排序集群及其块的计算成本足够低,以便节点能够持续实际执行。 

这是集群内存池的真正关键见解。通过保持块和集群相对较小,您可以同时使最优区块模板的构建变得便宜,简化交易替换逻辑(费用提升),从而提高第二层安全性,并一次性修复驱逐逻辑。 

不再需要昂贵且缓慢的模板构建即时计算,或费用提升中的不可预测行为。通过修复内存池在不同情况下管理交易组织方式的激励错位,内存池对每个人来说都能更好地运作。 

集群内存池是一个经过多年制作的项目,将对确保所有矿工都能获得有利可图的区块模板、第二层协议拥有可靠和可预测的内存池行为以及Bitcoin能够继续作为去中心化货币系统运作产生实质性影响。 

对于有兴趣深入了解集群内存池如何实现和在底层工作的人,这里有两个Delving Bitcoin讨论串可以阅读:

高级实现概述(附设计理由):https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393 

集群内存池费率图的工作原理:https://delvingbitcoin.org/t/mempool-incentive-compatibility/553 

立即获取您的核心议题副本!

不要错过拥有核心议题的机会 — 其中收录了许多核心开发者亲自撰写的文章,解释他们所从事的项目!

这篇文章是Bitcoin Magazine最新印刷版《核心议题》中主编来信的内容。我们在此分享作为对整个刊物中探讨的想法的抢先预览。

[1] https://github.com/bitcoin/bitcoin/issues/27677 

[2] https://github.com/bitcoin/bitcoin/pull/33629 

这篇文章《核心议题:集群内存池,问题分块更易解决》首次出现在Bitcoin Magazine上,作者是Shinobi。

市场机遇
NODE 图标
NODE实时价格 (NODE)
$0,01525
$0,01525$0,01525
-%0,39
USD
NODE (NODE) 实时价格图表
免责声明: 本网站转载的文章均来源于公开平台,仅供参考。这些文章不代表 MEXC 的观点或意见。所有版权归原作者所有。如果您认为任何转载文章侵犯了第三方权利,请联系 [email protected] 以便将其删除。MEXC 不对转载文章的及时性、准确性或完整性作出任何陈述或保证,并且不对基于此类内容所采取的任何行动或决定承担责任。转载材料仅供参考,不构成任何商业、金融、法律和/或税务决策的建议、认可或依据。