DRAFT — ЧЕРНОВИК (Статья находится в процессе доработки)
В последнее время нагрузка на сеть эфира выросла. К тому же часто проводятся ICO которые могут поднять нагрузку на сеть почти в три раза.
Увеличение нагрузки на сеть может привести к ситуации когда ваша транзакция находится в состоянии pending очень долго.
Дело в том что майнеры в первую очередь стараются взять в обработку самые дорогие транзакции. Поэтому у транзакций с большей стоимостью газа шанс обработаться выше. Когда нагрузка на сеть возрастает транзакции с маленькой стоимостью газа могут ожидать своей очереди по несколько дней и даже недель.
На момент написания статьи при нормальной нагрузке на сеть количество транзакций в состоянии pending от 2000 до 4000 тысяч. Когда кто-от начинает ICO количество транзакций в pending может возрасти до 8-11 тысяч. На изображении как раз показан такой резкий скачек.
Когда транзакция очень долго находится в pending пользователь пытается отправить такую же транзакцию но с большим газом, потом еще и еще. В надежде что хоть одна из них пройдет. И все эти транзакции остаются в pending.
Дело в том что транзакции с адреса как-правило обрабатываются в порядке очереди. Поэтому пока не обработана самая первая — запирающая транзакция, остальные будут ждать.
Почему транзакция pending от появляется то исчезает и время ожидания обнуляется?
Когда транзакция попадает в состояние pending, это значит что нода взяла вашу транзакцию к себе в обработку. И сейчас ищет блок. Однако, блок может найти быстрее другая нода, которая не содержит в себе вашу транзакцию. В этом случае нода которая взяла вашу транзакцию «выплевывает» ее и теперь вашу трназакцию в обработку может взять другая нода. В этом случае время обнуляется.
Как протолкнуть или удалить запирающую транзакцию
Стоит отметить, что ожидание транзакции 2-3 часа хоть и не является нормальным, но все же допустимо.
Транзакции в блоке имеют свои уникальные номера — nonce. Если отправить в сеть две транзакции с одинаковым nonce, то только одна из них обработается. А другая будет считаться некорректной. Поэтому нам достаточно повторить транзакцию с тем же nonce но увеличить стоимость газа. В этом случае нода возьмет транзакцию с наибольшей стоимостью в обработку, а запирающую отклонит как некорректную. И мы решим нашу проблему.
Как это сделать?
Итак, если вы хотите именно удалить запирающую транзакцию, то достаточно отправить пустую транзакцию с высокой ценой газа. Возможности установить цена газа нет в кошельке mist или ethereum wallet. Поэтому мы воспользуемся MyEtherWallet .
- Найдите запирающую транзакцию. Для этого зайдите на etherscan.io и введите в поле address адрес с которого отправляли транзакции и нажмите кнопку go.
- Появится список всех транзакций с вашего аккаунта, нажмите на ссылку «pending Txns»
- Перед вами отобразится список всех транзакций в состоянии pending, а также отобразится цена газа. Как правило запирающая транзакция самая первая. Так и есть в мы видим что в первой транзакции цена газа 1 Gwei. А следующая уже за ней в очереди хоть и имеет цену газа 21 Gwei, но не обработается пока не обработается запирающая транзакция. Нажмите на ссылку хэша запирающей транзакции чтобы посмотреть подробности.
- В подробностях скопируйте число none и адрес from (собственно это адрес аккаунта с которого вы отправляли транзакцию)
- Теперь зайдите в на на https://www.myetherwallet.com/ и выберите вкладку Send Offline (Оффлайн перевод).
- Теперь из всех полей нам надо заполнить следующие:
- From Address — указываем адрес с которого отправляли запирающую транзакцию
- To Address — любой существующий адрес
- Gas price — тут нам надо указать цену газа. Наша запирающая транзакция стоила 1 Gwei. Что никуда не годится. Стандартно MyEtherWallet использует цену газа 21 Gwei. Поэтому мы поставим чуть выше — 30 Gwei. Если посмотрим на надпись справа от поля, то увидим там Wei. 1 GWei = 1000000000 Wei. Поэтому нам нужно написать 30000000000.
- nonce — вставляем то значение, которое скопировали в подробностях транзакции
- Value amount — указываем 0
- Теперь наша задача разблокировать кошелек удобным вам способом. Сделайте это самостоятельно. После разблокировки вам будет доступна кнопка generate transaction. Нажимаем на нее. А затем нажмите на send transaction.
- В появившемся окне нажмите синюю кнопку «Yex, I am sure! Make transaction.»
Теперь ваша транзакция должна через некоторое время удалиться. Откройте etherscan.io с вашим адресом и наблюдайте за процессом. Если среди последующих транзакций есть с низким газом, то для них также нужно проделать эту процедуру. В нашем примере после транзакции с 1 Gwei идет транзакция уже с 21 GWei, поэтому нам достаточно убрать только первую.
Большое спасибо коллегам из Fidcom , которые столкнулись с проблемой, нашли способ ее решения , разобрались и предоставили информацию. Также в материалах использовалась информация с www.reddit.com.
Отличная инструкция! Думаю обязательно кого-то выручит, как и меня =)
Спасибо.
добрый день
сделал все по инструкции
написал зеленой полоской он снизу что создан контракт
но он даже не отобразился в списке контрактов ни под ни над запирающим
что делать при такой ситуации ?
спасиюо
Большое Спасибо!
Спасибо, помогло
А как также проделать с кошельком blockchain.info?
Помогите срочно нужно
Экспортируйте ключ кошелька и откройте в MyEtherWallet. А дальше по инструкции.
Здравствуйте. Спасибо за мануал, но у меня не вышло:
Кошелек myetherwallet пишет ошибку: Transaction nonce is too low. Try incrementing the nonce.
Хотя значение в поле nonce аналогичное значению nonce в зависшей транзакции
Буду признателен если поможете.
Спасибо
Вы очень крутые, СПАСИБООО!!!!
Спасибо за статью, мне помогло )
помогите
у меня 3 заявки в процессе Pending
они все Nonce:3
появляются по очереди и исчезают
новые не шлются
что делать ? они исчезнут когда нибудь ?
я пробывал увеличивать гас но он не меняться в заявке — не происходит замена на новую
как долго это может продолжать или это может на всегда ?
так же есть баланс на счету но новые не шлютья с любым газом — выдает ошибку что мол недостаточно газа
СПАСИБО))) очень помогло)))
Опечатка:
В появившемся окне нажмите синюю кнопку «Yex, I am sure! Make transaction.»
В появившемся окне нажмите синюю кнопку «Yes, I am sure! Make transaction.»
Коммент можно не публиковать, поправить и прибить )
как узнать прошла ли транзакция ?
переводил ETC c кошелька MyEtherWallet на биржу poloniex
уже есть много подтверждений.
на кошельке получателя тоже видно что есть два поступления с нужными суммами, но на балансе биржи средства не отображаются.
Если посмотреть TX,то пишет Nonce 1, Nonce 2.
Вот хеши обеих транзакций:
1. 0x7238974b6a6a68eb115e6624e91abafc5ca5c259667b3a70ef7aef8006283968
2.0x7cf0daed44e54a78dfbfca17c9b3a8c618a2ef7666683172bf139357671795d2
Буду благодарен за помощь !
Спасибо, помогло!
А что делать если на Etherscan нет этой транзакции (на etherchain есть)?»
Спасибо! очень помогла эта информация!
Не работает
Нормально сработало:)
Разными способами расшифровую кошелек пишет Подптсанная транзакция не корректна. Помогите пожалуйста
Тоже интересно, походу попал в тот же блок, два дня назад переводил и ждал подтверждения более семи часов. Переводил на метабанк, и пока шли эти семь часов курс упал на 7.5$. Не отменить транзакцию, не «подтолкнуть», ничего нельзя. А можно узнать «приличность» суммы? Если она 0.1 битка, то она довольно далеко в очереди будет и может там пару суток висеть, так что 7 часов — пустяк.
Обновите инфу!
У кошелька Эфира изменился дизайн и теперь не понятно какие адреса вставлять!