﻿---
title: "วิธีแก้ “replacement transaction underpriced”"
description: "ข้อผิดพลาด RPC นี้หมายถึงธุรกรรมจากผู้ส่งและ 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.

# วิธีแก้ “replacement transaction underpriced”

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

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

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

`replacement transaction underpriced` คือการปฏิเสธจาก RPC หรือพูลธุรกรรม ไม่ใช่การ revert ของสัญญา EVM โดยทั่วไปโหนดรู้จักธุรกรรมจากผู้ส่งเดียวกันที่ใช้ nonce เดียวกันอยู่แล้ว แต่ธุรกรรมใหม่ไม่ได้เพิ่มช่องค่าธรรมเนียมมากพอที่จะผ่านนโยบายการแทนที่ของโหนดนั้น

ตรวจสอบเชน ผู้ส่ง nonce และสถานะของแฮชทั้งหมดที่ทราบก่อน หากธุรกรรมเดิมยัง pending และต้องการแทนที่ ให้ใช้ nonce เดิมทุกประการและเพิ่มค่าธรรมเนียมตามนโยบายกระเป๋าหรือโหนด การเพิ่มเพียง `gasLimit` เปลี่ยน slippage หรือส่งธุรกรรมที่ลงนามเดิมซ้ำ ไม่ผ่านกฎการเพิ่มค่าธรรมเนียม

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

## กลไกการทำงาน

1. **Nonce ระบุตำแหน่งธุรกรรม** ธุรกรรมจากบัญชีภายนอกใช้ nonce ตามลำดับ หากโหนดมีธุรกรรมของผู้ส่งที่ nonce นั้นแล้ว ธุรกรรมอื่นในตำแหน่งเดียวกันจะเป็นตัวเลือกแทนที่ nonce ที่ตามมาอาจอยู่ในคิวจนกว่ารายการก่อนหน้าจะถูกบรรจุหรือแก้ไข
2. **การแทนที่เป็นนโยบายของพูลในแต่ละโหนด** ฉันทามติ Ethereum ไม่กำหนดเปอร์เซ็นต์ร่วมกัน ไคลเอนต์ ผู้ให้บริการ RPC และรีเลย์ส่วนตัวอาจใช้กฎหรือเห็นธุรกรรม pending ต่างกัน legacy pool ของ Geth ใช้ `10%` เป็นค่าเริ่มต้นในปัจจุบัน แต่ผู้ดูแลปรับได้และไคลเอนต์อื่นไม่จำเป็นต้องเหมือนกัน
3. **EIP-1559 มีเพดานค่าธรรมเนียมสองค่า** `maxPriorityFeePerGas` จำกัดทิปผู้ตรวจสอบ และ `maxFeePerGas` จำกัดราคารวมต่อ gas รวม base fee ใน legacy pool ของ Geth ค่า fee cap และ tip cap ใหม่ต้องสูงกว่าค่าเดิมและผ่านเกณฑ์เปอร์เซ็นต์ที่ตั้งไว้ กระเป๋าควรคำนวณทั้งสองค่า
4. **พูลยอมรับไม่เท่ากับยืนยัน** โหนดหนึ่งอาจรับธุรกรรมแทนที่ แต่อีกโหนดยังเก็บธุรกรรมเดิม มีเพียงหนึ่งธุรกรรมจากผู้ส่งและ nonce นั้นที่เข้าสู่ลำดับ canonical ตัวเลือกที่ถูกต้องซึ่งถูกบรรจุก่อนทำให้รายการอื่นใช้ไม่ได้บนเชนนั้น แม้หน้าจออาจอัปเดตช้า
5. **เพดานกับจำนวนที่จ่ายต่างกัน** ราคา gas ที่มีผลของ EIP-1559 ถูกจำกัดด้วย fee cap และ gas ที่ไม่ใช้ไม่ถูกคิดเงิน การเพิ่ม `maxFeePerGas` เพิ่มความเสี่ยงสูงสุด ไม่จำเป็นต้องเพิ่มราคาสุดท้าย แต่เพดานสูงอาจถูกจ่ายหาก base fee และทิปต้องการ

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

## ขั้นตอนแก้ไขและตัวอย่าง

สมมติ nonce คือ `42`, `maxFeePerGas = 30 gwei` และ `maxPriorityFeePerGas = 2 gwei` โหนดที่กำหนด `10%` อาจปฏิเสธ `31 gwei` และ `2.1 gwei` ส่วน `35 gwei` และ `2.5 gwei` ผ่านเกณฑ์ตัวอย่างนี้ ธุรกรรมยังอาจรอหาก base fee ทำให้ทิปที่มีผลภายใต้ fee cap `35 gwei` ต่ำเกินไป เปอร์เซ็นต์นี้เป็นตัวอย่าง ไม่ใช่การรับประกันทั้งเครือข่าย

ดำเนินการตามลำดับนี้:

