仅供教育参考,不构成交易或安全建议。Mempool 视图属于节点本地状态,变化频繁且取决于策略;在把交易视为已接受或已完成前,请核验具体链、客户端、nonce、费用上限、提交路径、收据和最终性。
直接答案
Mempool(即交易池)是节点临时保存在内存中、有时也持久化到磁盘的一组已签名交易;这些交易已按节点当前的验证和策略规则获准进入,但尚未进入该节点所认定的规范链。它不是共识对象、全网统一队列或纳入承诺。两个诚实节点也可能持有不同交易,因为它们收到的 gossip 不同、使用不同客户端或设置、经历过重启或逐出,或者采用不同的公开与私有提交路径。
在以太坊执行客户端中,具有账户下一个 nonce、可立即执行的交易通常称为 pending;被 nonce 缺口阻塞的较高 nonce 交易通常称为 queued。这些是客户端接口标签,并非最终的协议状态。交易可能在准入前被拒绝、被传播、被同一发送者和 nonce 的另一笔已签名交易替换、被逐出、被丢弃、成功纳入、纳入后回滚,或者在重组后重新进入候选范围。
1
创建
钱包填写目标、金额、费用参数,以及已花费输入或 nonce 等防重放数据,并构造交易。
运行机制
- 锁定环境:链 ID、执行客户端及版本、当前链头和基础费、交易类型、发送者、nonce、转账价值、calldata、gas 上限、费用上限和提交路径。区分公开 gossip、私有中继或构建者,以及 ERC-4337
UserOperation路径;它们并不共用一个通用交易池。 - 解码已签名字节并执行准入前检查。验证签名与发送者、链 ID、类型与编码、固有 gas、nonce 关系、足以覆盖转账价值与最大费用敞口的余额、费用字段,以及所需的 blob sidecar。此处的拒绝不是 EVM
REVERT,通常不会产生收据或链上费用。 - 映射本地交易池策略。记录客户端把交易归为 pending 还是 queued、单账户和全局容量、最低费用过滤器、存续期、本地账户豁免、替换加价和持久化行为。Geth 的标志和默认值只描述 Geth,并非以太坊共识或每家提供商的规则。
- 观察传播,但不要虚构全网统一视图。对照多个独立节点上的原始交易哈希与已签名字节,但缺失状态有多种解释:节点可能尚未收到、按本地策略拒绝、已经逐出,或不公开其交易池。私有路径可以绕过公开 gossip,同时把交易交给路径运营者和构建者查看。
- 在候选区块上评估纳入资格和排序。对于 type-2 交易,执行 gas 价格为
min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas);若基础费超过最高费用,该交易在此上限下不具备纳入资格。nonce 依赖、gas 与 blob 限制、状态有效性、构建者 bundle 和 MEV 的影响可能大于首次可见时间。 - 主动管理生命周期。等待,或仅在确认活跃链、发送者和替换策略后,提交有明确依据的同 nonce 替换交易。发给自己的同 nonce 转账也只是一笔替换候选,并不是取消原语。不要因为某个浏览器不再显示原交易就重复发送价值转账。
- 依据共识状态完成对账。保存每个已签名哈希及替换谱系,再按所需确认或最终性级别检查规范收据、区块哈希、状态、gas 使用量、日志、已消耗 nonce 以及账户或合约状态。若重组移除区块,仍然有效的交易可能返回部分本地交易池,但具体行为取决于客户端与状态。
计算示例
- 费用上限资格。 某 type-2 转账的
gasUsed = 21,000、baseFeePerGas = 32 gwei、maxPriorityFeePerGas = 3 gwei、maxFeePerGas = 34 gwei。实际价格为min(34, 32 + 3) = 34 gwei,所以实际小费为2 gwei。费用是21,000 * 34 = 714,000 gwei = 0.000714 ETH,其中0.000672 ETH是被销毁的基础费,0.000042 ETH是小费。若候选区块基础费升至35 gwei,则34 gwei上限不足以在该区块纳入。 - Nonce 缺口。 账户的规范 nonce 为
10。某本地交易池收到 nonce 为10和12的交易,但没有11;它可以把10归为 pending,把12归为 queued。nonce10纳入后,规范 nonce 变为11,而12仍被阻塞,直至有效的 nonce11交易被纳入。在交易池中看到 nonce12并不代表它可以独立执行。 - 取决于策略的替换。 在某教学 Geth 配置下,
txpool.pricebump = 10,旧交易的maxFeePerGas = 40 gwei、maxPriorityFeePerGas = 2 gwei。按 10% 加价计算的替换门槛为44 gwei和2.2 gwei。提出43 gwei和3 gwei仍可能被拒绝,因为其中一个上限未达到所配置的加价;44 gwei和2.2 gwei则达到两项教学门槛。具体整数取整、交易类型和准入逻辑取决于版本,另一节点可能保留不同候选。 - 不存在全网统一交易池。 节点 A 报告
120,000个不同交易哈希,节点 B 报告100,000个,交集为80,000个。并集是120,000 + 100,000 - 80,000 = 140,000;Jaccard 重合度为80,000 / 140,000 = 57.1428571429%。仅 A 可见的哈希有40,000个,仅 B 可见的有20,000个。两项数量都不能证明构建者、私有中继或其余网络能看见什么。
风险
- 在错误的链 ID 或网络上签名或广播。
- 信任恶意、陈旧或配置错误的 RPC 端点。
- 签名、交易类型、编码或 blob sidecar 无效。
- 余额不足以覆盖转账价值与最大费用敞口。
- 固有 gas 或 calldata 规则导致准入前拒绝。
- nonce 已被使用或过低。
- nonce 缺口使后续交易继续排队。
- 同 nonce 替换因本地策略判定加价不足而被拒绝。
- 最高费用低于候选区块基础费。
- 实际优先费过低或资源限制延迟纳入。
- 客户端、提供商、版本或配置策略不一致。
- 交易池容量、过期、重启或逐出移除交易。
- peer 传播不良、日蚀攻击或选择性中继。
- 私有中继泄漏、审查、停机或构建者不参与。
- 公开订单流遭受抢先交易、三明治攻击或其他 MEV。
- 构建者重排、bundle 或私有交易改变执行状态。
- 模拟结果在纳入前失效。
- 盲目重复提交或丢失替换谱系。
- 虽已获交易池接受,但纳入后发生
REVERT、gas 耗尽或被捕获的子调用失败。 - 重组、最终性混淆,或把 ERC-4337 替代交易池当成普通 txpool。
常见误区
- Mempool 是一个全网同步的先进先出队列。
- 交易哈希能证明全网已经接受或传播该交易。
- Pending 表示已经纳入、执行成功、不可逆或收款人已到账。
- 费用足够高就能保证纳入和执行成功。
- 私有提交路径会自动保密、抗审查且保证上链。
相关主题
来源
- Transactions - Ethereum.org(查阅日期:2026-08-13)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals(查阅日期:2026-08-13)
- txpool Namespace - go-ethereum(查阅日期:2026-08-13)
- Command-line Options - go-ethereum(查阅日期:2026-08-13)
- JSON-RPC API - Ethereum.org(查阅日期:2026-08-13)
- EIP-4844: Shard Blob Transactions - Ethereum Improvement Proposals(查阅日期:2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals(查阅日期:2026-08-13)
- MEV Protection Overview - Flashbots Documentation(查阅日期:2026-08-13)