﻿---
title: "Mempool 与交易池"
description: "从节点本地视角介绍以太坊交易准入、待执行与 nonce 缺口排队、传播、费用资格、替换、私有订单流、纳入、逐出和重组。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mempool 与交易池

> 仅供教育参考，不构成交易或安全建议。Mempool 视图属于节点本地状态，变化频繁且取决于策略；在把交易视为已接受或已完成前，请核验具体链、客户端、nonce、费用上限、提交路径、收据和最终性。

<a id="answer"></a>

## 直接答案

Mempool（即交易池）是节点临时保存在内存中、有时也持久化到磁盘的一组已签名交易；这些交易已按节点当前的验证和策略规则获准进入，但尚未进入该节点所认定的规范链。它不是共识对象、全网统一队列或纳入承诺。两个诚实节点也可能持有不同交易，因为它们收到的 gossip 不同、使用不同客户端或设置、经历过重启或逐出，或者采用不同的公开与私有提交路径。

在以太坊执行客户端中，具有账户下一个 `nonce`、可立即执行的交易通常称为 pending；被 nonce 缺口阻塞的较高 nonce 交易通常称为 queued。这些是客户端接口标签，并非最终的协议状态。交易可能在准入前被拒绝、被传播、被同一发送者和 nonce 的另一笔已签名交易替换、被逐出、被丢弃、成功纳入、纳入后回滚，或者在重组后重新进入候选范围。

<a id="mechanism"></a>

## 运行机制

1. 锁定环境：链 ID、执行客户端及版本、当前链头和基础费、交易类型、发送者、nonce、转账价值、calldata、gas 上限、费用上限和提交路径。区分公开 gossip、私有中继或构建者，以及 ERC-4337 `UserOperation` 路径；它们并不共用一个通用交易池。
2. 解码已签名字节并执行准入前检查。验证签名与发送者、链 ID、类型与编码、固有 gas、nonce 关系、足以覆盖转账价值与最大费用敞口的余额、费用字段，以及所需的 blob sidecar。此处的拒绝不是 EVM `REVERT`，通常不会产生收据或链上费用。
3. 映射本地交易池策略。记录客户端把交易归为 pending 还是 queued、单账户和全局容量、最低费用过滤器、存续期、本地账户豁免、替换加价和持久化行为。Geth 的标志和默认值只描述 Geth，并非以太坊共识或每家提供商的规则。
4. 观察传播，但不要虚构全网统一视图。对照多个独立节点上的原始交易哈希与已签名字节，但缺失状态有多种解释：节点可能尚未收到、按本地策略拒绝、已经逐出，或不公开其交易池。私有路径可以绕过公开 gossip，同时把交易交给路径运营者和构建者查看。
5. 在候选区块上评估纳入资格和排序。对于 type-2 交易，执行 gas 价格为 `min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)`；若基础费超过最高费用，该交易在此上限下不具备纳入资格。nonce 依赖、gas 与 blob 限制、状态有效性、构建者 bundle 和 MEV 的影响可能大于首次可见时间。
6. 主动管理生命周期。等待，或仅在确认活跃链、发送者和替换策略后，提交有明确依据的同 nonce 替换交易。发给自己的同 nonce 转账也只是一笔替换候选，并不是取消原语。不要因为某个浏览器不再显示原交易就重复发送价值转账。
7. 依据共识状态完成对账。保存每个已签名哈希及替换谱系，再按所需确认或最终性级别检查规范收据、区块哈希、状态、gas 使用量、日志、已消耗 nonce 以及账户或合约状态。若重组移除区块，仍然有效的交易可能返回部分本地交易池，但具体行为取决于客户端与状态。

<a id="example"></a>

## 计算示例

- **费用上限资格。** 某 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。nonce `10` 纳入后，规范 nonce 变为 `11`，而 `12` 仍被阻塞，直至有效的 nonce `11` 交易被纳入。在交易池中看到 nonce `12` 并不代表它可以独立执行。
- **取决于策略的替换。** 在某教学 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` 个。两项数量都不能证明构建者、私有中继或其余网络能看见什么。

<a id="risks"></a>

## 风险

- 在错误的链 ID 或网络上签名或广播。
- 信任恶意、陈旧或配置错误的 RPC 端点。
- 签名、交易类型、编码或 blob sidecar 无效。
- 余额不足以覆盖转账价值与最大费用敞口。
- 固有 gas 或 calldata 规则导致准入前拒绝。
- nonce 已被使用或过低。
- nonce 缺口使后续交易继续排队。
- 同 nonce 替换因本地策略判定加价不足而被拒绝。
- 最高费用低于候选区块基础费。
- 实际优先费过低或资源限制延迟纳入。
- 客户端、提供商、版本或配置策略不一致。
- 交易池容量、过期、重启或逐出移除交易。
- peer 传播不良、日蚀攻击或选择性中继。
- 私有中继泄漏、审查、停机或构建者不参与。
- 公开订单流遭受抢先交易、三明治攻击或其他 MEV。
- 构建者重排、bundle 或私有交易改变执行状态。
- 模拟结果在纳入前失效。
- 盲目重复提交或丢失替换谱系。
- 虽已获交易池接受，但纳入后发生 `REVERT`、gas 耗尽或被捕获的子调用失败。
- 重组、最终性混淆，或把 ERC-4337 替代交易池当成普通 txpool。

<a id="misconceptions"></a>

## 常见误区

- Mempool 是一个全网同步的先进先出队列。
- 交易哈希能证明全网已经接受或传播该交易。
- Pending 表示已经纳入、执行成功、不可逆或收款人已到账。
- 费用足够高就能保证纳入和执行成功。
- 私有提交路径会自动保密、抗审查且保证上链。

<a id="related"></a>

## 相关主题

- [Gas 费](/zh-cn/crypto/gas-fee/)
- [Mempool 替换](/zh-cn/crypto/mempool-replacement/)
- [MEV](/zh-cn/crypto/mev/)

<a id="sources"></a>

## 来源

- [Transactions](https://ethereum.org/developers/docs/transactions/) - Ethereum.org（查阅日期：2026-08-13）
- [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals（查阅日期：2026-08-13）
- [txpool Namespace](https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-txpool) - go-ethereum（查阅日期：2026-08-13）
- [Command-line Options](https://geth.ethereum.org/docs/fundamentals/command-line-options) - go-ethereum（查阅日期：2026-08-13）
- [JSON-RPC API](https://ethereum.org/developers/docs/apis/json-rpc/) - Ethereum.org（查阅日期：2026-08-13）
- [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) - Ethereum Improvement Proposals（查阅日期：2026-08-13）
- [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337) - Ethereum Improvement Proposals（查阅日期：2026-08-13）
- [MEV Protection Overview](https://docs.flashbots.net/flashbots-protect/overview) - Flashbots Documentation（查阅日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-cn/crypto/mempool/index.mdx
