จ่าย Gas ใน Ethereum ต่ำไป แก้ไข/ยกเลิก Pending Transaction ได้นะ

สวัสดีคร๊าบบบบ~!! ห่างหายจากการเขียน Blog ไปนาน อยากจะบอกว่า ยังเขียนอยู่นะ ถึงจะหายไปเป็นปีก็เถอะ >_<

เนื่องจากผมโดดเข้าสู่วงการ Blockchain และ Cryptocurrency มาราว 3 ปีแล้ว และ Blog นี้เป็น Blog แรกที่เขียนเกี่ยวกับ Blockchain และ Cryptocurrency ครับ

เรื่องมีอยู่ว่า เมื่อวานผมต้องการโอน ETH จำนวนหนึ่ง ซึ่งอย่างที่รู้กันว่า ค่าโอน หรือ Gas ในช่วงนี้ แพงมาก ๆ ก็เลยอยากลองดูว่า ถ้ากำหนดค่า Gas ต่ำ ๆ จะเกิดอะไรขึ้น เนื่องจากการโอนครั้งนี้ ไม่ได้รีบอะไร รอนานแค่ไหนก็ได้

เมื่อเช้าตื่นมาก็พบว่า Transaction ที่สั่งโอน ก็ยังไม่ถูกนำไปใส่ Block ซักที และในเว็บ Etherscan ขึ้นคำแนะนำเกี่ยวกับการแก้ไข/ยกเลิก Pending Transaction ก็เลยลองอ่านและทำตามดู และคิดว่าน่าจะมีประโยชน์ เลยเป็นที่มาของบทความนี้ ที่จะสรุปมาให้ได้อ่านกัน

Pending Transaction ที่จ่ายค่า Gas น้อยเกินไป

จากรูปด้านบน Transaction (Txns) ที่สั่งโอนเมื่อวาน โดยกำหนดค่า Gas ไป 100 Gwei ผ่านไป 16 ชั่วโมงกว่า ก็ยังไม่ถูก Miner จับเข้า Block (ใช่ซี๊ ค่าโอนมันน้อย ไม่น่าสนใจนี่ T-T)

ซึ่งถ้าตรวจสอบจาก Gas Tracker จะพบว่า ช่วงนี้ค่า Gas ในเรต Average จะอยู่แถว ๆ 140-200 Gwei (จะแพงไปไหน)

Nonce

จากการหาข้อมูลเพิ่ม จึงรู้ว่า เราสามารถยกเลิกหรือแก้ไข Pending Transaction ได้ โดยสิ่งที่ต้องสนใจก็คือ Nonce ใน Pending Transaction

การยกเลิกหรือแก้ไข Pending Transaction การทำ Transaction ใหม่ ที่จ่าย Gas สูงกว่า และต้องใช้ Nonce (a number or bit string used only once) เดิม ซึ่งจากรูปด้านบน Nonce ของผมคือ 2

Ethereum จะกำหนด Nonce ในการทำ Txns ครั้งแรกเป็น 0 ครั้งต่อ ๆ ไป จะเพิ่มขึ้น 1 และ Txns ที่มี Nonce น้อยกว่า จะต้องดำเนินการให้เสร็จสิ้นก่อนเสมอ

Replacing / Canceling Pending Transaction

หลังจากที่เราทราบค่า Nonce ของ Pending Txns แล้ว ก็ถึงเวลาทำการแก้ไข/ยกเลิก Txns แล้ว

ในตัวอย่างต่อไปนี้ ผมได้ทำ Txns ผ่านฟีเจอร์ของ MyEtherWallet (MEW) นะครับ หากทำผ่านเครื่องมืออื่น ให้ลองเทียบขั้นตอนดูนะ หรือดูใน Link อ้างอิงท้ายบทความนะครับ

สร้าง Transaction ใหม่ บนเมนู Send offline บน MyEtherWallet

บน MEW ให้ไปที่เมนู Send Offline แล้วใส่รายละเอียดของการทำ Txns ใหม่ หากต้องการยกเลิก ให้ส่ง 0 ETH ไปยัง Address ตัวเอง แต่หากต้องการแก้ไข สามารถใส่จำนวน ETH และ Address ปลายทางใหม่ได้เลย

สำคัญที่สุด! ต้องระบุช่อง Nonce เป็นเลขเดียวกับ Pending Txns ที่ต้องการแก้ไข/ยกเลิก และกำหนดค่า Gas ใหม่ให้สูงกว่าเดิม แล้วกดปุ่ม Generate Transaction

