﻿---
title: "Gas และค่าธรรมเนียมธุรกรรม"
description: "คู่มือที่คำนึงถึง fork สำหรับหน่วย Gas ต้นทุนพื้นฐานและต้นทุนดำเนินการ เพดานค่าธรรมเนียม EIP-1559 การเผา base fee, priority fee, REVERT, Gas หมด, refund, blob gas และองค์ประกอบค่าธรรมเนียม L2"
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.

# Gas และค่าธรรมเนียมธุรกรรม

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

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

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

Gas คือหน่วยบัญชีของโปรโตคอลสำหรับงานดำเนินการและการเข้าถึง state ส่วนค่าธรรมเนียม Gas คือจำนวนเงินที่คำนวณจากหน่วย Gas ที่ถูกคิดค่าบริการคูณด้วยราคาต่อหน่วย บน Ethereum ที่ใช้ EIP-1559 มี `effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)` ค่าธรรมเนียมดำเนินการเท่ากับ `gasUsed * effectiveGasPrice` ส่วน base fee จะถูกเผา และส่วน priority fee จะจ่ายผ่านเส้นทางผู้รับค่าธรรมเนียมของบล็อก gas limit และเพดานค่าธรรมเนียมเป็นการอนุมัติค่าสูงสุด ไม่ใช่จำนวนที่ต้องจ่ายโดยอัตโนมัติ

ปริมาณ Gas ที่ใช้จริงขึ้นอยู่กับ calldata, เส้นทาง opcode, การขยายหน่วยความจำ, การเข้าถึง state แบบ cold และ warm, การเปลี่ยน storage, การเรียกซ้อน, precompile, ผลสำเร็จหรือความล้มเหลว, refund และ fork ที่ใช้งานอยู่ ราคาที่สูงขึ้นอาจเพิ่มความสามารถในการแข่งขันเพื่อบรรจุธุรกรรม แต่แก้ REVERT, gas limit ไม่พอ, สัญญาที่เป็นอันตราย, ราคาเสนอที่ล้าสมัย หรือ calldata ผิดไม่ได้ ธุรกรรม blob และ L2 หลายระบบยังมีค่าธรรมเนียมข้อมูลหรือโปรโตคอลแยกต่างหากซึ่งไม่ควรถือรวมเป็น Gas ของ EVM โดยอัตโนมัติ

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

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

1. ระบุเชน, fork, บล็อกหรือ state tag, ประเภทธุรกรรม, ผู้ส่ง, nonce, ปลายทาง, value, calldata, access list, ช่อง blob, สินทรัพย์ที่ใช้จ่าย Gas และสกุลค่าธรรมเนียมให้ชัดเจน บันทึกว่าราคาเสนอหมายถึงธุรกรรม L1, การดำเนินการ L2, การเผยแพร่ข้อมูล, การถอน หรือเส้นทางแบบประกอบ
2. สร้าง intrinsic gas ก่อนดำเนินการใหม่จาก transaction envelope, ต้นทุนไบต์ calldata, ค่าการสร้างสัญญาและ access list และ overhead เฉพาะประเภท หาก gas limit ต่ำกว่า intrinsic gas หรือผู้ส่งไม่ผ่านการตรวจสอบต้นทุนสูงสุดของโปรโตคอล ธุรกรรมจะถูกปฏิเสธก่อนการดำเนินการที่บรรจุในบล็อก ไม่ใช่ถูกบรรจุแล้วจึงย้อนกลับ
3. ติดตามการดำเนินการตาม fork เป้าหมาย วัดต้นทุนแบบเปลี่ยนแปลงของ opcode, การขยายหน่วยความจำ, บัญชีหรือช่อง storage แบบ cold และ warm, `SSTORE`, การส่งต่อ Gas ให้การเรียก, การโอน value, ค่า precompile, log และ refund ฟังก์ชัน ABI เดียวกันอาจวิ่งคนละแขนงและใช้ Gas ต่างกันเมื่อ state ต่างกัน
4. แยกผลลัพธ์ออกจากกัน การดำเนินการสำเร็จจะยืนยันผลของมัน `REVERT` จะย้อนผลในขอบเขตที่ล้มเหลวและอาจคืน Gas ที่เหลือใน call frame ส่วนการหยุดแบบผิดปกติเพราะ Gas หมดมักใช้ Gas ที่ให้แก่ frame นั้นทั้งหมด ความล้มเหลวระดับบนสุดที่ถูกบรรจุยังใช้ nonce ของธุรกรรมและเสียค่าธรรมเนียม Gas แม้ state ของสัญญา การโอน value และ log จะถูกย้อนกลับ
5. คำนวณราคาของ Gas สำหรับดำเนินการ สำหรับธุรกรรม type 2 ให้คำนวณ effective gas price จาก base fee, เพดาน priority fee และเพดานรวม แล้วแยก Gas ที่คิดค่าบริการเป็น base fee ที่ถูกเผากับ priority fee แยก Gas ที่ไม่ได้ใช้และส่วนเพดานค่าธรรมเนียมที่ไม่ได้จ่ายออกจาก gas refund ของโปรโตคอลซึ่งเกิดจากการล้าง state ที่เข้าเกณฑ์และถูกจำกัดด้วย refund cap ที่ใช้งานอยู่
6. คำนวณตลาดค่าธรรมเนียมอื่นแยกต่างหาก ธุรกรรม blob จ่ายค่า Gas สำหรับดำเนินการบวก `blobGasUsed * blobGasPrice` ภายใต้ `maxFeePerBlobGas` โดย blob base fee มีเส้นทางปรับราคาแยกต่างหาก ค่าธรรมเนียมผู้ใช้ L2 อาจรวมการดำเนินการ L2, ค่าข้อมูล L1 ที่บีบอัดหรือค่า blob, ค่าผู้ดำเนินการหรือโปรโตคอล และส่วนเพิ่ม โดยสูตรและตัวคูณขึ้นอยู่กับระบบและการอัปเกรดนั้น
7. กระทบยอดค่าประมาณ การบรรจุ และ receipt ก่อนลงนาม ให้ตรวจยอดคงเหลือเทียบกับ value บวกค่าธรรมเนียมสูงสุดที่อนุมัติ จำลองบน state ที่ระบุ และกำหนดเพดานค่าธรรมเนียมอย่างมีขอบเขต หลังบรรจุ ให้บันทึก gas limit, gas used ใน receipt, effective price, base fee, priority fee, ผลของ refund, blob gas, ช่องค่าธรรมเนียม L2, status และการเปลี่ยนยอดคงเหลือ พร้อมแยกความคลาดเคลื่อนของประมาณการ การแทนที่ และ finality ออกจากกัน

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

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

- **ความสำเร็จของ type 2 และเพดานค่าธรรมเนียม** gas limit คือ `120,000`, gas used คือ `70,000`, base fee คือ `25 gwei`, max priority fee คือ `3 gwei` และ max fee คือ `40 gwei` ดังนั้น effective price คือ `min(40, 25 + 3) = 28 gwei` ค่าธรรมเนียมจริงคือ `70,000 * 28 gwei = 0.001960 ETH` แบ่งเป็น `0.001750 ETH` ที่ถูกเผาและ `0.000210 ETH` เป็น priority fee การอนุมัติค่าดำเนินการสูงสุดคือ `120,000 * 40 gwei = 0.004800 ETH` ส่วน `50,000 gas` ที่ไม่ได้ใช้และส่วนเพดานที่ไม่ได้จ่ายไม่ใช่ refund จากการล้าง state ของโปรโตคอล
- **REVERT เทียบกับ Gas หมด** การเรียกสองรายการที่ถูกบรรจุต่างมี gas limit `100,000` และ effective price `30 gwei` การเรียก A ทำ `REVERT` หลัง gas used ใน receipt ถึง `60,000` จึงเสีย `60,000 * 30 gwei = 0.001800 ETH` การเรียก B ใช้ gas limit ของธุรกรรมหมด จึงเสีย `100,000 * 30 gwei = 0.003000 ETH` ความล้มเหลวระดับบนสุดทั้งสองย้อนผลของสัญญาและใช้ nonce ของผู้ส่ง แต่ REVERT อาจเก็บ Gas ที่เหลือไว้ได้ ในขณะที่ Gas หมดทำไม่ได้
- **เพดาน refund** ในตัวอย่างสอนที่จำกัดตาม fork ของ EIP-3529 การดำเนินการใช้ `100,000 gas` ก่อน refund และสร้าง refund counter `30,000 gas` จำนวน refund สูงสุดที่ใช้ได้คือ `100,000 / 5 = 20,000 gas` จึงคิดค่าบริการจาก `100,000 - 20,000 = 80,000 gas` ที่ `20 gwei` ค่าธรรมเนียมคือ `0.001600 ETH` แทน `0.002000 ETH` ประหยัด `0.000400 ETH` โดยกฎ refund และการดำเนินการที่เข้าเกณฑ์อาจเปลี่ยนตาม fork
- **ตลาดค่าธรรมเนียม blob แยกต่างหาก** ธุรกรรม blob สมมติใช้ Gas สำหรับดำเนินการ `100,000` ที่ `20 gwei` และมี 2 blob เมื่อใช้ `131,072 blob gas/blob` จะมี blob gas used `262,144` และที่ blob gas price `5 gwei` ค่า blob เท่ากับ `262,144 * 5 gwei = 0.00131072 ETH` ค่าดำเนินการคือ `0.002000 ETH` รวมค่าธรรมเนียมโปรโตคอล `0.00331072 ETH` ค่า `5 gwei` เป็นเพียงสมมติฐานของตัวอย่าง และค่า blob ไม่ใช่ priority tip ของ validator หรือค่าธรรมเนียมตลอดเส้นทางทั้งหมดของผู้ใช้ L2

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

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

- ใช้เชน, fork, สินทรัพย์ Gas, ประเภทธุรกรรม หรือสกุลค่าธรรมเนียมผิด
- สับสนระหว่างหน่วย Gas, wei, gwei, ETH และการแปลงเป็นเงินทั่วไป
- ถือว่า gas limit คือค่าธรรมเนียมที่คาดหรือค่าจริง
- ไม่ผ่านการตรวจ intrinsic gas หรือต้นทุนสูงสุดก่อนดำเนินการ
- พึ่งค่าประมาณเก่าหลัง state, base fee หรือ calldata เปลี่ยน
- ตั้ง gas limit ต่ำกว่าที่แขนงดำเนินการจริงต้องใช้
- คิดว่าราคา Gas สูงขึ้นสามารถป้องกัน REVERT ของสัญญาได้
- สับสนระหว่าง REVERT, Gas หมด, opcode ไม่ถูกต้อง และการปฏิเสธก่อนดำเนินการ
- ไม่พบความล้มเหลวของ child call ที่ถูกจัดการ แม้ status ระดับบนสุดเป็น `1`
- คิดราคาการเข้าถึง state แบบ cold และ warm ผิด หรือใช้ access list ไม่ครบ
- ละเลยการขยายหน่วยความจำ การส่งต่อ Gas, precompile หรือค่า log
- ใช้กฎ refund ของ storage ที่ล้าสมัยหรือเกิน refund cap
- ถือว่า Gas ที่ไม่ได้ใช้หรือส่วนที่เหลือของเพดานค่าธรรมเนียมเป็น gas refund ของโปรโตคอล
- ตั้ง max fee ต่ำกว่า base fee ของบล็อกที่บรรจุ
- จ่าย priority fee มากเกินไปโดยไม่เข้าใจนโยบาย builder หรือ sequencer
- ไม่มีสินทรัพย์ Gas ประจำเชนแม้จะถือสินทรัพย์อื่น
- ละเลย blob gas, blob fee cap หรือค่าธรรมเนียม data availability
- ถือว่าสูตรการดำเนินการ ข้อมูล ตัวคูณ และค่าผู้ดำเนินการของ L2 หนึ่งใช้ได้กับทุก L2
- ละเลยการแข่งขันของ replacement, nonce, ธุรกรรมที่ถูกทิ้ง และการกันยอดคงเหลือ
- ถือว่าธุรกรรมที่จ่ายเงินหรือสำเร็จเป็นหลักฐานว่าสัญญาปลอดภัยหรือมี finality

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

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

- Gas คิดเป็นร้อยละของ value ที่โอน
- การเพิ่ม gas limit ทำให้จำนวนที่ถูกเรียกเก็บเพิ่มขึ้นเสมอ
- max fee หรือ priority fee ที่สูงรับประกันว่าการดำเนินการจะสำเร็จ
- การอนุมัติที่ไม่ได้ใช้ทั้งหมดกับ refund จากการล้าง state เป็นกลไกเดียวกัน
- ค่าธรรมเนียม L2 เท่ากับ Gas ของ EVM ในระบบเท่านั้น และ blob gas คือ Gas สำหรับดำเนินการทั่วไป

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

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

- [ค่า blob และต้นทุน rollup](/th/crypto/blob-fee-rollup-cost/)
- [Ethereum Virtual Machine](/th/crypto/evm/)
- [การจำลองธุรกรรม](/th/crypto/transaction-simulation/)

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

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

- [Ethereum gas and fees: technical overview](https://ethereum.org/developers/docs/gas/) - Ethereum.org (เข้าถึง: 2026-08-12)
- [Transactions](https://ethereum.org/developers/docs/transactions/) - Ethereum.org (เข้าถึง: 2026-08-12)
- [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals (เข้าถึง: 2026-08-12)
- [EIP-2929: Gas cost increases for state access opcodes](https://eips.ethereum.org/EIPS/eip-2929) - Ethereum Improvement Proposals (เข้าถึง: 2026-08-12)
- [EIP-3529: Reduction in refunds](https://eips.ethereum.org/EIPS/eip-3529) - Ethereum Improvement Proposals (เข้าถึง: 2026-08-12)
- [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) - Ethereum Improvement Proposals (เข้าถึง: 2026-08-12)
- [Execution Engine](https://specs.optimism.io/protocol/exec-engine.html) - OP Stack Specification (เข้าถึง: 2026-08-12)
- [Transaction fees on OP Mainnet](https://docs.optimism.io/op-stack/transactions/fees) - Optimism Documentation (เข้าถึง: 2026-08-12)

Source: https://wiki.fcontext.com/th/crypto/gas-fee/index.mdx
