本章目标: 比特币管道系统里被误解最多的一环。世上没有「那一个」内存池——每个节点都有自己的;交易按 sat/vB 排序;费率是唯一重要的数字。这里讲它真实的运作方式。
1. 一句话定义内存池
内存池是「已广播但尚未进入区块」的交易的候客厅。
你发一笔比特币交易时,它不会直接进区块链。它先进入第一个收到它的节点的内存池,被转发给该节点的对等节点,再转发给对等节点的对等节点——几秒钟内传遍全球网络。然后,它静静等待。
在矿工把它装进区块之前,你的交易是未确认状态:它存在、有效,但还不永久。
2. 没有「那一个」内存池
一个常见错误:把内存池当成全球唯一的一份数据。
它不是。每个全节点维护自己的内存池。 因为彼此转发交易、策略相似,它们大体收敛,但并不相同。
你在 mempool.space 这类网站上看到的「内存池」,是那家网站的节点的内存池。另一个节点——尤其是策略配置不同的——看到的交易集合可能有细微差别。
几种实际情况:
- 网络分区(罕见但真实)会让内存池分歧几分钟。
- Bitcoin Knots 与 Bitcoin Core 的中继策略不同。Knots 对铭文类交易更严格,某些 Core 会中继的它不中继。
- 矿工的私有内存池。 矿池有时通过带外渠道收交易——不进入任何公共内存池,直接装进自己挖的区块。
对多数用户,「内存池」是个够用的近似。对正在排查卡单的人,知道这个抽象有缝,至关重要。
3. 交易怎么进来
你广播一笔交易:
- 钱包把它发给某个比特币节点(你自己的、钱包服务商的、或公共广播服务)。
- 节点验证:签名对吗?输入存在且未花?手续费达到中继下限?脚本策略合规?
- 有效,则加入自己的内存池,并按
inv→getdata→tx的消息序列转发给对等节点。 - 每个收到的对等节点重复第 2、3 步。
大约 5 到 10 秒,这笔交易就进了全球大多数内存池。
第 2 步的验证属于节点策略,不是共识。一笔交易可以共识有效(能被区块接受)但被中继策略拒绝(节点不转发)。这就是为什么有些交易不在任何公共内存池里却照样被打包——它们是直接提交给矿工的。
4. 交易怎么出去
内存池里的交易有四种下场:
- 确认。 矿工把它装进区块,区块被中继、被接受、上链。交易从此进入共识。这是目标。
- 被驱逐。 内存池有容量上限(Bitcoin Core 默认 300 MB)。满了之后,费率最低的交易被丢弃。被丢交易想花的 UTXO 仍在链上未花,钥匙仍归你,换更高手续费重新广播即可。多数钱包不会自动做这件事。
- 被替换。 若原交易带了 RBF 标记(或节点采用 full-RBF 策略),更高费率的版本会替换它,原件被遗忘。
- 冲突。 另一笔花同一 UTXO 的交易先上了链,你的交易随之失效(UTXO 不存在了),被丢弃。
默认情况下,Bitcoin Core 的内存池把未确认交易保留最长两周再驱逐。这是 -mempoolexpiry 配置项(默认 336 小时),节点运营者可自行缩短或延长。
5. 费率,不是绝对手续费
关于内存池,最重要的一件事:
矿工看费率,不看绝对手续费。
费率 = 交易手续费 ÷ 交易大小,单位是聪/虚拟字节(sat/vB)。250 字节、2500 聪手续费的交易,和 1000 字节、10000 聪手续费的交易,费率相同(10 sat/vB)。
为什么?区块空间是稀缺资源。面对固定约 400 万权重单位的空间,矿工按每字节收入从高到低装箱,收入才最大。
这意味着:
- 一笔小额交易付着微不足道的绝对手续费,可能比一笔付着巨额手续费的大交易确认得更快——只要它的费率更高。
- 「我付了 20 美元手续费」毫无意义,除非同时说清交易有多大。
你挑选花掉的 UTXO(见 UTXO 专题)直接决定交易大小,交易大小直接决定「想多快确认该付多少费率」。两者不可分割。
划重点: 把内存池想象成车管所的候客厅。所有人等的是同一批窗口(区块空间),但没有取号机——只有一条 VIP 通道,你的费率决定你站多靠前。费率高,先被叫号;忙日低费率,坐一下午看你后面来的人一个个超过去。
6. 费率直方图怎么读
内存池实时状态通常展示为按费率从高到低排列的直方图(mempool.space 上可看):
- 每一条带代表一个费率档位的待打包交易量,最高的 sat/vB 在最顶上,对应矿工的优先级——顶部的最先进入下一个区块。
- 内存池空的时候,几乎任何费率都能进下一个块。
- 内存池满的时候(高负载期的常态),你得出价比前面的交易更高。
7. RBF 和 CPFP:卡单了怎么办
广播时费率给低了,交易可能在内存池里无限期滞留。两个解卡工具:
替换手续费(RBF): 用更高手续费广播一笔替换交易。若原交易带了 RBF 标记(见 BIP 125),遵循标准的节点会接受替换。Bitcoin Core 28.0(2024 年 10 月)起 full-RBF 成为默认——即便原交易没带标记,网络上多数节点现在也接受替换。这是最干净的解法,需要你的钱包支持 RBF。
子为父偿(CPFP): 无法替换原件时(不是你发的,或原钱包不支持 RBF),可以新发一笔高费率交易去花那笔卡住交易的输出。矿工按「交易包」视角打包:子交易的高手续费诱使他们把父交易一并收进来。CPFP 需要收款方配合(未确认的 UTXO 在他们手里)。
两个都行不通,就等。要么内存池消化到你的低费率交易被收入,要么两周后被驱逐、你再试一次。
8. 内存池策略不是共识
一个微妙但重要的区分:
- 共识规则定义什么在区块里有效。由每个节点执行,变更极慢,需要软分叉或硬分叉。
- 内存池/中继策略定义单个节点选择接受和转发什么。是本地化的、有立场的,不同节点实现之间可以有差异。
一笔交易可以共识有效但被策略拒绝。例子:
- 非标准脚本的交易(技术上有效,但没有节点肯中继)。想让它上链,直接提交给矿工。
- 特别大或费率特别低的交易(策略可能丢弃)。
- 带铭文的交易(Bitcoin Core 默认中继;Bitcoin Knots 默认不中继)。
这件事之所以重要,是因为被辩论的从来是策略。听到「Bitcoin Core 该不该过滤铭文」时,问题其实是「要不要改中继策略」——不是共识变更,而是「单个节点选择怎么做」的问题。
9. 铭文时期的内存池
2023 年初起,铭文(把任意数据编码进交易见证数据)多年来第一次造成持续的内存池拥堵。影响:
- 费率飙升:从典型的 1–5 sat/vB 冲到高峰期的 50–300+ sat/vB。
- 内存池膨胀:从通常的 1–50 MB 变成长期 100–500 MB。
- 不支持 RBF 的钱包被搁浅。 用户无法给卡住的交易加价。
- Bitcoin Knots 用户增长。 一部分运营者想过滤铭文,Knots 默认提供该策略。
「铭文是不是垃圾」的辩论真实且仍在继续。技术事实是:它们是有效的比特币交易,像任何交易一样付手续费,被内存池像任何交易一样按费率排序。节点运营者是否中继它们,取决于运营者自己。
10. 这套设计买来了什么
内存在比特币里的角色是:区块空间的价格发现。
区块空间是稀缺且有价值的资源。内存池就是活的拍卖场。每个区块是一场密封式第一价格拍卖:矿工挑选出价最高的交易,填满约 400 万权重单位的空间。
没有内存池:没有手续费市场,没有紧急度信号,没有优雅的拥堵处理。到达速度快过挖矿速度的交易只能被丢弃。
有了内存池:一个透明、对抗性、逐秒定价的实时市场。矿工因此能赚到手续费,用户因此能表达紧急程度,网络因此能在 10 倍需求尖峰下不倒。
它不漂亮。但它是正确的设计。
划重点: 发任何不寻常金额的比特币交易之前,先瞟一眼当前内存池费率直方图。花三分钟看费率,能省下几小时等待或几美元冤枉钱。