Skip to main content

คู่มือผู้ใช้: ธุรกรรมและธุรกรรมที่ล้มเหลว

Does this article need to be translated?

note

เพิ่งรู้จักเงินคริปโตและ web3 ใช่ไหม?

ไปที่ เรียนรู้ MetaMask เพื่อรับประสบการณ์การเรียนรู้ที่ตรงไปตรงมาที่ได้รับการออกแบบมาโดยเฉพาะเพื่อผู้ใช้งานใหม่ใน web3 ใช้งานได้ฟรี มีให้บริการหลายภาษา และมีเครื่องมือที่มีประโยชน์ เช่น การจำลองเพื่อช่วยให้คุณคุ้นชินกับการใช้งาน MetaMask

บทความนี้ประกอบด้วยคำอธิบายและลิงก์ไปยังแหล่งข้อมูลที่เกี่ยวข้องกับธุรกรรมและสาเหตุที่ธุรกรรมล้มเหลว รวมถึงลิงก์ไปยังสถานการณ์ธุรกรรมที่ล้มเหลวที่พบบ่อย และวิธีจัดการกับปัญหาเหล่านั้น:

กายวิภาคของธุรกรรมบล็อกเชน

เมื่อเราพูดถึง 'ธุรกรรม' บนเครือข่ายบล็อกเชนสาธารณะ เรามักจะพูดถึงการโต้ตอบระหว่างที่อยู่สองแห่ง กล่าวอีกนัยหนึ่งก็คือ โทเค็น ไม่ว่าจะเป็นแบบทดแทนได้หรือไม่ได้ก็ตาม หรือสินทรัพย์ดิจิทัลอื่น ๆ ที่ถูก 'ส่ง' จากที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง นอกจากนี้ยังมีธุรกรรมที่เรียกว่า "ธุรกรรมภายใน" ซึ่งเป็นการโต้ตอบที่เกิดขึ้นระหว่างสมาร์ตคอนแทรก และส่วนใหญ่อยู่นอกขอบเขตของบทความนี้

ต้องการข้อมูลเพิ่มเติมใช่หรือไม่

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

For clarity's sake, nothing is actually being sent anywhere. เครือข่ายบล็อกเชนที่รองรับสมาร์ตคอนแทรก เช่น Ethereum มีส่วนประกอบหรือฟังก์ชันต่าง ๆ มากมาย หนึ่งในนั้นคือสิ่งที่เราเรียกว่า "เครื่องคำนวณ" ซึ่งก็คือเครื่องมือจำลอง Ethereum (Ethereum Virtual Machine) หรือ EVM ที่สามารถรันโปรแกรมต่าง ๆ ('สมาร์ตคอนแทรก') ได้ The backbone of the system, however, is a distributed ledger: imagine a spreadsheet that contains, on one side, every single Ethereum wallet address, and each address has a column for each type of crypto-asset that it holds.

เราจะใช้ตัวอย่างเพื่อให้เห็นภาพ สมมติว่ากุยโลเม่ต้องการส่งธุรกรรมให้โดโลเรส กุยโลเม่มี 1.36 ETH ในบัญชีของเขา และเขาวางแผนที่จะส่ง 0.5 ETH ให้โดโลเรส Sounds like a good day for Dolores, even in a bear market.

กุยโลเม่เปิดวอลเล็ต MetaMask ของเขา ป้อนที่อยู่ของโดโลเรส กำหนดค่าพารามิเตอร์ค่าแก๊สที่เขายินดีจ่าย และกด 'send' (ส่ง)

At this point, the transaction enters a local temporary holding status, known as the local memory pool, or local mempool. The transaction will then get 'picked up' by the closest node in the network; depending on Guillaume's gas settings, his transaction will be prioritized (the more Guillaume is willing to pay per unit of gas, the faster his transaction will be processed), and propagated to other nodes in the network. The nodes will do the work of verifying that Guillaume has the ETH to spend, and then will actually perform the 'transaction': the ledger will be modified; 0.5 will be debited from Guillaume's balance, and 0.5 will be credited to Dolores'.

'The moving hand, having writ, moves on': ETH didn't move through a network per se; it wasn't an email sent from Guillaume's computer to Dolores' MetaMask inbox or anything of the sort. Guillaume sent a request, authenticated by his private keys through MetaMask, to the network to debit his account and credit Dolores', and after the verification process programmed into the network's protocols, this was done.

_การทำธุรกรรมก็มีเพียงเท่านี้ นั่นก็คือ การขอให้สมุดบัญชีจัดสรรบางสิ่งจากที่อยู่หนึ่งไปให้กับอีกที่อยู่หนึ่ง

เมื่อมีสิ่งผิดปกติ

ความผิดพลาดนั้นเกิดขึ้นได้จากหลายสาเหตุ บ่อยครั้ง ข้อผิดพลาดนั้นมี 'ที่มาจากซอฟต์แวร์' กล่าวคือ MetaMask มีข้อบกพร่อง หรือการกำหนดค่าผิดพลาดเกี่ยวกับเครือข่ายที่คุณพยายามใช้งาน หรือข้อผิดพลาดในการเชื่อมต่อ

