695 / 736CLUSTER

Cluster Mempool

按依赖关系分组的内存池

Cluster Mempool 是 Bitcoin Core 31.0 起采用的数据模型:它把相互依赖的未确认交易归入集群,并按有效费率排列各个 chunk。

Cluster Mempool 将内存池划分为由父交易和子交易组成的连通分量,为每个分量构建拓扑有效的线性顺序,并将其一致用于挖矿、淘汰、relay 与替换规则。

集群是未确认交易图中的一个连通分量,交易通过父子关系相连。彼此独立的集群可以分开评估,因此一个集群发生变化时,无需重新计算内存池的其余部分。 [2]

节点为每个集群构建拓扑有效的线性顺序,并将其划分为若干 chunk,费率从最有利者开始递减。构建区块时从前端选取最佳 chunk,淘汰时则从末端移除最不利者。 [2]

旧有的祖先与后代限制,以及挖矿和淘汰所用的不同近似方法,并不总能反映复杂交易包的真实价值。限制集群规模后,节点可在可预期的工作上限内寻找更好的顺序。 [5]

这属于节点本地的内存池和挖矿策略,并非新的共识规则。节点可能收到不同交易、运行不同版本或配置,并拥有不同的内存池;一笔交易在区块中确认后的共识有效性不受影响。 [2]

Bitcoin Core 31.0 以 Cluster Mempool 取代了旧的内存池实现。该版本还加入 getmempoolcluster 与 getmempoolfeeratediagram RPC,可用于查看集群、其线性顺序和费率图。 [1]

默认策略把一个集群限制为 64 笔交易和 101 kB 虚拟大小。节点参数可以更改这些限制,但你的节点接受或 relay 某笔交易,并不保证邻居节点和矿工采用相同策略。 [1]

该模型统一了挖矿选择、淘汰、交易公告与 RBF。替换后的费率图必须在每一点都至少不差,并在某处严格更好,同时满足其他替换规则;旧的 CPFP carve-out 已被移除,改用 TRUC 与 sibling eviction。 [3]

在判断某笔具体交易会如何处理之前,应核对节点版本与配置、完整集群及其 chunk、费率图和其他 RBF 条件。钱包不得假定全网都采用同一种本地策略。 [4]

要获得更完整的理解,请将本词条与以下词条结合阅读: Mempool, Package Relay, CPFP (Child Pays for Parent), Replace-by-Fee (RBF), Transaction Fees, Block Template.

01Cluster Mempool 是共识变更吗?

不是。Bitcoin Core 31.0 改变的是本地内存池、挖矿选择与 relay 策略;区块内交易的共识有效性没有改变。

02提高交易费时发生了什么变化?

节点按 chunk 评估相互依赖的交易,并要求 RBF 在满足其他替换条件的同时产生严格更好的费率图。结果仍取决于具体节点的策略。

DOC · 001Bitcoin Core 31.0 release notes一手来源 DOC · 002Bitcoin Core — Mempool design一手来源 DOC · 003Bitcoin Core — Mempool replacements一手来源 DOC · 004Bitcoin Core PR 33629 — Cluster mempool implementation一手来源 DOC · 005Delving Bitcoin — An overview of the cluster mempool proposal一手来源
修订日期: 来源优先 · 非投资建议