Skip to main content

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

note

ยังใหม่กับคริปโตและ web3 ใช่หรือไม่

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

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

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

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

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

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

เพื่อความชัดเจน แท้จริงแล้วไม่มีอะไรที่ถูกส่งไปเลยแม้แต่น้อยเครือข่ายบล็อกเชนที่เปิดใช้งานสัญญาอัจฉริยะเช่น Ethereum มีส่วนประกอบหรือฟังก์ชันที่แตกต่างกันจำนวนมากหนึ่งในนั้นคือสิ่งที่เราเรียกว่า "เครื่องประมวลผล": Ethereum Virtual Machine หรือ EVM ซึ่งสามารถเรียกใช้โปรแกรมต่าง ๆ ได้ ('สัญญาอัจฉริยะ')อย่างไรก็ตาม 'แกนหลัก' ของระบบนี้คือ บัญชีแยกประเภทแบบกระจายศูนย์: ลองนึกภาพสเปรดชีตที่มีที่อยู่กระเป๋าเงิน Ethereum ทุกแห่งอยู่ด้านหนึ่ง และที่อยู่แต่ละแห่งจะมีคอลัมน์สำหรับสินทรัพย์คริปโตแต่ละประเภทที่ถืออยู่

ลองใช้ตัวอย่างเพื่อให้เห็นภาพสมมติว่ากุยโลเม่ต้องการส่งธุรกรรมให้โดโลเรสกุยโลเม่มี 1.36 ETH ในบัญชีของเขา และเขาวางแผนที่จะส่ง 0.5 ETH ให้โดโลเรส ฟังดูเหมือนเป็นวันที่ดีสำหรับโดโลเรส แม้จะอยู่ในตลาดหมีก็ตาม

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

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

**'มือที่เคลื่อนไหว มีคำสั่ง เคลื่อนที่ต่อไป': ETH ไม่เคลื่อนผ่านเครือข่ายด้วยตัวเอง ไม่ใช่อีเมลที่ส่งจากคอมพิวเตอร์ของกุยโลเม่ที่ไปยังกล่องจดหมาย MetaMask ของโดโลเรส หรืออะไรทำนองนั้นGuillaume ส่งคำขอ **ซึ่งรับรองความถูกต้องด้วยกุญแจส่วนตัวของเขาผ่าน MetaMask ไปยังเครือข่ายเพื่อหักบัญชีของเขาและโอนไปให้โดโลเรส และหลังจากกระบวนการตรวจสอบที่ตั้งโปรแกรมไว้ในโปรโตคอลของเครือข่ายก็เสร็จสิ้น

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

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

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

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

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

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

ข้อมูล

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

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

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

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

ในขณะที่คุณวินิจฉัยปัญหาธุรกรรมของคุณ โดยเฉพาะอย่างยิ่งเมื่อพูดถึงธุรกรรมที่รอดำเนินการ คุณต้องดูว่าธุรกรรมนั้นยังอยู่ในธุรกรรมคงค้างในเครื่องของคุณหรือไม่ หรือได้ทำไปยังเครือข่ายและติดค้างอยู่ที่นั่นไม่ว่าด้วยเหตุผลใดก็ตามหากเป็นเฉพาะในธุรกรรมคงค้างในเครื่องของคุณ วิธีแก้ปัญหาอาจง่ายพอ ๆ กับการล็อกและปลดล็อกกระเป๋าเงิน MetaMask ของคุณ (ตรวจสอบให้แน่ใจว่าคุณรู้รหัสผ่านของคุณและได้สำรองข้อมูลวลีกู้คืนรหัสไว้แล้วก่อนที่คุณจะลงมือทำ) ถ้าทำในเครือข่าย วิธีแก้ปัญหาอาจซับซ้อนกว่านี้

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

ปัจจัยสำคัญที่ 2: Nonce

คำนี้อาจหมายถึงสิ่งที่แตกต่างกันบางอย่างนี่เป็นตัวย่อของ "number only used once" (หมายเลขที่ใช้เพียงครั้งเดียว) และในบริบทนี้ ความหมายคร่าว ๆ คือ "หมายเลขธุรกรรม" โดยเริ่มจากธุรกรรมแรกที่สร้างขึ้นโดยที่อยู่สำหรับการส่งคุณอาจประสบปัญหาอย่างมากได้ ถ้าหากสมมติว่าคุณกำลังเริ่มต้นธุรกรรมสองรายการที่ต่างกันจาก อินสแตนซ์ของ MetaMask ที่ต่างกันด้วยที่อยู่กระเป๋าเงินเดียวกันในเวลาเดียวกัน**ธุรกรรมของที่อยู่ของคุณจำเป็นต้องเพิ่มลำดับตาม Nonce ของพวกเขา **อย่างไรก็ตาม เช่นเดียวกับที่ Nonce สามารถทำให้เกิดธุรกรรมที่ติดขัด พวกเขาสามารถเป็นกุญแจสำคัญในการทำให้ธุรกรรมไม่ติดขัดได้

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

ขั้นตอนถัดไป

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

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

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

เหตุใดธุรกรรมของฉันจึงล้มเหลวโดยมีข้อผิดพลาด "Out of Gas" (แก๊สหมด)

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

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

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

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

ถาม: หนึ่งบัญชีในกระเป๋าเงินของฉันมีธุรกรรมที่รอดำเนินการหรืออยู่ในคิว ฉันสามารถเริ่มต้นธุรกรรมอื่นจากบัญชีอื่นภายในกระเป๋าเงินเดียวกันได้หรือไม่ตอบ: ได้ คุณทำได้ Nonce ถูกนับต่อบัญชี ไม่ใช่ต่อกระเป๋าเงิน