﻿---
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-tw/crypto/gas-fee/)
- [Mempool 替換](/zh-tw/crypto/mempool-replacement/)
- [MEV](/zh-tw/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-tw/crypto/mempool/index.mdx
