До недавнього часу ми вважали мережу Ефіру безвідмовною як автомат калашникова. Але автомат таки може заклинити. В чому власне проблема – якщо ви відправите в мережу транзакцію з ціною газу недостатньою для здійснення транзакції або виконання коду, то Ваша транзакція буде бовтатися в статусі pending якийсь тривалий невизначений час. А якщо від цього облікового запису залежить Ваш бізнес процес – то Ваш бізнес може повністю встати. Що власне.
Наприклад: відправивши у мережу транзакцію на Approve виведення коштів з гаманця, була встановлена мінімальна вартість за газ – 1 gwei. Транзакція пішла в мережу і повисла в статусі Pending. Всі наступні за нею транзакції так само повисали в статусі пендінг в незалежності від того, яка була встановлена ціна на газ – 21 або навіть 41 gwei. У спробах хоч якось вплинути на ситуацію – Ви генеруєте нові і нові транзакції.
Таких транзакцій може зібратися хоч 20, хоч 100, поки не буде оброблена перша проблемна транзакція з ціною за газ в 1 Gwei – Ви нічого зробити не зможете. Вимальовується неприємна картина… Скільки Вам чекати не зрозуміло, зателефонувати майнерам так само не представляється можливим. А якщо Ваш аккаунт є ще й Owner’ом якогось смарт контракту або MultiSig гаманця – то ніяких дій по конфігурації смарт контрактів або підписів за MultiSig’у Ви так само зможете.
Але рішення було знайдено! Для цього необхідно надіслати в мережу нову транзакцію, вказавши у неї nonce такий-же як у транзакції, що спричинила затор, і виставивши ціну на газ Вище, наприклад 20 Gwei. Транзакція може нічого не відправляти – тобто можна відправити 0 Eth. Для цього необхідно:
- На сайті https://etherscan.io знайти Вашу “проблемну” транзакцію і дізнатися у неї nonce.
- Перейти на сайт https://www.myetherwallet.com, потім у вкладку Send Offline Введіть Вашу адресу в полі From Address, будь-яку адресу в поле To Address, Value/Amount to Send 0 ціну на газ Gas Price виставте в 20 gwei – 20000000000 (9 нулів після 20).
- Потім вкажіть nonce, який ви дізналися на etherscan.io, виберіть Keystore File (UTC / JSON), виберіть файл keystore Вашого облікового запису, введіть пароль, щоб розблокувати Ваш аккаунт кнопкою Unlock. Тут доведеться трохи почекати – йде процес розблокування облікового запису.
- Потім тиснемо на Generate Transaction, після чого відправляємо транзакцію кнопкою Send Transaction.
От і все! Дивимося на Ethetscan.io як Ваші транзакції почали ходити.
Якщо в мережу Ви встигли відправити кілька транзакцій з дешевим газом – необхідно повторити цю процедуру для кожної з них.
Відмінити можна тільки транзакцію що перебуває в статусі pending !!!