Транзакция Ethereum ожидает: что проверить перед повторной отправкой
Статус ожидания в кошельке не повод повторять платёж. Найдите транзакцию и её место в очереди, прежде чем выбирать следующий шаг.
Перед повторной отправкой проверьте исходную транзакцию в правильной сети. Статус ожидания в кошельке может означать, что транзакция ждёт включения в блок, стоит в очереди за другой или что кошелёк ещё не обновил данные. Повторный платёж может создать отдельную транзакцию, которая исполнится позднее.
Этот список проверок относится к обычным транзакциям с обычного аккаунта в Ethereum Mainnet, также называемого внешним аккаунтом, или EOA. Для смарт-аккаунтов, сервисов приватных транзакций и пакетов транзакций, переводов через мосты и выводов с бирж нужны инструкции соответствующего сервиса. Если отправка была не с аккаунта под вашим контролем, не пытайтесь самостоятельно заменить транзакцию отправителя.
Начните с сети и полного хеша транзакции
Первую часть проверки можно выполнить без подключения кошелька и без подписей. Откройте сведения о транзакции в кошельке отправителя и запишите:
- Сеть: убедитесь, что это Ethereum Mainnet. Адрес формата Ethereum в другой сети не делает её транзакцию транзакцией Mainnet.
- Хеш транзакции: скопируйте идентификатор целиком, а не адрес получателя. Используйте ссылку на обозреватель из кошелька и проверьте, что она ведёт в нужный обозреватель.
- Отправитель: сравните полный адрес From с аккаунтом, с которого отправляли. Проверьте также получателя и предполагаемое действие.
- Nonce: найдите порядковый номер этой транзакции в её сведениях. Запишите его вместе с хешем: при замене хеш меняется, а отправитель и nonce остаются теми же.
Документация Ethereum о транзакциях выделяет отправителя, получателя, сумму, входные данные и nonce в отдельные поля. Транзакция к контракту может выполнять действие, а не просто платить на адрес из поля To. Проверяйте расшифрованные сведения, если они доступны; не считайте любую транзакцию обычным переводом ETH.
Сохраните исходный хеш, даже если кошелёк предлагает кнопку повтора. Он даёт конкретную запись, к которой можно вернуться, вместо меняющегося баланса или исчезнувшего уведомления.
Прочитайте статус, прежде чем выбирать решение
В обозревателе смотрите одновременно на статус и сведения о блоке. Etherscan описывает ожидание как ожидание включения в блок. Низкие комиссии и высокая нагрузка могут увеличивать задержку, но одно слово pending не объясняет причину.
| Что показывает запись | Что проверить дальше |
|---|---|
| Pending, блока нет | Проверьте более ранние неразрешённые nonce отправителя перед рассмотрением замены. |
| Success, блок есть | Проверьте действие и итоговое состояние. Повтор может продублировать платёж. |
| Failed, блок есть | Прочитайте причину ошибки. Ожидание или ускорение уже включённой транзакции не сделает её успешной. |
| Dropped and replaced | Перейдите к хешу замены и проверьте её статус и действие. |
| Хеш не найден | Перепроверьте сеть и полный хеш, затем сравните активность кошелька с историей отправителя в обозревателе. |
Неуспешная транзакция отличается от той, которая ещё ждёт. Спецификация статуса квитанции фиксирует успех или ошибку исполнения; неуспешное исполнение всё равно может быть включено в блок. За потраченный при исполнении газ взимается плата даже при ошибке действия, как объясняет руководство Ethereum о газе. Разберитесь с ошибкой до подтверждения новой попытки.
Для тех, кто проверяет данные программно: документация JSON-RPC о квитанциях указывает, что у ожидающей транзакции квитанции нет. Возвращённая квитанция содержит блок и статус. В исходном ответе JSON-RPC 0x1 означает успех, а 0x0 ошибку (значения 1 и 0). Само отсутствие квитанции не устанавливает, где находится транзакция: проверьте, что провайдер знает хеш и опрашивает правильную сеть.
Хеш, не найденный в одном обозревателе, является пока неразрешённым наблюдением, а не доказательством того, что транзакция никогда не исполнится. Учитывайте распространение и индексацию, перепроверьте сведения об отправке в кошельке и обратитесь к официальной помощи кошелька, если записи всё ещё расходятся. Не создавайте второй платёж лишь для проверки отображения.
Найдите первый неразрешённый nonce в очереди
Транзакции обычного аккаунта идут последовательно. Допустим, вы нашли ожидающие транзакции с nonce 42, 43 и 44, а предыдущие уже включены в блоки. Это пример, а не действующий аккаунт. Первым нужно исследовать nonce 42; увеличение комиссии для 44 не убирает более ранний разрыв.
Откройте активность отправителя в той же сети и сравните её со списком ожидания в кошельке. Проверьте, ожидает ли самый ранний неразрешённый nonce, уже включён ли он или связан с хешем замены. Делайте это для одного аккаунта отправителя, а не всех аккаунтов, видимых в кошельке.
Объяснение замены от Etherscan показывает, что у замены тот же отправитель и nonce, что у исходной транзакции. Более ранний nonce должен быть использован включённой в блок транзакцией, прежде чем смогут исполниться следующие. Неуспешная транзакция в блоке тоже использует свой nonce: правила транзакций протокола увеличивают nonce отправителя до исполнения. Не пытайтесь продолжать замену nonce, уже использованного в сети.
Когда первый разрыв устранён, заново проверьте следующие транзакции в очереди. Они всё ещё могут содержать действия, которые вам больше не нужны. Устранение первого препятствия не означает решения одобрить всё, что стоит за ним.
Ожидание, ускорение и отмена являются разными решениями
Если транзакция всё ещё ожидает и действие вам нужно, можно выбрать ожидание. Нет общего срока, после которого любая транзакция Ethereum автоматически завершается ошибкой. Сопоставьте текущий статус и комиссии с необходимостью завершить действие.
Функция Speed up в кошельке пытается заменить транзакцию с тем же nonce и большей комиссией. Cancel тоже пытается выполнить замену; она не стирает подписанную инструкцию из сети. Исходная транзакция может попасть в блок первой. Включённая в блок транзакция отмены расходует газ, поэтому отмена не является бесплатным откатом.
Следуйте актуальным официальным инструкциям своего кошелька. Руководство MetaMask описывает поддерживаемые элементы управления и связь nonce. Перед решением подписать прочитайте в подтверждении сеть, аккаунт, действие и комиссию. Используйте текущие оценки, а не значение комиссии со старого скриншота. Этот список не задаёт универсального множителя комиссии и не гарантирует включения в блок.
Обычная операция Send с новым nonce не становится заменой только потому, что получатель и сумма совпадают. Если вы уже повторили отправку, сохраните оба хеша и установите статус каждой записи до следующего действия.
Для обычных транзакций, комиссию за которые вы оплачиваете сами, проверяйте нативный ETH в Mainnet. Токен или общий итог портфеля не подтверждает баланс для газа; наше руководство об ETH и WETH объясняет различие.
Сброс кошелька меняет локальную историю, а не Ethereum
Если обозреватель показывает включение в блок, а кошелёк всё ещё ожидание, обновите или заново откройте кошелёк и перепроверьте точный хеш. Если расхождение сохраняется, обратитесь в официальную поддержку с сетью, публичным адресом отправителя, хешем и nonce. Сохраните эти сведения перед изменением локальной активности.
Инструкция MetaMask по сбросу ограничивает этот шаг случаями, когда поддержка велела его выполнить и транзакция не видна в обозревателе. Очистка активности и данных nonce удаляет локальные сведения кошелька о транзакциях. Она не отменяет уже отправленную в сеть транзакцию, а сброс аккаунта отличается от сброса всего кошелька.
Наконец, неизменившийся баланс портфеля не доказывает ошибку, а уменьшившийся баланс не показывает, какая именно транзакция исполнилась. На сравнение влияют комиссии, другая активность и задержки данных. Используйте список проверок при расхождении баланса после проверки записи транзакции. Перед любой новой подписью вы должны уметь назвать сеть, отправителя, исходный хеш, nonce и наблюдаемый статус, включая любую замену.
Частые вопросы
Можно ли отправить платёж снова, пока первая транзакция ожидает?
Сначала проверьте исходный хеш, сеть, отправителя и nonce. Новый платёж с другим nonce может исполниться как отдельная транзакция. Замена через кошелёк является другой операцией и использует исходный nonce.
Отменяет ли очистка активности MetaMask ожидающую транзакцию?
Нет. Очистка активности удаляет из кошелька локальную историю транзакций и данные nonce. Она не отзывает подписанную транзакцию из Ethereum. MetaMask разрешает сброс только по указанию официальной поддержки и когда транзакция не видна в обозревателе.
Можно ли отменить уже успешную транзакцию Ethereum?
Кнопка Cancel в кошельке не может обратить подтверждённую транзакцию. Отмена является попыткой заменить ещё ожидающую транзакцию, и исходная может попасть в блок раньше замены.