จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้
คำตอบโดยตรง
การแทนที่ธุรกรรม Ethereum เป็นนโยบายภายในของพูลธุรกรรม ซึ่งโหนดอาจเลือกธุรกรรมที่ลงนามใหม่เหนือธุรกรรมตัวเลือกอื่นจากผู้ส่งเดียวกันและมี nonce เดียวกัน กลไกนี้ไม่ใช่สวิตช์ Replace-by-Fee ระดับฉันทามติที่ใช้ร่วมกันทั้งเครือข่าย การที่โหนดหนึ่งยอมรับแฮชใหม่ไม่ได้ลบธุรกรรมเดิมที่ลงนามแล้วออกจากโหนดอื่น รีเลย์ส่วนตัว หรือข้อมูลขาเข้าของผู้สร้างบล็อก การบรรจุในเชนมาตรฐานเท่านั้นที่ตัดสินว่าธุรกรรมตัวเลือกใดใช้ nonce ของบัญชี
คำสั่งเร่งธุรกรรมของกระเป๋าสินทรัพย์ดิจิทัลมักคงปลายทาง มูลค่า และ calldata เดิมไว้พร้อมเพิ่มช่องค่าธรรมเนียม ส่วนคำสั่งยกเลิกผ่านพูลสาธารณะมักสร้างธุรกรรมมูลค่าศูนย์ที่ส่งกลับหาตนเอง โดยใช้ผู้ส่งและ nonce เดียวกัน นี่คือธุรกรรมคู่แข่ง ไม่ใช่คำสั่งย้อนกลับ หากธุรกรรมเดิมถูกบรรจุก่อน การโอนหรือการเรียกสัญญาจะไม่ถูกย้อนคืน ช่องทางส่วนตัวของแต่ละผลิตภัณฑ์อาจมี API ยกเลิกต่างกัน เช่น Flashbots Protect ระบุการยกเลิกเพื่อยืนยันตัวตนซึ่งไม่ถูกบันทึกบนเชน จึงห้ามนำไปเหมารวมกับการแทนที่ธุรกรรม Ethereum ผ่านพูลสาธารณะ
กลไกการทำงาน
- ระบุลำดับธุรกรรมทั้งหมดให้แน่นอน ได้แก่ chain ID ไคลเอนต์และเวอร์ชัน บล็อกส่วนหัวและค่าธรรมเนียมฐาน ช่องทางส่ง ผู้ส่ง nonce ของบัญชีในเชนมาตรฐาน ไบต์ดิบที่ลงนามของธุรกรรมเดิม แฮช และประเภทธุรกรรม ตรวจสอบมุมมองสาธารณะหรือส่วนตัวที่เกี่ยวข้องหลายแห่ง เพราะป้ายสถานะในกระเป๋าสินทรัพย์ดิจิทัลหรือคำตอบ RPC แห่งเดียวไม่ใช่สถานะของทั้งเครือข่าย
- จำแนกธุรกรรมเดิมให้ถูกต้องว่า ถูกปฏิเสธ รออยู่ภายในโหนด อยู่ในคิวเพราะมีช่องว่างของ nonce ถูกทิ้งหรือขับออก ส่งผ่านช่องทางส่วนตัว บรรจุและสำเร็จ บรรจุพร้อม
status = 0ถูกนำออกจากการจัดระเบียบเชนใหม่ หรือเข้าสู่ภาวะสิ้นสุดแล้ว เมื่อ nonce ถูกใช้ในเชนมาตรฐานต้องหยุดถือว่ายังแทนที่ได้ แม้การจัดระเบียบเชนใหม่อาจเปิดการแข่งขันอีกครั้ง - กำหนดเจตนาใหม่ การเร่งธุรกรรมต้องทำซ้ำช่องข้อมูลที่กำหนดความหมายทั้งหมด ส่วนการพยายามยกเลิกผ่านพูลสาธารณะมักใช้ผู้ส่งและ nonce เดิม พร้อม
to = sender,value = 0และ calldata ว่าง ก่อนลงนามให้เปรียบเทียบ chain ID ประเภท ปลายทาง มูลค่า calldata รายการเข้าถึง เพดาน gas แฮช blob และการมอบอำนาจ - อ่านนโยบายแทนที่จริงของโหนดเป้าหมาย ธุรกรรมแบบดั้งเดิมและประเภท 1 ใช้
gasPrice; ประเภท 2 มีmaxFeePerGasและmaxPriorityFeePerGas; ประเภท 3 ยังมีmaxFeePerBlobGasและต้องมี sidecar ค่าตั้งต้นปัจจุบันของ Geth คือtxpool.pricebump = 10สำหรับพูลทั่วไปและblobpool.pricebump = 100สำหรับพูล blob ซึ่งเป็นเพียงตัวอย่างการตั้งค่า Geth ไม่ใช่ค่าคงที่ของ Ethereum ทั้งเครือข่าย - คำนวณคุณสมบัติในการบรรจุและเงินทุนแยกจากอัตราเพิ่ม สำหรับประเภท 2 ราคาจริงคือ
min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)ธุรกรรมตัวเลือกยังต้องมีการเข้ารหัสที่ถูกต้อง มี gas ขั้นต่ำตามธุรกรรมเพียงพอ และมียอดคงเหลือครอบคลุมมูลค่ารวมถึงภาระค่าธรรมเนียมสูงสุด เพดานที่สูงขึ้นไม่แก้ calldata ที่ไม่ถูกต้องและไม่รับประกันว่า EVM จะทำงานสำเร็จ - ส่งอย่างรอบคอบและเก็บคำตอบทั้งหมด การเผยแพร่ซ้ำต่อสาธารณะอาจเปิดเผยเจตนาและสร้างความเสี่ยง MEV ส่วนรีเลย์ส่วนตัวมีขอบเขตการมองเห็น วิธีการยกเลิก การครอบคลุมผู้สร้างบล็อก และความพร้อมใช้งานของตนเอง ติดตามแฮชเดิมและแฮชใหม่ในทุกช่องทางโดยไม่สรุปว่าการยอมรับภายในโหนดได้ลบคู่แข่ง และอย่าส่งธุรกรรมตัวเลือกที่สามซึ่งมีการโอนมูลค่าโดยไม่ตรวจสอบ
- กระทบยอดธุรกรรมที่ชนะกับเชนมาตรฐาน ตรวจสอบบล็อกและแฮชของใบรับธุรกรรม ดัชนีธุรกรรม
statusgas ที่ใช้ ราคาค่า gas จริง บันทึกเหตุการณ์ nonce ของผู้ส่ง ยอดคงเหลือ และสถานะสัญญาที่ระดับภาวะสิ้นสุดตามต้องการ บันทึกแฮชที่แพ้ว่าแทนที่ ถูกทิ้ง หรือยังตรวจพบตามหลักฐาน และเริ่มวิเคราะห์ใหม่หลังการจัดระเบียบเชนใหม่
ตัวอย่างคำนวณ
- ตัวอย่างการเพิ่มค่าธรรมเนียมสำหรับประเภท 2 ทั่วไป. ธุรกรรมตัวเลือกเดิมมี
maxFeePerGas = 40 gweiและmaxPriorityFeePerGas = 2 gweiภายใต้การตั้งค่า Geth เพื่อการเรียนรู้ที่เพิ่ม10%เกณฑ์คำนวณคือ44 gweiและ2.2 gweiธุรกรรมที่44/2.1 gweiไม่ถึงเกณฑ์ทิป ส่วน44/2.2 gweiถึงเกณฑ์ทั้งสอง เมื่อค่าธรรมเนียมฐานเป็น32 gweiและใช้ gas21,000ราคาจริงคือ34.2 gweiค่าธรรมเนียมรวมคือ718,200 gwei = 0.0007182 ETHส่วนที่เผาคือ0.000672 ETHและทิปคือ0.0000462 ETHการยอมรับจริงขึ้นอยู่กับการติดตั้ง เวอร์ชัน และการปัดเศษจำนวนเต็มหน่วย wei - ความไวต่อค่าธรรมเนียมฐาน. ธุรกรรมแทนที่มีเพดาน
66/4.4 gweiเมื่อค่าธรรมเนียมฐานเป็น60 gweiราคาจริงคือmin(66, 60 + 4.4) = 64.4 gweiเมื่อค่าธรรมเนียมฐานเป็น65 gweiราคาจริงเป็น66 gweiและทิปจริงเหลือเพียง1 gweiเมื่อค่าธรรมเนียมฐานเป็น67 gweiจะได้66 < 67ธุรกรรมจึงไม่มีคุณสมบัติภายใต้เพดานนี้ แม้จะผ่านเกณฑ์เพิ่มค่าธรรมเนียมภายในโหนด - การแข่งขันเพื่อยกเลิก. ธุรกรรมเดิมที่มี nonce
20ส่ง5 ETHให้ร้านค้า หากธุรกรรมเดิมชนะด้วยค่าธรรมเนียม21,000 * 42 gwei = 0.000882 ETHร้านค้าจะได้รับ5 ETHและธุรกรรมยกเลิกจะมี nonce ต่ำเกินไป หากธุรกรรมมูลค่าศูนย์ที่ส่งหาตนเองชนะด้วยค่าธรรมเนียม21,000 * 45 gwei = 0.000945 ETHธุรกรรมนั้นจะใช้ nonce20และกันไม่ให้ธุรกรรมเดิมเข้าสู่ประวัติเชนมาตรฐานเดียวกันในภายหลัง การคลิกปุ่มยกเลิกเพียงอย่างเดียวไม่อาจบอกผลลัพธ์ได้ - ขอบเขตของพูล blob. ธุรกรรมตัวเลือกเดิมประเภท 3 มีเพดานค่าธรรมเนียมดำเนินการ
100 gweiเพดานทิป3 gweiและเพดานค่าธรรมเนียม blob20 gweiภายใต้การตั้งค่าพูล blob ของ Geth เพื่อการเรียนรู้ที่เพิ่ม100%เกณฑ์คำนวณคือ200/6/40 gweiธุรกรรมที่200/6/39 gweiไม่ถึงเพดาน blob ส่วน200/6/40 gweiถึงเกณฑ์ทั้งสาม แต่ยังต้องมี sidecar, nonce, ยอดคงเหลือ และการยอมรับเข้าพูลที่ถูกต้อง ตัวเลขเหล่านี้ไม่ใช่กฎสำหรับธุรกรรมทั่วไปหรือไคลเอนต์อื่น
ความเสี่ยง
- เลือก chain ID หรือเครือข่ายผิด
- เลือกผู้ส่งหรือ nonce ของบัญชีผิด
- ใช้บล็อกส่วนหัว ค่าธรรมเนียมฐาน หรือ nonce มาตรฐานที่ล้าสมัย
- พยายามแทนที่หลังธุรกรรมเดิมถูกบรรจุหรือเข้าสู่ภาวะสิ้นสุด
- นำกฎ txpool ทั่วไปไปใช้กับ
UserOperationของ ERC-4337 - สมมติว่าไคลเอนต์ ผู้ให้บริการ เวอร์ชัน หรือการตั้งค่าอื่นใช้นโยบายเดียวกัน
- เพิ่มไม่ถึงเกณฑ์เพราะการปัดเศษจำนวนเต็มหน่วย wei
- เพิ่มช่องค่าธรรมเนียม EIP-1559 ที่จำเป็นเพียงช่องเดียว
- ตั้ง
maxFeePerGasต่ำกว่าค่าธรรมเนียมฐานของบล็อกตัวเลือก - ละเลยเพดานค่าธรรมเนียม blob, sidecar หรือกฎเฉพาะของพูล blob
- ยอดคงเหลือไม่พอสำหรับมูลค่าและค่าธรรมเนียมสูงสุดที่อนุญาต
- ลายเซ็น ประเภท การเข้ารหัส gas ขั้นต่ำ หรือโดเมนเชนไม่ถูกต้อง
- เปลี่ยนปลายทาง มูลค่า calldata รายการเข้าถึง หรือแฮช blob โดยไม่ตั้งใจ
- ธุรกรรมยกเลิกสาธารณะแพ้การแข่งขันเพื่อบรรจุ
- ธุรกรรมเดิมยังอยู่ในโหนดอื่นหรือข้อมูลขาเข้าของผู้สร้างบล็อก
- รีเลย์ส่วนตัวเปิดเผย ตรวจพิจารณา ทิ้ง หรือยกเลิกการส่งไม่สำเร็จ
- การเผยแพร่ซ้ำต่อสาธารณะเปิดเผยเจตนาแก่การแซงหน้า การโจมตีแบบประกบ หรือ MEV รูปแบบอื่น
- ช่องว่างของ nonce กีดขวางธุรกรรมถัดไปหรือทำให้เกิดการโอนซ้ำ
- ธุรกรรมแทนที่ถูกบรรจุแต่ย้อนกลับหรือ gas หมด พร้อมทั้งใช้ nonce และค่าธรรมเนียม
- ข้อผิดพลาดด้านการจัดระเบียบเชนใหม่ ภาวะสิ้นสุด หรือลำดับใบรับธุรกรรม ทำให้ธุรกรรมตัวเลือกกลับมาหรือถูกจำแนกผิด
ความเข้าใจผิดที่พบบ่อย
- ธุรกรรมตัวเลือกที่มีค่าธรรมเนียมสูงกว่าจะลบธุรกรรมเดิมทั่วทั้งเครือข่าย
- ธุรกรรมใดๆ ที่มีเลข nonce เท่ากันจะแทนที่กัน แม้มาจากคนละผู้ส่ง
- ปุ่มยกเลิกในกระเป๋าสินทรัพย์ดิจิทัลย้อนคืนธุรกรรมที่ถูกบรรจุแล้ว
- โหนดหนึ่งยอมรับธุรกรรมแทนที่หมายความว่าผู้สร้างบล็อกจะบรรจุธุรกรรมนั้น
- กฎเพิ่ม 10% แบบสากลครอบคลุมทุกไคลเอนต์ ธุรกรรม blob รีเลย์ส่วนตัว และ
UserOperation
หัวข้อที่เกี่ยวข้อง
แหล่งข้อมูล
- 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)
- eth_sendRawTransaction - Ethereum Execution APIs (เข้าถึงเมื่อ: 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)
- Cancellations - Flashbots Documentation (เข้าถึงเมื่อ: 2026-08-13)