Nhảy tới nội dung

Hướng dẫn người dùng: Giao dịch và giao dịch thất bại

Does this article need to be translated?

ghi chú

Bạn mới làm quen với tiền mã hóa và web3?

Head to MetaMask Learn for a straightforward learning experience designed specifically for newcomers to web3. Hoàn toàn miễn phí, có sẵn bằng nhiều ngôn ngữ và bao gồm những công cụ hữu ích, chẳng hạn như những mô phỏng để giúp bạn tự tin sử dụng MetaMask.

Bài viết này giải thích và cung cấp liên kết đến các tài nguyên về chủ đề giao dịch và lý do giao dịch thất bại, và sau đó là liên kết đến các tình huống giao dịch thất bại phổ biến và cách giải quyết chúng:

Phân tích một giao dịch chuỗi khối

Khi nói về "giao dịch" trên mạng chuỗi khối công khai, chúng ta thường nói về các tương tác giữa hai địa chỉ; nói cách khác, là các token, có thể thay thế hoặc không, hoặc các tài sản tiền mã hóa khác được "gửi" từ địa chỉ này sang địa chỉ khác. Ngoài ra còn có các giao dịch được gọi là "giao dịch nội bộ", là các tương tác xảy ra giữa các hợp đồng thông minh và phần lớn nằm ngoài phạm vi của bài viết này.

Muốn có thêm thông tin?

For more on blockchain networks and how they work in general, check out our intro article here, and if you get stuck on any unfamiliar words, our glossary is always available.

For clarity's sake, nothing is actually being sent anywhere. Một mạng chuỗi khối cho phép hợp đồng thông minh như Ethereum có nhiều thành tố hoặc tính năng khác nhau. Một trong những thành tố đó là cái gọi là "máy tính" - Máy Ảo Ethereum, hay EVM - có khả năng vận hành các chương trình ("hợp đồng thông minh"). 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.

Hãy cùng sử dụng ví dụ để minh họa. Giả sử Guillaume muốn gửi một giao dịch đến Dolores. Guillaume có 1,36 ETH trong tài khoản và anh ấy định gửi cho Dolores 0,5 ETH. Sounds like a good day for Dolores, even in a bear market.

Guillaume opens up his MetaMask wallet, enters Dolores' address, configures the gas parameters that he's comfortable with paying, and hits'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.

Một giao dịch chỉ có thế: một yêu cầu gửi đến sổ cái để phân bổ lại thứ gì đó từ địa chỉ này sang địa chỉ khác.

Khi có vấn đề

Có nhiều lý do khiến một vấn đề xảy ra. Thông thường, bản chất của chúng là "phần mềm": MetaMask có một lỗi hoặc thứ gì đó bị cấu hình sai liên quan đến mạng mà bạn đang cố sử dụng; có lỗi kết nối.

Một vấn đề phổ biến là người dùng cố gắng trả ít hơn cho giao dịch nên họ sẽ đặt hạn mức phí gas rất thấp và tình trạng mạng bị đầy đến nỗi không có khoảng trống trong bất kỳ khối nào cho một giao dịch "rẻ tiền" như vậy, đôi khi trong một khoảng thời gian rất dài: cuối cùng, giao dịch này sẽ trở nên "mất hiệu lực" và người dùng buộc phải hủy.

If you've sent a transaction and it hasn't been finalized, its status will be shown as "pending" in MetaMask.

Nếu bạn đã gửi một giao dịch và giao dịch này thất bại, nguyên nhân rất có thể là do thiếu gas: bạn đã "hết gas" hay nói cách khác, giao dịch có chi phí tính bằng gas mà khi nhân với giá gas sẽ dẫn đến tổng số tiền gốc của mạng lớn hơn số tiền bạn có trong ví của mình.

Thông tin

For more on calculating gas, consult our gas guide here.

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. Minting an NFT during peak network traffic times can be very gas-intensive; if you're trying out a new or experimental transaction, it may be worth trying on a test network before paying real live network fees.

Khắc phục vấn đề

Key Factor #1: local or broadcast to network

Khi bạn bắt đầu chẩn đoán vấn đề mà giao dịch gặp phải, nhất là với một giao dịch đang chờ xử lý, bạn cần phải xem liệu giao dịch này có còn trong bể nhớ giao dịch cục bộ của mình không, hay liệu nó đã được đưa vào mạng và bị mắc kẹt ở đó vì lý do nào đó. 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). Nếu nó đã được đưa vào mạng, giải pháp có thể phức tạp hơn.

Để biết thêm về cách khắc phục các vấn đề này, hãy xem các liên kết bên dưới.

Yếu tố Chính số 2: Số nonce

Từ này có thể mang nhiều ý nghĩa. Nó là từ rút gọn của "số chỉ được sử dụng một lần", và trong bối cảnh này, nó đại khái có nghĩa là "số giao dịch", bắt đầu từ giao dịch đầu tiên được thực hiện bởi địa chỉ gửi đó. Bạn có thể gặp rắc rối thực sự nếu bạn, chẳng hạn như đang đồng thời kích hoạt hai giao dịch khác nhau từ các phiên bản MetaMask khác nhau với cùng một địa chỉ ví. 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.

Các bước tiếp theo

Nếu bạn có giao dịch thất bại hoặc đang chờ xử lý thì hãy tham khảo các tài nguyên sau để được hỗ trợ.

Cách gửi token từ ví MetaMask của bạn

Cách tăng tốc hoặc hủy giao dịch đang chờ xử lý

[Why did my transaction fail with an "Out of Gas" error? Làm thế nào để khắc phục?

Khắc phục sự cố Uniswap

Hướng dẫn người dùng: Gas

Tôi có thể thu hồi giao dịch đã xác nhận không?

Câu hỏi thường gặp

H: Một tài khoản trong ví của tôi có giao dịch đang chờ xử lý hoặc đang trong hàng đợi. Can I start another transaction from a different account within the same wallet?

A: Yes, you can. Số nonce được tính theo từng tài khoản, không phải theo ví.