什么是内存池(Mempool)?加密货币的交易等待室

2026-07-15分类:区块链技术 阅读(

内存池(mempool,全称 memory pool)是每笔区块链交易在你广播它之后、矿工或验证者将其写入区块之前所停留的“等待室”。它是公共区块链中最不起眼的组件之一,却也是影响最深远的组件之一。内存池决定了你支付多少手续费、需要等待多久,在某些网络上甚至决定了交易机器人是否能在你的订单执行前看到它并从中获利。理解内存池能将确认延迟从谜题变成可读的市场信号。

本文将解释内存池究竟是什么、为什么区块链需要这样一个等待室、交易如何一步步通过它、手续费市场如何决定谁先被确认、为什么没有一个单一的内存池而是成千上万个略有不同的版本、当队列溢出时会发生什么、内存池如何成为提取型交易机器人的狩猎场、Solana 为什么采取激进步骤完全移除公共内存池,以及当你的交易卡住时可以采取哪些实用措施。

内存池究竟是什么

内存池是区块链网络上每个完整节点在其工作内存中维护的未确认交易数据库。当你在钱包中签名交易并点击发送时,交易不会前往某个中央服务器处理,因为根本不存在这样的服务器。相反,你的钱包将已签名的交易交给一个节点,该节点开始将其传播给它的对等节点,对等节点再传播给它们的对等节点,直到网络上大多数节点都拥有副本。每个收到交易的节点都会运行一系列检查,如果交易通过检查,就将其放入本地内存池等待。

这个词本身是 memory(内存)和 pool(池)的缩写,而“内存”部分很重要。节点将内存池保存在 RAM 中而不是写入磁盘,因为速度是关键。当矿工组装候选区块时,需要在几分之一秒内按手续费对数千笔待处理交易进行排序,并选择最有利可图的集合。当网络上其他地方传来新区块时,如果区块中的大部分交易已经存在于节点的内存池中(且已检查完毕),节点就能更快地验证它。

内存池是一个中转区域,是用户活动的混乱连续流与区块生产的严格周期性心跳之间的缓冲区。

为什么区块链需要一个等待室

传统支付处理器可以在交易到达的瞬间确认它,因为单一公司控制着账本,可以直接写入条目。公共区块链没有这样的权威。数千个独立节点必须就单一历史达成一致,它们以离散步骤(一个区块接一个区块)达成一致。在区块之间,网络需要一个共享的、非正式的画面,展示用户接下来想发生什么,而内存池提供了这个画面。

等待期还承担着关键的安全工作。在节点将交易接纳到内存池之前,它会验证数字签名是否有效、发送方是否实际控制正在花费的资金、交易格式是否正确,以及同一笔资金是否被重复花费。最后一点检查比听起来更重要。完全有可能出现两笔冲突的交易(都花费同一笔资金),同时从网络不同位置进入网络。有些节点先看到一笔,有些节点先看到另一笔。每个节点都会拒绝后到达的冲突交易,最终由矿工将其中一笔纳入区块来解决冲突。内存池就是这些竞赛进行和解决的地方。

内存池还充当网络的早期预警系统。快速填满的内存池预示着需求激增、恐慌、空投领取窗口或手续费飙升,这些在确认区块中出现之前就能被察觉。交易者、矿工和钱包手续费估算器都像气象学家读取气压系统一样读取内存池。

一笔交易的生命周期,一步一步

跟随单笔交易走完整个流程,能让机制变得具体。

第一步:创建 你的钱包构建交易,指定金额、接收方和你愿意支付的手续费,并用你的私钥签名。签名证明所有权而不泄露私钥本身。

第二步:广播 钱包将已签名的交易发送给一个或多个节点,这些节点开始通过点对点网络中继传播。通常只需几秒钟就能传播到网络大多数节点,这一步不需要信任第一个节点,因为后续每个节点都会独立重新验证交易后再继续传递。

第三步:验证 每个收到交易的节点都会独立检查它。无效交易(错误签名、资金不足、数据格式错误等)会被当场丢弃,永远不会进入内存池。

第四步:等待 交易现在坐在网络上成千上万个内存池中,任何运行节点或使用公共内存池浏览器的人都能看到。它等待多久几乎完全取决于它附加的手续费相对于其他人的手续费高低。

第五步:选择 工作量证明链上的矿工或权益证明链上的验证者从其内存池中挑选待处理交易来组装候选区块,几乎总是按手续费密度排序,以使区块获得最大奖励。

第六步:确认 区块被挖出或提出、传播并被网络接受。每个节点将区块中的交易从内存池中移除,你的交易现在成为链的一部分。每增加一个在其之上的区块,就会增加一次确认,反转难度呈指数级上升。

手续费市场如何决定谁先走

区块空间稀缺且需求波动,因此区块链通过拍卖来分配空间。在比特币上,手续费以 satoshis per virtual byte(每虚拟字节聪数)计算,交易的手续费率取决于你支付多少以及交易占用多少空间。在以太坊上,手续费是 gas,有被协议销毁的基础费用和支付给验证者的优先小费。在这两种系统中,逻辑完全相同:区块生产者是利润最大化者,因此他们会优先用支付最高的交易填满区块。

这意味着你在队列中的位置不是固定的。一笔中午看起来价格有竞争力的交易,如果晚上需求激增,可能就会变得 hopelessly 低价。钱包通过读取当前内存池来估算手续费,查看待处理交易正在出价多少,以及最近区块有多满,然后建议一个在你选择的时间窗口内很可能被确认的费率。这些估算是经过教育的猜测,而不是保证,在波动市场中会很快过时。在安静的周日能在下一个区块确认的费率,在清算瀑布期间可能会让你等待数小时,因为其他人的支付意愿已经变化,而你的还停留在原地。拍卖从未关闭,它持续重新定价。

当你支付不足时,大多数网络都提供了逃生通道。比特币支持费用替换(Replace-by-Fee,RBF),允许你用更高费用的新版本重新广播同一笔交易,从而取代原交易。另一个相关技巧是子交易支付父交易(Child Pays For Parent,CPFP),附加一笔高手续费的后续交易来花费卡住交易的输出,给矿工确认两笔交易的激励。以太坊钱包允许你用相同 nonce 和更高 gas price 重新提交交易,从而替换待处理版本。知道这些工具存在,能把卡住的交易从紧急情况变成小麻烦。

没有单一的内存池

人们说“内存池”时,仿佛存在一个权威的队列,但现实更混乱也更有趣。每个节点都维护自己的内存池,没有两个完全相同。交易到达不同节点的时间不同,节点应用略有不同的接纳政策,每个节点管理自己的内存限制。我们所说的内存池实际上是成千上万个私有内存池的松散统计重叠。

在实践中,重叠很大,因为大多数节点运营商使用默认设置。典型的比特币节点将内存池上限设在约 300MB,交易保留最多两周,并拒绝支付低于最低中继费率(大约每虚拟字节 1 satoshi)的任何交易。当池子超过大小上限时,节点会首先驱逐手续费最低的交易,并提高其...

政策、标准性和节点为什么拒绝有效交易

共识规则定义区块链在区块中会接受什么。内存池政策定义单个节点会持有和中继什么,两者并不相同。一笔交易在共识规则下完全有效,但仍可能被大多数内存池拒绝,因为它违反了比特币开发者所说的“标准性”(standardness):非正式的政策规则,用于过滤灰尘输出、过大脚本、荒谬低的手续费以及可能给网络带来负担的奇特交易形状。政策是节点级的免疫系统,是第一道防线,保持共享队列可用。

这种区别产生了现实世界的混乱。一笔被公共内存池拒绝的交易,如果直接到达矿工,仍有可能被打包,这就是为什么存在接受非标准交易并直接提交给矿池的带外服务。这也意味着你通过浏览器观察到的内存池反映的是该节点的政策,而不是某种普遍真理。两个浏览器可能对你的交易是否待处理意见不同,仅仅因为它们的节点应用了不同的过滤器。

政策演变速度也快于共识。多年来,节点围绕数据铭文、灰尘限制和替换行为反复收紧或放宽中继规则,每次变化都在不触及共识的情况下重塑待处理队列的样子。对用户的实际启示很简单:如果钱包警告交易是非标准的,问题通常出在交易的构造上,而不是背后的资金。

内存池还有一个更安静的机构受众。交易所观察待处理存款以更快入账,合规团队在确认前筛查 incoming 交易,支付处理器通过检查交易传播程度以及是否有冲突花费在流通来评估零确认转账的风险。大多数网络内存池都认可的交易被双花的可能性远低于传播不佳的交易,企业会为此定价差异。

拥堵、垃圾邮件和满内存池的感觉

内存池拥堵是网络在喘息。需求超过区块空间,队列增长,及时确认所需的手续费攀升。用户体验到的是昂贵的交易和漫长的等待。比特币 2017 年末的狂热、2020 年的 DeFi 夏天、NFT 铸造浪潮以及 2023 年的 ordinals 铭文热潮,都曾产生以天计的内存池积压,数十万笔交易排队,手续费率一夜之间翻倍。在最糟糕的时期,低手续费交易等待超过一周,节点运营商眼睁睁看着内存池达到大小限制并开始 shedding 最便宜的流量。

拥堵也可以是人为制造的。垃圾邮件攻击用大量低价值交易淹没网络,阻塞队列并降低对其他人的服务质量,这是一种廉价的拒绝服务形式。网络通过最低中继费、驱逐政策以及最终的经济手段进行防御,因为持续的垃圾邮件攻击者要付出真实的手续费成本。2017 年对以太坊测试网的垃圾邮件攻击显示了洪水攻击对费用压力较弱的链是多么有效,并将费用市场设计推向了更高的研究议程。

拥堵也是信息。伴随着手续费上升而膨胀的内存池预示着紧急需求,通常围绕交易所挤兑、清算瀑布或重大市场变动。精明的观察者像债券交易员看收益率一样看待内存池深度,几家分析公司正是出售这种数据流。

黑暗森林:MEV 与池中的观察者

内存池的决定性特征——完全透明——也是它最大的脆弱性。每笔待处理交易在执行前都是公开的,这意味着任何人都能读取你的意图并先于你行动。在智能合约链上,这催生了围绕最大可提取价值(Maximal Extractable Value,MEV)的整个提取型产业,即控制交易排序的人可获得的利润。

经典攻击是三明治攻击(Sandwich)。机器人发现你在去中心化交易所有一笔大额待处理 swap,先买入同一代币推高价格,让你的交易以更差的价格执行,然后立即卖出,直接从你的执行中攫取利润。前跑、后跑和清算狙击遵循相同原理:看到待处理交易,在其周围建仓,捕获差价。一位研究者曾将公共内存池形象地描述为“黑暗森林”,任何可见的东西都会被猎杀。研究人员估计,自 2020 年以来,以太坊上的 MEV 提取已达数十亿美元。

作为回应而成长起来的防御产业现在已相当可观。私有交易中继(如 Flashbots Protect)允许用户直接向区块构建者提交交易,完全跳过公共内存池,机器人永远看不到订单。批量拍卖交易所以单一清算价格结算多笔交易,消除了排序优势。钱包越来越多地默认通过受保护通道路由大额交易。这一切都没有消除 MEV,但改变了谁会被猎杀。经济学很简单:隐藏订单的价值随其规模增长,因此大额交易者现在像传统基金对待暗池一样对待内存池隐私,将其视为基本运营卫生。小额零售用户面临的风险要小得多,但在薄交易对上通过公共队列进行单一大额 swap,可能在几秒钟内就向三明治机器人支付三位数的“过路费”。

Solana 的答案:删除内存池

Solana 做出了任何主要网络中最激进的设计选择:它根本没有公共内存池。Solana 的 Gulf Stream 协议不是在整个网络上 gossip 待处理交易,而是直接将交易转发给计划生产下一个区块的验证者(称为 leader)。leader 计划是提前已知的,因此钱包和节点确切知道将流量发送到哪里。交易从用户直接到达 leader,几乎没有公共等待期。

这种设计服务于速度,并且消除了三明治机器人所依赖的经典观察窗口,因为待处理交易从未被广播供公众检查。它并没有消除 MEV,而是让 MEV 成熟为私有拍卖经济,搜索者通过 Jito 等基础设施向 leader 支付小费,以获得对其交易 bundle 的有利排序。这个教训具有普遍性:任何区块链上的排序都有价值,移除公共队列只会改变价值被捕获的位置,而不是它是否存在。

其他网络正在向中间路径靠拢。加密内存池在排序锁定之前隐藏交易内容。以太坊的提议者-构建者分离将选择交易的工作与提议区块的工作分开,将 MEV 推向更透明的拍卖。2030 年的内存池很可能与 2020 年的开放集市大不相同。但不会改变的底层约束是:每个区块链的某个组件必须在交易创建和确认之间持有交易,而能够观察或影响该组件的人,对无法做到这一点的人拥有权力。

自己阅读内存池

你不需要运行节点就能观察队列。公共内存池浏览器实时可视化待处理交易、手续费分布和预计确认时间,是回答每个卡住用户都会问的两个问题的最快方式:网络有多忙?现在什么手续费实际能被打包?

当你自己的交易卡住时,诊断几乎总是相同的:你的手续费低于当前市场费率。你的选项(按大致优先级排序)是:等待拥堵缓解、使用费用替换(RBF)或 nonce 替换提高手续费、在支持的地方使用子交易支付父交易(CPFP),或者在比特币上,如果这笔支付不再重要,就简单地等待被驱逐。你不应该做的是惊慌。资金没有丢失。一笔未确认的交易要么被确认,要么实际上不复存在,在后一种情况下,币从未离开你的钱包。

了解浏览器实际显示的内容也有帮助。手续费直方图显示每个手续费水平上有多少待处理交易量,这告诉你当前清算价格在哪里。预计区块视图显示如果立即生产区块,下几个区块会被哪些交易填满,这告诉你队列在你前面有多深。在比特币浏览器上,purge line 显示节点正在积极驱逐交易的手续费率,这是市场的有效下限。花十分钟学习这三个读数,在第一次手续费飙升时就能收回成本。

最后值得养成的一个习惯是:在交易前而不是之后检查内存池。花 30 秒查看当前手续费率,既能避免在安静期多付,也能避免在风暴中少付。队列是公开的。很少有人 bother 去阅读它,这正是阅读它的人拥有优势的原因。这也是为什么网络升级分裂链时(我们在硬分叉和软分叉指南中讨论过),总会产生一波内存池戏剧,因为双方钱包和节点都要理清哪些待处理交易属于哪里。

常见问题解答

Q: 简单来说,内存池是什么? A: 内存池是区块链交易的等待室。你发送交易后,它会停留在内存池中,处于可见且待处理状态,直到矿工或验证者将其纳入区块。每个完整节点都在内存中保留自己的一份队列副本。

Q: 为什么我的交易卡在内存池里? A: 几乎总是因为附加的手续费低于其他待处理交易正在支付的水平。区块生产者优先选择支付最高的交易,因此低价的交易会一直等到需求下降或被从队列中驱逐为止。

Q: 内存池中的交易可以取消吗? A: 有时可以。在比特币上,费用替换(RBF)允许你用新版本取代待处理交易;如果一笔卡住的交易被所有内存池驱逐,就相当于被取消。在以太坊上,你可以通过发送相同 nonce 但更高手续费的新交易来替换待处理交易。

Q: 整个网络只有一个内存池吗? A: 不是。每个节点维护自己的内存池,内容因时间、设置和内存限制而在节点之间略有不同。人们所说的内存池是成千上万个独立队列的粗略重叠。

Q: 一笔交易能在内存池里停留多久? A: 在比特币上,默认节点设置会保留交易最多两周,然后丢弃它们,不过如果池子满了且手续费低,驱逐可能会更早发生。其他网络有自己的保留和驱逐规则。

Q: 内存池与 MEV 有什么联系? A: 公共内存池中的待处理交易在执行前是可见的,因此机器人可以读取它们并围绕它们进行交易,通过三明治攻击和前跑提取价值。这种可见性是像以太坊这样链上大多数 MEV 的原材料。

Q: Solana 有内存池吗? A: 没有公共内存池。Solana 将交易直接转发给即将到来的区块 leader,而不是在网络上广播,从而移除了公共等待室。Solana 上的 MEV 则通过 Jito 等基础设施提供商运行的私有 bundle 拍卖进行。

Q: 如果交易永远不确认,资金会丢失吗? A: 不会。永远不确认的交易最终会被从内存池中丢弃,币只是简单地留在发送钱包中,就像交易从未被创建一样。只有当交易被纳入区块时,资金才会被扣除。

Tags: