โอนเหรียญบน Solana แล้วค้างเฉยๆ ไม่ขึ้นว่าสำเร็จหรือพัง? หรือกด Swap ตอนเหรียญใหม่ปล่อยแล้วธุรกรรมหลุดไปเฉยๆ ไม่มีใครรับผิดชอบ? อาการนี้ไม่ใช่บั๊ก — Solana ไม่มี “ค้างรอ” แบบ Bitcoin หรือ Ethereum ธุรกรรมของคุณมีเวลาไม่ถึง 1 นาทีให้ไปถึงมือ validator ก่อนจะหมดอายุและหายไปตลอดกาล บทความนี้สอนอ่านค่าธรรมเนียม 2 ชั้นของ Solana (Priority Fee + Compute Unit) ตั้งค่าเองใน Phantom และแก้ปัญหาธุรกรรมล้มเหลวตอนเครือข่ายแน่น
📑 สารบัญ
- ทำไม Solana ไม่มีธุรกรรม “ค้าง” แบบ Ethereum
- ค่าธรรมเนียม Solana มี 2 ชั้น ไม่ใช่ชั้นเดียว
- Compute Unit คืออะไร ทำไมธุรกรรมถึงล้มเหลวได้
- ตั้งค่า Priority Fee บน Phantom ทีละขั้น
- ธุรกรรมล้มเหลว/หมดอายุ แก้ยังไง (ไม่มี Speed Up/Cancel)
- ตารางเทียบ Solana vs Ethereum เวลาธุรกรรมมีปัญหา
- 6 กับดักที่คนตั้ง Priority Fee ผิดบ่อย
- เช็กลิสต์ก่อนกดยืนยันธุรกรรมสำคัญ
- คำถามที่พบบ่อย
ทำไม Solana ไม่มีธุรกรรม “ค้าง” แบบ Ethereum
บน Ethereum ถ้าตั้งค่าแก๊สต่ำไป ธุรกรรมจะไปนอนรอใน mempool ได้เป็นชั่วโมงหรือเป็นวัน รอจนกว่าจะมีคนกด Speed Up เพิ่มค่าแก๊สให้ หรือ Cancel ทิ้ง — มันยัง “อยู่” ในระบบ
Solana ออกแบบมาคนละแบบ เครือข่ายไม่มี mempool แบบดั้งเดิมที่เก็บธุรกรรมรอเป็นคิวยาวๆ ธุรกรรมทุกอันต้องแนบ “recent blockhash” ไปด้วย ซึ่งทำหน้าที่เป็นทั้งตราประทับเวลาและตัวกันส่งซ้ำ บล็อกแฮชนี้มีอายุใช้งานประมาณ 150 สล็อต หรือราว 60-90 วินาทีเท่านั้น ถ้าธุรกรรมไปไม่ถึงและไม่ถูกจัดเข้าบล็อกภายในเวลานี้ ระบบจะ “ทิ้ง” ธุรกรรมนั้นไปเลย ไม่ใช่พักรอ
สาเหตุหลักที่ทำให้ธุรกรรม Solana ล้มเหลวมี 3 อย่าง: (1) blockhash หมดอายุก่อนธุรกรรมไปถึง validator (2) ธุรกรรมใช้ Compute Unit เกินกว่าที่ตั้งไว้ (3) ธุรกรรมถูกธุรกรรมอื่นที่จ่าย Priority Fee สูงกว่าแซงคิวในช่วงเครือข่ายแน่น — ทั้งสามจุดนี้แก้ได้ด้วยการเข้าใจค่าธรรมเนียม 2 ชั้นด้านล่าง
ค่าธรรมเนียม Solana มี 2 ชั้น ไม่ใช่ชั้นเดียว
ทุกธุรกรรมบน Solana จ่ายค่าธรรมเนียมได้สูงสุด 3 ส่วน ตามเอกสารทางการของ Solana Foundation:
| ส่วนประกอบ | คืออะไร | ตัวเลข | เงื่อนไข |
|---|---|---|---|
| Base Fee | ค่าธรรมเนียมพื้นฐานต่อลายเซ็น คงที่เสมอ | 5,000 lamports/ลายเซ็น (~0.000005 SOL) | ครึ่งหนึ่งถูกเผาทิ้ง อีกครึ่งให้ validator |
| Priority Fee | ค่าทิปเสริม จ่ายให้ validator จัดคิวให้เร็วขึ้น | = Compute Unit Limit × Compute Unit Price (ไม่คงที่) | จ่ายให้ validator 100% จำเป็นเฉพาะตอนเครือข่ายแน่น |
| Rent | เงินมัดจำสำหรับสร้างบัญชี/token account ใหม่ | แปรผันตามขนาดข้อมูล | ได้คืนเต็มถ้าปิดบัญชีทิ้งภายหลัง |
Base Fee คงที่เสมอไม่ว่าเครือข่ายจะแน่นแค่ไหน — นี่คือเหตุผลที่ค่าโอน SOL ปกติถูกมากไม่ถึง 1 บาท แต่ Priority Fee ต่างหากที่เป็นตัวตัดสินว่าธุรกรรมของคุณจะเข้าบล็อกทันหรือหลุดคิว โดยเฉพาะตอนมีการ mint NFT ดัง, token launch ใหม่ หรือ DEX ที่คนแห่เข้าพร้อมกัน
Compute Unit คืออะไร ทำไมธุรกรรมถึงล้มเหลวได้
Compute Unit (CU) คือหน่วยวัด “แรงประมวลผล” ที่ธุรกรรมใช้ เหมือน Gas Limit ของ Ethereum แต่ชื่อเรียกต่างกัน ทุกธุรกรรมมีเพดาน CU ที่กำหนดไว้ เรียกว่า Compute Budget — ถ้าใช้เกินเพดาน validator จะหยุดประมวลผลกลางคันและธุรกรรมล้มเหลวทันที (แต่ยังถูกเก็บค่าธรรมเนียมฐานเพราะเข้าไปอยู่ในบล็อกแล้ว ไม่ใช่กรณีหมดอายุที่ไม่เสียเงิน)
| ตัวเลข | ค่า |
|---|---|
| CU เริ่มต้นต่อ 1 instruction | 200,000 CU |
| CU สูงสุดต่อ 1 ธุรกรรม | 1.4 ล้าน CU |
| CU สูงสุดต่อ 1 บล็อก | 100 ล้าน CU (ปรับขึ้นจาก 60 ล้าน 29 ก.ค. 2569) |
| สูตรคำนวณ Priority Fee | (CU Limit × CU Price ไมโครแลมพอร์ต) ÷ 1,000,000 = lamports |
ธุรกรรมง่ายๆ อย่างการโอน SOL ใช้ CU น้อยมาก แต่ธุรกรรมที่มีหลาย instruction ซ้อนกัน เช่น Swap ผ่านหลายพูล, Mint NFT ที่มีการตรวจสอบซับซ้อน หรือเรียกใช้สัญญา DeFi หลายตัวพร้อมกัน จะกินแรงประมวลผลสูงกว่ามาก — ถ้ากระเป๋าตั้ง CU Limit ไว้ต่ำเกินไปแบบไม่รู้ตัว ธุรกรรมจะพังกลางทางและเสียค่าธรรมเนียมฟรีๆ
ตั้งค่า Priority Fee บน Phantom ทีละขั้น
Phantom เป็นกระเป๋า Solana ที่คนไทยใช้เยอะที่สุด และมีระบบ Priority Fee ให้ปรับเองได้ตอนทำธุรกรรมสำคัญ (เช่น Swap ตอนเครือข่ายแน่น หรือรีบแย่งซื้อเหรียญใหม่)
🚩 1. ปล่อยให้ระบบจัดการอัตโนมัติ (ค่าเริ่มต้น แนะนำสำหรับคนทั่วไป)
Phantom ตรวจสภาพเครือข่ายแบบเรียลไทม์และคำนวณ Priority Fee ให้เองในธุรกรรมส่วนใหญ่ โดยไม่ต้องทำอะไรเพิ่ม เหมาะกับการโอนเหรียญทั่วไปที่ไม่รีบ
🚩 2. ปรับเองตอนทำธุรกรรม Swap
เปิดหน้าจอยืนยัน Swap (หน้า Review) มองหาไอคอนตั้งค่า/Network Fee มุมบนของหน้าจอรีวิวธุรกรรม แตะเข้าไปจะเจอตัวเลือกปรับระดับความเร็ว — เลือกระดับที่สูงขึ้นถ้าอยากให้ธุรกรรมแซงคิวช่วงเครือข่ายแน่น หรือกำหนดค่าเองแบบละเอียดถ้าต้องการควบคุมต้นทุนแน่นอน
🚩 3. เข้าใจว่าทำไมบางทีราคาสูงขึ้นมากตอนเหรียญดังเปิดตัว
ช่วงที่มีการเปิดขายเหรียญใหม่หรือ NFT ดัง คนจำนวนมากแย่งยิงธุรกรรมไปที่บัญชี/พูลเดียวกันพร้อมกัน ทำให้ Priority Fee ของบัญชีนั้นพุ่งสูงกว่าสภาพเครือข่ายทั่วไปมาก เป็นปกติของกลไกตลาดค่าธรรมเนียมแบบแยกตามบัญชี ไม่ใช่กระเป๋าเรียกเก็บเกิน
ธุรกรรมล้มเหลว/หมดอายุ แก้ยังไง (ไม่มี Speed Up/Cancel)
จุดที่ทำให้คนที่คุ้นเคยกับ Ethereum งงที่สุดคือ Solana ไม่มีปุ่ม Speed Up หรือ Cancel เพราะธุรกรรมที่หมดอายุไม่ได้ “รออยู่” ที่ไหนให้ไปเร่งต่อ มันหายไปจากระบบแล้ว
เช็คสถานะจริงก่อน
เปิด Solscan หรือ Solana Explorer ใส่ signature ของธุรกรรม ถ้าไม่เจอเลยหรือขึ้น “not found” แปลว่าหมดอายุไปแล้วจริง ไม่ใช่ยังอยู่ระหว่างดำเนินการ
ไม่ต้องรอ ไม่มีค่าธรรมเนียมสูญ
ธุรกรรมที่หมดอายุ/ไม่เคยเข้าบล็อกเลย จะไม่ถูกหักค่าธรรมเนียมใดๆ ทั้งสิ้น (ต่างจากกรณีเข้าบล็อกแล้วแต่ล้มเหลวเพราะ CU ไม่พอ ซึ่งเสียค่าธรรมเนียมฐานไปแล้ว)
ส่งธุรกรรมใหม่ทั้งหมด
สร้างธุรกรรมใหม่พร้อม blockhash ใหม่ล่าสุด ถ้าเป็นช่วงเครือข่ายแน่นให้พิจารณาเพิ่ม Priority Fee ก่อนส่งรอบนี้
เช็คยอดเงินก่อนส่งซ้ำเสมอ
บางครั้งธุรกรรมเข้าบล็อกสำเร็จจริงแต่ UI ของกระเป๋าอัปเดตช้า ก่อนส่งซ้ำให้รีเฟรชยอดคงเหลือหรือเช็ค Explorer ก่อน กันพลาดส่งซ้ำซ้อน
ตารางเทียบ Solana vs Ethereum เวลาธุรกรรมมีปัญหา
| ประเด็น | Solana | Ethereum |
|---|---|---|
| กลไกคุมเวลา | Blockhash หมดอายุใน ~150 สล็อต (60-90 วินาที) | ไม่มีวันหมดอายุ รอใน mempool ได้ตราบเท่าที่ nonce ยังไม่ถูกใช้ |
| ธุรกรรมค้างหมายถึงอะไร | มักแปลว่าหมดอายุ/หลุดไปแล้ว ไม่ใช่รอคิวอยู่ | ยังอยู่ในคิว รอแก๊สเหมาะสมจึงจะถูกหยิบไปทำ |
| วิธีแก้ | ส่งธุรกรรมใหม่ทั้งหมดพร้อม blockhash ใหม่ | Speed Up (nonce เดิม + แก๊สสูงขึ้น) หรือ Cancel |
| ผลกระทบธุรกรรมถัดไป | ไม่กระทบกัน เพราะไม่ใช้ลำดับ nonce แบบ Ethereum | ธุรกรรมที่ nonce ต่ำกว่าค้าง จะบล็อกธุรกรรมอื่นที่ nonce สูงกว่าทั้งหมด |
| ค่าธรรมเนียมถ้าล้มเหลว | หมดอายุ = ไม่เสีย / เข้าบล็อกแต่ CU ไม่พอ = เสียค่าฐาน | ถูก drop จาก mempool = ไม่เสีย / เข้าบล็อกแต่ revert = เสียค่าแก๊สเต็ม |
6 กับดักที่คนตั้ง Priority Fee ผิดบ่อย
💀 ตั้ง Priority Fee สูงสุดทุกครั้งเพราะกลัวธุรกรรมพัง
เปลืองเงินฟรีถ้าเป็นช่วงเครือข่ายโล่ง โอนเหรียญทั่วไประหว่างกระเป๋าเงียบๆ ส่วนใหญ่ไม่ต้องใช้ Priority Fee เลยด้วยซ้ำ
⚠️ คิดว่าตั้งค่าแก๊สสูงแล้วธุรกรรมจะไม่มีวันล้มเหลว
Priority Fee ช่วยแค่เรื่องลำดับคิว ถ้าโปรแกรมที่เรียกใช้มีบั๊กหรือเงื่อนไขไม่ผ่าน ธุรกรรมก็ยังล้มเหลวได้เหมือนเดิม
⚠️ เข้าใจผิดว่าธุรกรรมที่หมดอายุยังรออยู่ แล้วรอเก้อเป็นชั่วโมง
พอ blockhash หมดอายุ มันหายไปแล้วจริงๆ การรอต่อไม่มีประโยชน์ ต้องส่งใหม่เท่านั้น
💀 กดส่งซ้ำรัวๆ โดยไม่เช็คยอดเงินก่อน
ถ้าธุรกรรมแรกเข้าบล็อกจริงแต่ UI อัปเดตช้า การกดซ้ำอาจทำให้โอนซ้ำสองรอบโดยไม่ตั้งใจ
⚠️ ใช้ RPC สาธารณะฟรีตอนรีบมากๆ แล้วแปลกใจว่าทำไมช้า
RPC สาธารณะที่คนใช้พร้อมกันเยอะอาจดีเลย์หรือดรอปธุรกรรมช่วงพีค การันตีความเร็วไม่ได้เท่า RPC ที่มีคุณภาพ
💀 สับสนค่าธรรมเนียมเครือข่าย Solana กับค่าธรรมเนียมถอนของเว็บเทรด
Priority Fee เป็นเรื่องของเครือข่าย Solana เอง ส่วนค่าธรรมเนียมถอน SOL ที่เว็บเทรดไทยเรียกเก็บเป็นค่าดำเนินการของเว็บเทรด คนละก้อนกัน อย่าปนกัน
เช็กลิสต์ก่อนกดยืนยันธุรกรรมสำคัญ
- เช็คว่าเป็นธุรกรรมทั่วไป (ปล่อยอัตโนมัติพอ) หรือธุรกรรมรีบ/สำคัญ (ควรดูค่าธรรมเนียมที่กระเป๋าแสดงก่อนกด)
- อ่านตัวเลขค่าธรรมเนียมรวมที่กระเป๋าโชว์ก่อนยืนยันทุกครั้ง ไม่กดผ่านแบบไม่ดู
- ถ้าเป็นช่วงเหรียญดัง/NFT ฮิตเปิดตัว เตรียมใจว่า Priority Fee อาจพุ่งสูงกว่าปกติมาก
- ถ้าธุรกรรมหาย/ไม่ขึ้นผล ให้เช็ค Solscan ด้วย signature ก่อนตัดสินใจทำอะไรต่อ
- อย่าส่งธุรกรรมซ้ำโดยไม่เช็คยอดคงเหลือก่อน
- ถ้าธุรกรรมช้าเรื้อรังผิดปกติ ลองสลับ RPC endpoint ในตั้งค่ากระเป๋า
- แยกให้ออกระหว่างค่าธรรมเนียมเครือข่าย Solana กับค่าธรรมเนียมถอนของเว็บเทรด
- อย่าตั้ง Priority Fee สูงสุดเป็นนิสัยโดยไม่จำเป็น
คำถามที่พบบ่อย
Priority Fee จำเป็นต้องจ่ายทุกครั้งไหม
ไม่จำเป็น ธุรกรรมโอนเหรียญทั่วไประหว่างกระเป๋าที่ไม่มีคนแย่งใช้บัญชีเดียวกัน ส่วนใหญ่ไม่ต้องใช้ Priority Fee เลย กระเป๋าจะตั้งให้เป็น 0 หรือต่ำมากโดยอัตโนมัติ
ถ้าตั้ง Compute Unit Limit สูงเกินจำเป็น จะเสียเงินเพิ่มไหม
Priority Fee คำนวณจาก CU Limit ที่ “ขอ” ไว้ ไม่ใช่ CU ที่ใช้จริง ดังนั้นตั้งสูงเกินจำเป็นจะทำให้จ่ายแพงขึ้นโดยไม่จำเป็น กระเป๋าสมัยใหม่ส่วนใหญ่แก้ปัญหานี้ด้วยการจำลองธุรกรรมก่อนส่งจริงเพื่อประเมิน CU ที่เหมาะสม
ทำไมบางครั้งเพื่อนจ่าย Priority Fee ถูกกว่าผมมากทั้งที่ทำธุรกรรมพร้อมกัน
เพราะตลาดค่าธรรมเนียมของ Solana แยกตามบัญชีที่ธุรกรรมไปแตะ ถ้าคุณกับเพื่อนไปแตะพูล/สัญญาคนละตัวกัน ความหนาแน่นของแต่ละจุดต่างกัน ค่าธรรมเนียมที่เหมาะสมจึงต่างกันได้มาก แม้สภาพเครือข่ายโดยรวมจะเหมือนกัน
ธุรกรรมหมดอายุแล้ว เงินหายไปไหม
ไม่หาย เงินยังอยู่ในกระเป๋าต้นทางครบ เพราะธุรกรรมไม่เคยถูกบันทึกเข้าบล็อกเชนเลย ไม่มีการตัดเงินหรือตัดค่าธรรมเนียมใดๆ ทั้งสิ้น
เพดานขนาดธุรกรรม Solana ที่ขยายเป็น Transaction V1 เกี่ยวอะไรกับเรื่องนี้ไหม
เป็นคนละเรื่องกัน Transaction V1 ขยายขนาดข้อมูลสูงสุดต่อธุรกรรม (จาก 1,232 เป็น 4,096 ไบต์) เพื่อรองรับธุรกรรมซับซ้อนอย่าง multisig ขนาดใหญ่หรือ ZK proof ส่วนเรื่อง Priority Fee/Compute Unit เป็นกลไกจัดคิวและจำกัดแรงประมวลผลซึ่งมีมาก่อนหน้านั้นแล้วและยังใช้หลักการเดิม ผู้ใช้ทั่วไปที่ไม่ได้ทำธุรกรรมซับซ้อนไม่ต้องทำอะไรเพิ่มจากการอัปเกรดนี้




















