Owlio
RU
← Блог
ИнструкцияДля новичка

Транзакция Ethereum ожидает: что проверить перед повторной отправкой

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

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

Этот список проверок относится к обычным транзакциям с обычного аккаунта в Ethereum Mainnet, также называемого внешним аккаунтом, или EOA. Для смарт-аккаунтов, сервисов приватных транзакций и пакетов транзакций, переводов через мосты и выводов с бирж нужны инструкции соответствующего сервиса. Если отправка была не с аккаунта под вашим контролем, не пытайтесь самостоятельно заменить транзакцию отправителя.

Начните с сети и полного хеша транзакции

Первую часть проверки можно выполнить без подключения кошелька и без подписей. Откройте сведения о транзакции в кошельке отправителя и запишите:

  1. Сеть: убедитесь, что это Ethereum Mainnet. Адрес формата Ethereum в другой сети не делает её транзакцию транзакцией Mainnet.
  2. Хеш транзакции: скопируйте идентификатор целиком, а не адрес получателя. Используйте ссылку на обозреватель из кошелька и проверьте, что она ведёт в нужный обозреватель.
  3. Отправитель: сравните полный адрес From с аккаунтом, с которого отправляли. Проверьте также получателя и предполагаемое действие.
  4. 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 в кошельке не может обратить подтверждённую транзакцию. Отмена является попыткой заменить ещё ожидающую транзакцию, и исходная может попасть в блок раньше замены.