﻿---
title: "Mempool และพูลธุรกรรม"
description: "คู่มือจากมุมมองเฉพาะของแต่ละโหนดเกี่ยวกับการรับธุรกรรม Ethereum, nonce แบบ pending และ queued, การเผยแพร่, คุณสมบัติด้านค่าธรรมเนียม, การแทนที่, private order flow, การบรรจุ, การคัดออก และ reorganization"
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 และพูลธุรกรรม

> จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

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

## คำตอบโดยตรง

Mempool หรือพูลธุรกรรมคือชุดธุรกรรมที่ลงนามแล้วซึ่งโหนดเก็บไว้ชั่วคราวในหน่วยความจำและบางครั้งบันทึกลงดิสก์ ธุรกรรมเหล่านี้ผ่านกฎตรวจสอบและนโยบายปัจจุบันของโหนด แต่ยังไม่อยู่ใน chain ที่โหนดยอมรับว่าเป็น canonical Mempool ไม่ใช่ออบเจ็กต์ฉันทามติ ไม่ใช่คิวส่วนกลาง และไม่ใช่คำรับประกันว่าจะถูกบรรจุ โหนดสุจริตสองโหนดอาจเก็บธุรกรรมต่างกันเพราะได้รับ gossip ต่างกัน ใช้ไคลเอนต์หรือการตั้งค่าต่างกัน รีสตาร์ต คัดรายการออก หรือใช้เส้นทางส่งแบบสาธารณะและส่วนตัวต่างกัน

ใน execution client ของ Ethereum ธุรกรรมที่ดำเนินการได้และมี `nonce` ถัดไปของบัญชีมักถูกเรียกว่า pending ส่วน nonce ที่สูงกว่าและติด gap มักถูกเรียกว่า queued ป้ายเหล่านี้เป็นคำของส่วนติดต่อไคลเอนต์ ไม่ใช่สถานะสุดท้ายของโปรโตคอล ธุรกรรมอาจถูกปฏิเสธก่อนรับเข้า เผยแพร่ ถูกแทนที่ด้วยธุรกรรมที่ลงนามโดยผู้ส่งและ nonce เดิม ถูกคัดออก ถูกทิ้ง บรรจุและสำเร็จ บรรจุแต่ execution ย้อนกลับ หรือถูกพิจารณาใหม่หลัง reorganization

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

## วิธีการทำงาน