ปัญหาที่พบบ่อยคือ ผู้ใช้พยายามลดค่าการทำธุรกรรมโดยการตั้งค่าขีดจำกัดค่าแก๊สไว้ต่ำมาก และเครือข่ายมีสภาพแออัดมากจนไม่มีพื้นที่ในบล็อกเพื่อให้ธุรกรรม "ราคาถูก" แทรกเข้าไป ซึ่งบางครั้งก็เสียเวลานานมาก สุดท้าย ธุรกรรมนี้ก็ "ตกค้าง" จนผู้ใช้ต้องมายกเลิก

หากคุณส่งธุรกรรมและยังไม่ได้รับการสรุป สถานะของธุรกรรมจะแสดงเป็น "pending" (รอดำเนินการ) ใน MetaMask

หากคุณส่งธุรกรรมแต่ล้มเหลว มีแนวโน้มเป็นไปได้สูงว่า สาเหตุมาจากแก๊สไม่พอ กล่าวคือ คุณ "ไม่มีค่าแก๊ส" หรือก็คือ ธุรกรรมต้องใช้ค่าแก๊ส ซึ่งเมื่อคูณด้วยราคาแก๊สแล้ว ได้ยอดรวมของสกุลเงินเนทีฟของเครือข่ายที่มากกว่าเงินที่คุณมีในวอลเล็ต

ข้อมูล

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการคำนวณแก๊ส โปรดอ่านคู่มือแก๊สที่นี่

This can happen for a number of reasons, but one thing to consider is what the transaction is that you're trying to carry out. การขุด NFT ในช่วงที่เครือข่ายมีทราฟฟิกสูงนั้นต้องใช้ค่าแก๊สสูงตามไปด้วย หากคุณพยายามลองธุรกรรมใหม่หรือธุรกรรมเชิงทดลอง การลองใช้เครือข่ายทดสอบก่อนการจ่ายค่าธรรมเนียมเครือข่ายจริงก็อาจคุ้มค่าน่าลอง

การแก้ไขปัญหา

ปัจจัยสำคัญข้อที่ 1: ในเครื่องหรือส่งออกไปยังเครือข่าย

ในขณะที่คุณวินิจฉัยปัญหาธุรกรรมของคุณ โดยเฉพาะอย่างยิ่งเมื่อพูดถึงธุรกรรมที่รอดำเนินการ คุณต้องดูว่าธุรกรรมนั้นยังคงค้างอยู่ในเมมพูลในเครื่องของคุณหรือไม่ หรือธุรกรรมนั้นออกไปยังเครือข่ายแล้ว แต่ติดค้างอยู่ที่นั่นไม่ว่าด้วยเหตุผลใดก็ตาม If it is just in your local mempool, the solution could be as simple as locking, and unlocking, your MetaMask wallet (make sure you know your password and have your Secret Recovery Phrase backed up before you do). ถ้าธุรกรรมออกไปถึงเครือข่าย วิธีแก้ปัญหาอาจซับซ้อนมาก

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขปัญหาเหล่านี้ โปรดดูลิงก์ด้านล่าง

ปัจจัยสำคัญข้อที่ 2: นอนซ์

คำนี้มีความหมายถึงหลายสิ่งที่แตกต่างกัน โดยอาจหมายถึง คำพูดย่อ ๆ ของ "number only used once" (หมายเลขที่ใช้เพียงครั้งเดียว) และในบริบทนี้ คำนี้มีความหมายคร่าว ๆ คือ "หมายเลขธุรกรรม" ซึ่งเริ่มจากธุรกรรมแรกที่มาจากที่อยู่ผู้ส่ง คุณอาจพบปัญหาใหญ่ได้ ตัวอย่างเช่น ถ้าคุณยิงธุรกรรมที่ต่างกัน 2 รายการออกจากอินสแตนซ์ของ MetaMask ที่แตกต่างกันด้วยที่อยู่วอลเล็ตเดียวกันพร้อมกัน Your address' transactions need to be in increasing order according to their nonce. However, just as nonces are capable of causing a stuck transaction, they can be the key to getting a transaction unstuck.

For more on that technique, see here.

ขั้นต่อมา

ถ้าคุณมีธุรกรรมที่ล้มเหลวหรือที่รอดำเนินการ โปรดหาวิธีแก้ไขจากแหล่งข้อมูลต่อไปนี้

วิธีการส่งโทเค็นจากวอลเล็ต MetaMask ของคุณ

วิธีการเร่งความเร็วหรือยกเลิกธุรกรรมที่รอดำเนินการ

ทำไมธุรกรรมถึงล้มเหลวด้วยข้อผิดพลาด "แก๊สหมด" How can I fix it?

การแก้ไขปัญหา Uniswap

คู่มือผู้ใช้: แก๊ส

ฉันสามารถย้อนกลับธุรกรรมที่ยืนยันแล้วได้หรือไม่

คำถามที่พบบ่อย

Q: One account in my wallet has a pending or in-queue transaction. ฉันสามารถเริ่มต้นธุรกรรมอื่นจากบัญชีอื่นภายในวอลเล็ตเดียวกันได้หรือไม่

A: Yes, you can. การนับนอนซ์จะนับต่อบัญชี ไม่ใช่ต่อวอลเล็ต