Ключевые выводы
Зависшая транзакция Ethereum может застрять, если ваша плата за газ слишком низка по сравнению с текущим спросом на сеть.
Вы можете ускорить или заменить зависшую транзакцию, запустив новую с более приоритетной платой, используя тот же nonce, что и у оригинала.
Этот метод работает с ETH и токенами ERC-20 на любом совместимом с Ethereum кошельке.
Вам понадобится криптокошелек, такой как MetaMask или Trust Wallet, который позволяет вручную настраивать nonce и газ.
Введение
Если вы когда-либо отправляли транзакцию в Ethereum и наблюдали, как она лежит в ожидании несколько часов, вы не одиноки. Ethereum обрабатывает тысячи транзакций одновременно, и когда сеть загружена, транзакции с низкими сборами за газ могут оставаться в ожидании. Эта статья объясняет, почему это происходит и как вы можете это исправить.
Хорошая новость заключается в том, что вы можете заменить зависшую транзакцию новой, которая платит более высокую плату. Это работает как для ETH, так и для токенов ERC-20. Наиболее распространенные инструменты для этого - MetaMask и Trust Wallet, хотя любой кошелек с поддержкой настройки nonce подойдет.
Имейте в виду, что вы не можете отменить транзакцию, которая уже была подтверждена в сети. Описанная здесь техника применяется только к транзакциям, которые все еще ожидают в мемпуле.
Почему моя транзакция Ethereum зависла?
Ethereum использует рынок сборов для приоритизации транзакций. С момента введения EIP-1559 каждая транзакция включает базовую плату (установленную сетью) и плату приоритета (чаевые, которые вы платите валидаторам). Валидаторы выбирают, какие транзакции включать в каждый блок, и обычно предпочитают те, у которых более высокие платы приоритета.
Когда сеть перегружена, многие пользователи борются за то, чтобы их транзакции были включены. Если ваша плата приоритета слишком низка, ваша транзакция может оставаться в мемпуле бесконечно. Мемпул - это зона ожидания, где неподтвержденные транзакции ожидают, прежде чем их подберет валидатор.
Иногда зависшая транзакция может очиститься сама по себе, если активность сети упадет. Но если вам нужно решить вопрос быстрее, вы можете заменить ее вручную.
Требования
Установленный и настроенный MetaMask или Trust Wallet.
Доступ к кошельку, который отправил зависшую транзакцию (фраза-сид или приватный ключ, если вы импортируете).
Небольшое количество ETH для покрытия более высокой платы за газ на транзакции замены.
Как ускорить транзакцию в MetaMask
MetaMask предлагает опцию в один клик для ускорения зависшей транзакции. Это самый простой подход.
1. Откройте MetaMask и перейдите на вкладку "Активность". Найдите зависшую транзакцию.
2. Нажмите "Ускорить". MetaMask предложит более высокую плату за газ.
3. Подтвердите новую плату и отправьте. MetaMask повторно отправит транзакцию с более приоритетной платой, используя тот же nonce, что и у оригинала.
Как только валидатор включит новую транзакцию в блок, оригинальная зависшая транзакция будет фактически заменена и отменена.
Как заменить транзакцию в MetaMask
Если опция "Ускорить" не сработала или вы хотите полностью отменить транзакцию (отправив 0 ETH себе), вы можете сделать это вручную, используя функцию пользовательского nonce.
1. Перейдите в настройки MetaMask, затем в раздел "Дополнительно". Включите настройку пользовательского nonce транзакции.
2. Найдите зависшую транзакцию на вкладке "Активность". Нажмите на нее и запомните значение nonce. Если у вас несколько зависших транзакций, начните с той, у которой наименьший nonce.
3. Нажмите "Отправить". В поле получателя вставьте адрес вашего кошелька. Установите сумму на 0 ETH. Вам нужно отправить 0 ETH на ваш собственный кошелек, используя nonce зависшей транзакции (запомненный на шаге 2). Нажмите [Подтвердить], когда будете готовы.
4. Перед подтверждением нажмите на поле nonce и введите тот же номер nonce, который вы записали на шаге 2.
5. Установите плату за газ, которая выше, чем у зависшей транзакции. Вы можете проверить текущие цены на газ в трекере газа Etherscan.
6. Нажмите "Подтвердить". Подождите, пока новая транзакция будет подтверждена. Это заменит оригинал.
После подтверждения транзакции замены не забудьте вернуться в настройки > Дополнительно и отключить настройку пользовательского nonce, чтобы избежать случайных ошибок с nonce в будущем.
Часто задаваемые вопросы
Что произойдет, если я ничего не сделаю?
Если оставить зависшую транзакцию без внимания, она либо в конечном итоге будет подобрана валидатором, когда сборы упадут, либо будет удалена из мемпула через определенное время. Однако некоторые кошельки продолжают повторно отправлять зависшие транзакции, что означает, что они могут неожиданно подтвердиться позже. Замена её вручную дает вам больше контроля.
Могу ли я отменить подтвержденную транзакцию?
Нет. Как только транзакция была включена в блок и подтверждена в блокчейне Ethereum, её нельзя отменить или изменить. Это одно из основных свойств технологии блокчейн. Техника замены работает только для транзакций, которые все еще ожидают.
Что такое nonce и почему это важно?
Nonce - это последовательный номер, присвоенный каждой транзакции с данного адреса кошелька. Ethereum обрабатывает транзакции в порядке, поэтому транзакция с nonce 5 не может быть подтверждена до транзакции с nonce 4. Отправляя новую транзакцию с тем же nonce, вы фактически говорите сети игнорировать старую.
Работает ли этот метод для других сетей?
Да. Метод замены nonce работает в любой совместимой с Ethereum Virtual Machine (EVM) сети, такой как BNB Smart Chain или Polygon. Шаги те же, но вам нужно будет проверить уровни платы за газ, соответствующие этой сети, а не основной сети Ethereum.
Заключительные мысли
Зависание транзакции в состоянии ожидания может быть раздражающим, но решение довольно простое, как только вы понимаете, как работает рынок сборов Ethereum. Отправив транзакцию замены с более приоритетной платой и тем же nonce, вы можете вытолкнуть оригинальную из очереди.
Дополнительное чтение
Как работают сборы за газ в Ethereum?
Что такое сборы за транзакции в блокчейне?
Как использовать MetaMask
Что такое Trust Wallet?
Что такое хардфорк Ethereum London?
Отказ от ответственности: Этот контент представлен вам на основании "как есть" для общей информации и/или образовательных целей, без каких-либо представлений или гарантий. Он не должен рассматриваться как финансовый, юридический или другой профессиональный совет, и не предназначен для рекомендации покупки какого-либо конкретного продукта или услуги. Вы должны искать собственные советы у соответствующих профессиональных консультантов. Если контент предоставлен третьей стороной, пожалуйста, обратите внимание, что выраженные мнения принадлежат третьей стороне и не обязательно отражают мнения Binance Academy. Цены на цифровые активы могут быть волатильными. Стоимость ваших инвестиций может как увеличиваться, так и уменьшаться, и вы можете не вернуть вложенную сумму. Вы несете полную ответственность за свои инвестиционные решения, и Binance Academy не несет ответственности за любые убытки, которые вы можете понести. Для получения дополнительной информации смотрите наши Условия использования, Предупреждение о рисках и Условия Binance Academy.