1. กำหนดสภาพแวดล้อมให้แน่นอน ได้แก่ chain ID, execution client และเวอร์ชัน, head และ base fee ปัจจุบัน, ประเภทธุรกรรม, ผู้ส่ง, nonce, value, calldata, gas limit, fee cap และเส้นทางส่ง แยก public gossip, relay หรือ builder ส่วนตัว และเส้นทาง ERC-4337 `UserOperation` เพราะไม่ได้ใช้พูลส่วนกลางเดียวกัน
2. ถอดรหัส byte ที่ลงนามและตรวจสอบก่อนรับเข้า ตรวจลายเซ็นและผู้ส่ง, chain ID, ประเภทและ encoding, intrinsic gas, ความสัมพันธ์ของ nonce, ยอดเงินสำหรับ value บวกภาระค่าธรรมเนียมสูงสุด, field ค่าธรรมเนียม และ blob sidecar ที่ต้องมี การปฏิเสธขั้นนี้ไม่ใช่ EVM `REVERT` และโดยทั่วไปไม่สร้าง receipt หรือค่าธรรมเนียมบน chain
3. ระบุนโยบายพูลภายใน บันทึกว่าไคลเอนต์จัดธุรกรรมเป็น pending หรือ queued, ความจุต่อบัญชีและรวม, ตัวกรองค่าธรรมเนียมขั้นต่ำ, อายุรายการ, ข้อยกเว้นบัญชีในเครื่อง, replacement bump และการเก็บข้อมูลถาวร Flag และค่า default ของ Geth อธิบาย Geth ไม่ใช่ฉันทามติ Ethereum หรือผู้ให้บริการทุกราย
4. สังเกตการเผยแพร่โดยไม่สมมติว่ามีมุมมองส่วนกลาง เปรียบเทียบ hash ธุรกรรมดิบและ byte ที่ลงนามผ่านโหนดอิสระ แต่การไม่พบยังตีความได้หลายอย่าง: โหนดอาจยังไม่ได้รับ ปฏิเสธตามนโยบาย คัดออก หรือไม่เปิดเผยพูล เส้นทางส่วนตัวอาจข้าม public gossip แต่ยังเปิดเผยธุรกรรมแก่ผู้ดำเนินการและ builder ของเส้นทางนั้น
5. จำลองคุณสมบัติและลำดับใน candidate block สำหรับธุรกรรมประเภท 2 ราคา gas ฝั่ง execution คือ `min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)` หาก base fee สูงกว่า maximum fee ธุรกรรมจะไม่มีคุณสมบัติภายใต้ cap นั้น การพึ่งพา nonce, ขีดจำกัด gas และ blob, ความถูกต้องของ state, bundle ของ builder และ MEV อาจสำคัญกว่าเวลาที่พบครั้งแรก
6. จัดการ lifecycle อย่างตั้งใจ รอ หรือส่ง replacement ที่มี nonce เดิมตามวิธีที่บันทึกไว้หลังตรวจ chain ที่ใช้งาน ผู้ส่ง และนโยบาย replacement แล้วเท่านั้น การโอนให้ตนเองด้วย nonce เดิมเป็นเพียง replacement candidate อีกรายการ ไม่ใช่กลไกยกเลิกของโปรโตคอล ห้ามส่ง value ซ้ำเพียงเพราะ explorer แห่งหนึ่งหยุดแสดงธุรกรรมเดิม
7. กระทบยอดกับ state ฉันทามติ เก็บ hash ที่ลงนามและลำดับการแทนที่ทั้งหมด แล้วตรวจ receipt ที่เป็น canonical, block hash, status, gas ที่ใช้, log, nonce ที่ถูกใช้ และ state ของบัญชีหรือสัญญาที่ระดับ confirmation หรือ finality ตามต้องการ หาก reorganization นำบล็อกออก ธุรกรรมที่ยังใช้ได้อาจกลับเข้าสู่พูลบางโหนด แต่พฤติกรรมนี้ขึ้นกับไคลเอนต์และ state

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

## ตัวอย่างคำนวณ

- **คุณสมบัติตาม fee cap** ธุรกรรมโอนประเภท 2 มี `gasUsed = 21,000`, `baseFeePerGas = 32 gwei`, `maxPriorityFeePerGas = 3 gwei` และ `maxFeePerGas = 34 gwei` ราคาที่ใช้จริงคือ `min(34, 32 + 3) = 34 gwei` ดังนั้น tip จริงคือ `2 gwei` ค่าธรรมเนียมคือ `21,000 * 34 = 714,000 gwei = 0.000714 ETH` แบ่งเป็น base fee ที่ถูกเผา `0.000672 ETH` และ tip `0.000042 ETH` หาก base fee ของ candidate block เพิ่มเป็น `35 gwei` cap `34 gwei` จะไม่พอสำหรับบล็อกนั้น
- **Nonce gap** Nonce ของบัญชีตาม canonical state คือ `10` พูลหนึ่งได้รับธุรกรรม nonce `10` และ `12` แต่ไม่มี `11` จึงอาจจัด `10` เป็น pending และ `12` เป็น queued หลัง nonce `10` ถูกบรรจุ nonce ตาม canonical state จะเป็น `11` และ `12` ยังถูกกั้นจนกว่าธุรกรรม nonce `11` ที่ถูกต้องจะถูกบรรจุ การเห็น nonce `12` ในพูลไม่ได้ทำให้ดำเนินการแยกเดี่ยวได้
- **Replacement ตามนโยบายเฉพาะ** ภายใต้การตั้งค่า Geth เพื่อการสอนที่ `txpool.pricebump = 10` ธุรกรรมเก่ามี `maxFeePerGas = 40 gwei` และ `maxPriorityFeePerGas = 2 gwei` เกณฑ์ replacement ที่คำนวณจากการเพิ่ม 10% คือ `44 gwei` และ `2.2 gwei` ข้อเสนอ `43 gwei` และ `3 gwei` อาจยังถูกปฏิเสธเพราะ cap หนึ่งไม่ถึงเกณฑ์ ส่วน `44 gwei` และ `2.2 gwei` ถึงเกณฑ์การสอนทั้งสอง การปัดเศษจำนวนเต็ม ประเภทธุรกรรม และตรรกะรับเข้าจริงขึ้นกับเวอร์ชัน และโหนดอื่นอาจเก็บ candidate ต่างกัน
- **ไม่มีพูลส่วนกลาง** โหนด A รายงาน hash ธุรกรรมต่างกัน `120,000` รายการ โหนด B รายงาน `100,000` รายการ และส่วนร่วมคือ `80,000` รายการ ส่วนรวมคือ `120,000 + 100,000 - 80,000 = 140,000`; Jaccard overlap คือ `80,000 / 140,000 = 57.1428571429%` มี hash `40,000` รายการที่ A เห็นเพียงรายเดียว และ `20,000` รายการที่ B เห็นเพียงรายเดียว จำนวนเหล่านี้ไม่พิสูจน์ว่า builder, relay ส่วนตัว หรือเครือข่ายที่เหลือมองเห็นอะไร

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

