Skip to main content

Руководство пользователя: транзакции и неудачные транзакции

Does this article need to be translated?

note

Новичок в крипте и web3?

Перейдите в MetaMask Learn, где основы web3 объясняются простым языком специально для новичков. Платформа совершенно бесплатна, доступна на нескольких языках и включает такие полезные инструменты, как симуляторы, которые помогут вам освоиться в MetaMask.

Эта статья содержит пояснения и ссылки на ресурсы, связанные с транзакциями и причинами их неудачи. Также ниже приведены ссылки на распространенные сценарии неудачных транзакций и способы устранения причин неудачи:

Сущность блокчейн-транзакции

Когда мы говорим о «транзакциях» в публичной блокчейн-сети, мы имеем в виду взаимодействие между двумя адресами. Иными словами, токены, взаимозаменяемые или нет, или иные криптоактивы «пересылаются» с одного адреса на другой. Существуют также транзакции, называемые «внутренними транзакциями», которые представляют собой взаимодействие между смарт-контрактами и, по большей части, выходят за рамки этой статьи.

Хотите получить дополнительную информацию?

Чтобы узнать подробнее о блокчейн-сетях и о том, как они работают, ознакомьтесь с нашей вводной статьей здесь, а если вы встречаете много незнакомых слов, обратитесь к нашему глоссарию.

Для ясности, на самом деле ничего никуда не отправляется. Сеть блокчейна с поддержкой смарт-контрактов, такая, как Ethereum, имеет ряд различных компонентов или функций. Одной из них является то, что мы бы назвали «компьютером». Это Виртуальная машина Ethereum или EVM, которая способна запускать программы («смарт-контракты»). «Основой» системы, является распределенный реестр: представьте себе электронную таблицу, в которой содержатся все адреса кошельков Ethereum и напротив каждого адреса указан тип криптоактива, который он содержит.

Для иллюстрации воспользуемся примером. Скажем, Гильом хочет совершить транзакцию с Долорес. На счете Гильома есть 1,36 ETH, и он планирует отправить Долорес 0,5 ETH. Похоже, у Долорес хороший день, даже при «медвежьем» рынке.

Гильом открывает кошелек MetaMask, вводит адрес Долорес, настраивает параметры газа, который ему комфортно оплатить, и нажимает «Отправить».

На этом этапе транзакция переходит в состояние локального временного удержания, известного как локальный пул памяти или локальный мемпул. Затем транзакция «подхватывается» ближайшим узлом в сети. Приоритет транзакции будет зависеть от настроек газа Гильома (чем больше Гильом готов заплатить за единицу газа, тем быстрее будет обработана его транзакция), и она будет передана в другие узлы сети. Узлы выполнят проверку того, что у Гильома есть нужное количество ETH для списания, а затем фактически выполнят «транзакцию»: реестр изменяется, 0,5 списывается с баланса Гильома и 0,5 зачисляется Долорес.

Теперь пути назад нет, ведь ETH не перемещается по сети как таковой, это не электронное письмо, отправленное с компьютера Гильома в почтовый ящик Долорес в MetaMask или что-то в этом роде. Гильом отправил в сеть запрос, аутентифицированный с помощью его закрытых ключей через MetaMask, о списании средств с его счета и зачислении средств на счета Долорес. Этот запрос был исполнен после выполнения проверки, запрограммированной в протоколах сети.

Все, что нужно для транзакции, — запрос к реестру о закреплении чего-либо за новым адресом вместо старого.

Когда что-то идет не так

Все может пойти не так по ряду причин. Ошибки часто могут носить «программный характер»: баг в MetaMask, неправильная конфигурация сети, которую вы пытаетесь использовать, или ошибка подключения.

Распространенная проблема заключается в том, что пользователь, пытаясь заплатить меньше за свою транзакцию, устанавливает очень низкий лимит газа, а сеть настолько перегружена, что ни в одном блоке нет места для такой «дешевой» транзакции, иногда в течение очень долгого времени. В конце концов, эта транзакция станет «устаревшей», и пользователь будет вынужден ее отменить.

Если вы отправили транзакцию и она не была завершена, ее статус в MetaMask будет отображаться как «ожидающая».

Наиболее вероятной причиной неудачи отправленной транзакции является нехватка газа: у вас «закончился газ», другими словами, стоимость транзакции в газе, умноженная на цену газа, давала общую сумму нативной валюты сети, превышающую сумму в вашем кошельке.

Информация

Подробнее о расчете газа см. в нашем руководстве по газу здесь.

Это может произойти по ряду причин и нужно учитывать, какую транзакцию вы пытаетесь выполнить. Минтинг NFT во время пика сетевого трафика может потребовать очень много газа. Если вы пробуете новую или экспериментальную транзакцию, возможно, стоит проверить ее в тестовой сети прежде, чем платить комиссию в реальной сети.

Решение проблемы

Ключевой фактор №1: транзакция сохранена локально или уже передана в сеть

Когда вы занимаетесь диагностикой проблемы с транзакцией, особенно, когда речь идет об ожидающей транзакции, вам нужно посмотреть, находится ли транзакция все еще в вашем локальном мемпуле или она попала в сеть и застряла там по какой-либо причине. Если она находится только в вашем локальном мемпуле, этот вопрос можно просто решить блокировкой и последующей разблокировкой вашего кошелька MetaMask (прежде чем сделать это, убедитесь, что вы знаете свой пароль и создали резервную копию секретной фразы для восстановления). Если она уже попала в сеть, решение будет сложнее.

Подробнее об устранении этих проблем, см. ссылки ниже.

Ключевой фактор №2: одноразовый код

Этот термин может означать несколько разных вещей. Это сокращение от «number only used once» (одноразовое случайное число), и в этом контексте это означает «номер транзакции», начиная с первой транзакции, совершенной отправляющим адресом. У вас могут возникнуть серьезные проблемы, если вы, например, запускаете две разные транзакции из разных экземпляров MetaMask, с одним и тем же адресом кошелька в одно и то же время. **Транзакции с вашего адреса должны идти в порядке возрастания в соответствии с их одноразовым кодом. ** Однако так же, как одноразовые коды могут вызвать зависание транзакции, они могут быть ключом к тому, чтобы транзакцию разблокировать.

For more on that technique, see here.

Next steps

Если у вас есть неудачная или ожидающая транзакция, обратитесь за помощью к следующим ресурсам.

Как отправить токены из вашего кошелька MetaMask

Как ускорить или отменить ожидающую транзакцию

Почему моя транзакция завершилась ошибкой «Недостаточно газа»? How can I fix it?

Решение проблем с Uniswap

Руководство пользователя по газу

Могу ли я отменить уже подтвержденную транзакцию?

Часто задаваемые вопросы

В. На одном счете в моем кошельке есть ожидающая или находящаяся в очереди транзакция. Могу ли я инициировать еще одну транзакцию по другому счету в том же кошельке?

A: Yes, you can. Одноразовый код рассчитывается для каждого счета, а не для кошелька в целом.