1. ตรวจสอบเครือข่ายและผู้ส่งให้ถูกต้อง ค้นหาแฮชเดิมและแฮชแทนที่ทั้งหมดผ่านกระเป๋า รวมถึง RPC หรือ block explorer อิสระ
2. เปรียบเทียบจำนวนธุรกรรมที่ยืนยันแล้วกับมุมมอง pending หาก nonce `42` ยืนยันแล้ว อย่าสร้างธุรกรรมอีกโดยคิดว่ายังรอดำเนินการ
3. ถอดรหัส `to`, `value` และ `data` ของธุรกรรมเดิม สำหรับการเร่งให้คงการดำเนินการและ nonce เดิม สำหรับการยกเลิก กระเป๋ามักส่ง `0 ETH` กลับหาผู้ส่งด้วย nonce เดิม ซึ่งเป็นการแทนที่ที่แข่งขันกัน ไม่ใช่การเรียกคืนระดับโปรโตคอล
4. ใช้ฟังก์ชันเร่งหรือยกเลิกของกระเป๋าเมื่อทำได้ มิฉะนั้นให้ดูนโยบายและประมาณค่าธรรมเนียมปัจจุบัน เพิ่มเพดาน EIP-1559 ทั้งสองโดยเผื่อการปัดเศษ และยืนยันว่าบัญชีรองรับ `value + gasLimit x maxFeePerGas`
5. ตรวจสอบธุรกรรมทั้งหมดก่อนลงนาม ส่งครั้งเดียว เก็บทุกแฮช และติดตาม receipt ของตัวเลือกทั้งหมด แฮช pending ไม่มี receipt; receipt ที่ผูกกับเชนและบล็อกที่ถูกต้องคือจุดยืนยันการดำเนินการ

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

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

- การยกเลิกไม่รับประกัน ธุรกรรมเดิมอาจถูกบรรจุก่อน และธุรกรรมส่วนตัวหรือแพร่กระจายน้อยอาจมองไม่เห็นจาก RPC ที่ตรวจสอบ
- nonce ผิดอาจสร้างการชำระเงินหรือการเรียกสัญญาใหม่ การลงนาม calldata เก่าอีกครั้งอาจดำเนินการเมื่อราคา allowance กำหนดเวลา หรือสถานะโปรโตคอลเปลี่ยนแล้ว
- endpoint หนึ่งอาจรับรายการแทนที่ แต่อีกแห่งปฏิเสธ การสลับ RPC ซ้ำอาจทิ้งตัวเลือกไว้ในพูลต่างกันและทำให้หน้าจอกระเป๋าสับสน
- การเพิ่ม `gasLimit` ไม่เพิ่มลำดับความสำคัญ การเพิ่มเพดานโดยไม่ตรวจสอบเพิ่มต้นทุนสูงสุด ส่วนการเปลี่ยน slippage หรือ calldata เปลี่ยนความหมายการดำเนินการแต่ไม่แก้กฎพูล
- ธุรกรรม blob, user operation ของ account abstraction, L2 และรีเลย์ส่วนตัวอาจใช้พูลและกฎต่างกัน อย่าสมมติว่านโยบายธุรกรรม EVM ปกติของ Geth ใช้กับรายการเหล่านี้

หยุดหากไม่รู้จักผู้ส่งหรือ nonce, ถอดรหัส calldata ไม่ได้, ธุรกรรมอาจยืนยันแล้ว, กระเป๋าเสนอผู้รับหรือมูลค่าต่างไป หรือ RPC ขอ seed phrase หรือ private key การแก้ปัญหาที่ถูกต้องไม่ต้องเปิดเผยข้อมูลลับสำหรับกู้คืน

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

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

- **“บัญชีมีเงินไม่พอ”** เงินไม่พอเป็นข้อผิดพลาดอีกชนิด ข้อความนี้กล่าวถึงธุรกรรมคู่แข่งและราคาที่ใช้แทนที่
- **“เพิ่ม 10% ใช้ได้เสมอ”** นี่เป็นค่าเริ่มต้นทั่วไปของ Geth ไม่ใช่กฎฉันทามติ การตั้งค่า ไคลเอนต์ ชนิดธุรกรรม และการปัดเศษอาจต้องการมากกว่า
- **“ธุรกรรมที่แพงกว่าแทนที่รายการเดิมทุกที่แล้ว”** พูลเป็นข้อมูลท้องถิ่น การยอมรับของ RPC หนึ่งแห่งไม่ลบรายการเดิมจากทุกพูลหรือรับประกันลำดับ
- **“การยกเลิกย้อนธุรกรรมที่ยืนยันแล้ว”** ไม่จริง การยกเลิกแข่งขันได้เฉพาะตอน nonce ยังไม่คลี่คลาย การเปลี่ยนสถานะที่ยืนยันแล้วต้องใช้วิธีระดับแอปพลิเคชันหากมี

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

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

- [ค่าธรรมเนียม Gas](/th/crypto/gas-fee/)
- [Base fee ของ EIP-1559](/th/crypto/eip1559-base-fee/)
- [การแทนที่ธุรกรรม](/th/crypto/mempool-replacement/)
- [Nonce](/th/crypto/nonce-crypto/)
- [ค่าธรรมเนียมลำดับความสำคัญ](/th/crypto/priority-fee/)

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

## แหล่งข้อมูล

- [ธุรกรรม](https://ethereum.org/developers/docs/transactions/) - ethereum.org (เข้าถึง: 2026-08-21)
- [EIP-1559: การเปลี่ยนแปลงตลาดค่าธรรมเนียมของเชน ETH 1.0](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals (เข้าถึง: 2026-08-21)
- [ตรรกะการแทนที่ของ legacy pool ใน go-ethereum](https://github.com/ethereum/go-ethereum/blob/master/core/txpool/legacypool/list.go) - go-ethereum (เข้าถึง: 2026-08-21)
- [เนมสเปซ txpool](https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-txpool) - go-ethereum (เข้าถึง: 2026-08-21)

Source: https://wiki.fcontext.com/th/crypto/replacement-transaction-underpriced/index.mdx