## ความเสี่ยง

- ลงนามหรือเผยแพร่บน chain ID หรือเครือข่ายผิด
- เชื่อถือ RPC endpoint ที่เป็นอันตราย เก่า หรือกำหนดค่าผิด
- ลายเซ็น ประเภทธุรกรรม encoding หรือ blob sidecar ไม่ถูกต้อง
- ยอดเงินไม่พอสำหรับ value บวกภาระค่าธรรมเนียมสูงสุด
- กฎ intrinsic gas หรือ calldata ทำให้ถูกปฏิเสธก่อนรับเข้า
- Nonce ถูกใช้แล้วหรือต่ำเกินไป
- Nonce gap ทำให้ธุรกรรมที่ตามมาคงสถานะ queued
- Replacement nonce เดิมถูกนโยบายภายในปฏิเสธว่า underpriced
- Maximum fee ต่ำกว่า base fee ของ candidate block
- Priority ที่ใช้จริงต่ำหรือข้อจำกัดทรัพยากรทำให้ inclusion ล่าช้า
- นโยบายของไคลเอนต์ ผู้ให้บริการ เวอร์ชัน หรือการตั้งค่าไม่ตรงกัน
- ความจุ อายุรายการ การรีสตาร์ต หรือ eviction นำธุรกรรมออก
- การเผยแพร่สู่ peer ไม่ดี การถูก eclipse หรือ relay เลือกปฏิบัติ
- Relay ส่วนตัวรั่วไหล ปิดกั้น หยุดให้บริการ หรือ builder ไม่เข้าร่วม
- Frontrunning, sandwiching หรือ MEV อื่นจาก public order flow
- การเรียงของ builder, bundle หรือธุรกรรมส่วนตัวเปลี่ยน execution state
- ผล simulation เก่าก่อน inclusion
- ส่งซ้ำโดยไม่ตรวจสอบหรือสูญเสียลำดับ replacement
- `REVERT` ที่ถูกบรรจุ out-of-gas หรือ subcall ล้มเหลวแต่ถูกจับไว้ แม้พูลเคยรับธุรกรรม
- Reorganization, ความสับสนเรื่อง finality หรือถือ alternate mempool ของ ERC-4337 เป็น txpool ปกติ

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

## ความเข้าใจผิดที่พบบ่อย

- Mempool เป็นคิว FIFO ส่วนกลางหนึ่งเดียวที่ทั้งเครือข่ายซิงค์ตรงกัน
- Hash ธุรกรรมพิสูจน์ว่าเครือข่ายรับหรือเผยแพร่ธุรกรรมแล้ว
- Pending หมายถึงถูกบรรจุ สำเร็จ ย้อนกลับไม่ได้ หรือผู้รับได้เงินแล้ว
- ค่าธรรมเนียมที่สูงพอรับประกัน inclusion และ execution สำเร็จ
- เส้นทางส่วนตัวเป็นความลับ ต้าน censorship และรับประกันว่าจะถูกบรรจุโดยอัตโนมัติ

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

## หัวข้อที่เกี่ยวข้อง

- [ค่าธรรมเนียม gas](/th/crypto/gas-fee/)
- [การแทนที่ธุรกรรมใน mempool](/th/crypto/mempool-replacement/)
- [MEV](/th/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/th/crypto/mempool/index.mdx