Signed Transaction Dialog

เมื่อกดสร้าง Txns แล้ว MEW จะนำ Private Key ของเรา ไป Sign และแสดง Signed Transaction Dialog ขึ้นมา ให้ทำการ Copy Signed Transaction ไว้ก่อน

เมนู Send Offline Helper ใน MyEtherWallet

เลื่อนไปด้านล่างสุดของ MEW และเข้าไปที่เมนู Send Offline Helper

Send Offline Helper Step 2/5

ในเมนู Send Offline Helper จะมี 5 Step

Step 1 Select Network จะเป็นการเลือก Network ซึ่ง Default เป็น ETH อยู่แล้ว

Step 2 Generate Information เราจะต้องเลือก Address ของเรา ตรวจสอบ Nonce ซ้ำอีกครั้ง

Send Offline Helper Step 3/5

Step 3 Signed Transaction ให้นำ Signed Transaction ที่สร้างไว้ มาวาง เราสามารถกดดู Raw Transaction เพื่อตรวจสอบ Nonce และค่า Gas ได้อีก

Send Offline Helper Step 4/5

Step 4 Transaction Details จะเป็น Step สุดท้ายก่อนทำการส่งคำสั่งจริง ให้ทำการตรวจสอบรายละเอียดซ้ำอีกครั้ง โดยเฉพาะค่า Nonce

เมื่อถูกต้องแล้ว กดปุ่ม Send ได้เลย Txns เราจะถูกส่งไปรอให้ Miner ขุดแล้ว

Send Offline Helper Step 5/5

Step 5 Transaction Status ใน Step นี้ จะแสดง Transaction Hash ให้เราตรวจสอบ สามารถกด Link เพื่อตรวจสอบได้เลย แต่ในส่วนของ Transaction Receipt ยังไม่ขึ้น ตรงนี้อย่าเพิ่งตกใจ รอ Miner เค้าขุดก่อนนะ

Pending Transaction ใหม่

ใน Transaction ใหม่ เมื่อตรวจสอบที่ Etherscan จะพบ Status ว่า Duplicate Nonce และที่ Nonce ก็จะเป็นค่าเดิมของ Pending Transaction ที่เราต้องการแก้ไขหรือยกเลิก

Pending Transaction ใหม่

ผ่านไป 6 นาทีกว่า ๆ Miner ก็หยิบไปขุดแล้ว เย่~!!

ในส่วนของ Nonce แสดงค่าเดิม และมีข้อความในวงเล็บ แจ้งให้ทราบว่า Txns เดิมได้ถูกยกเลิกแล้ววววว

Pending Transaction เก่า

และเมื่อตามไปดู Txns เดิม จะเห็น Status เป็น Dropped & Replaced แล้ว และ Gas Used ไม่มี (ไม่เสียค่า Gas ฟรี ๆ นั่นเอง) ^q^

และถ้ากลับไปดูที่ Step 5 ของ Send Offline Helper ใน MEW จะเห็นข้อมูลในส่วนของ Transaction Receipt

สรุป

การแก้ไข/ยกเลิก Pending Transaction ก็คือการทำ Transaction ใหม่ โดยใช้ Nonce เดิม ด้วยค่า Gas ที่สูงขึ้น นั่นเอง

หวังว่าบทความนี้จะมีประโยชน์กับชาว ETH (หรือ ERC-20 Token บน ETH) นะครับ

และสำหรับผู้อ่าน ที่ชอบบทความนี้ และอยากสนับสนุนค่า Gas ให้กับผม สามารถโอน Crypto มาได้ทาง Binance Pay ด้านล่าง (ดูวิธีใช้งาน)

Binance Pay (ID 88649871)

แล้วพบกันใหม่บทความหน้า ในปีถัดไป (หยอก ๆๆๆ)

อ้างอิง

3 Comments


  1. สวัสดีครับ
    รบกวนสอบถามครับถ้าเกิดว่าสถานะหน้า etherscan ขึ้นว่า dropped สีแดง มี Note: This Pending TxnHash was seen previously, but was dropped from our connected node Pending TxnPool.

    แบบนี้แปลว่ารายการถูกยกเลิกให้อัตโนมัติรึเปล่าครับ แบบนี้สามารถทำรายการใหม่ได้เป็นปกติเลยรึเปล่า หรือว่าต้องทำวิธีการตามข้างบนครับผม

    ขอบคุณมากครับ

    Reply

    1. ขอ Link transaction นั้นมาตรวจสอบหน่อยครับ

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.