Завеликий nonce та інші помилки транзакцій у гаманці

2026-09-03

Завеликий nonce та інші помилки транзакцій у гаманці

Гаманець, який відмовляється надсилати, зазвичай не зламаний. Майже будь-яка помилка, яку він показує, зводиться до одного з трьох: до лічильника під назвою nonce, до ендпоінта, з яким говорить гаманець, або до стелі комісії, яку ви задали самі. Щойно зрозуміло, що саме з трьох скаржиться, розв'язок виявляється коротким — і здебільшого безкоштовним.

Завеликий nonce та інші помилки транзакцій у гаманці: ключові моменти стисло

Що таке nonce рахунку насправді

У мережах з обліковою моделлю кожен рахунок, з якого ви надсилаєте, веде лічбу того, скільки транзакцій він уже надіслав. Ця лічба і є nonce, і починається вона з нуля. Перша транзакція використовує nonce 0, друга — nonce 1, і так далі, без пропусків.

Правило суворе навмисно. Воно фіксує порядок, у якому ваші транзакції виконуються, і робить кожну невідтворюваною: щойно nonce 4 підтверджено, будь-яка пізніша транзакція з тим самим номером відхиляється одразу.

Це не те саме, що nonce у майнінгу — число, яке майнер перебирає в пошуках валідного блоку. Слово одне, завдання різні. Гаманець скаржиться саме на лічильник адреси.

Nonce завеликий, nonce замалий

Гаманець не питає в мережі номер щоразу, коли ви натискаєте «надіслати». Він веде власну лічбу й додає до неї транзакції, які вже розіслав, але ще не побачив підтвердженими. Ця локальна лічба може розійтися з тим, що мережа справді записала, — і дві помилки описують два напрямки цього розходження.

Nonce замалий означає, що запропонований номер уже витрачено. Мережа пройшла повз нього. Зазвичай так буває, коли транзакція, яку ви вважали невдалою, все-таки підтвердилася.

Nonce завеликий означає, що ви лишили пропуск. Мережа чекає nonce 7, а гаманець запропонував 9 — отже, транзакція поки не може виконатися й стоїть у черзі, чекаючи на 7 і 8. Поки вона чекає, нічого не витрачається, але й не відбувається, доки пропуск не заповнено; до того ж вузли тримають чергу лише певний час, тож довгий пропуск може закінчитися не виконанням, а відкиданням транзакції. Звичні причини: транзакція випала з мемпула вже після того, як гаманець її порахував, або кешована історія гаманця розійшлася з мережею.

Пропуск лікується двома способами: заповнити його або забути про нього. Надсилання відсутнього номера звільняє все, що стоїть за ним. Очищення кешованої історії — у більшості гаманців це зветься скиданням рахунку — змушує заново прочитати лічильник із мережі й продовжити зі справжнього номера. Ані те, ані інше не торкається ваших ключів і балансу: nonce зберігається в мережі, а не в гаманці.

Замінити, а не чекати

Транзакцію в очікуванні можна замінити, а не скасувати. Ви надсилаєте нову з тим самим nonce і вищою комісією; яка версія підтвердиться першою, та й знецінює іншу. Переказ самому собі на нульову суму — звичний спосіб скасувати, повтор з початковими даними — звичний спосіб пришвидшити.

Заковика в тому, що вузли не приймають хоч якої малої надбавки. Кожен клієнт має власний поріг — за замовчуванням go-ethereum вимагає, щоб заміна перевершувала витіснювану транзакцію щонайменше на 10%; не дотягнули — вузол лишає те, що має, і відповідає replacement transaction underpriced. Підняти комісію по-справжньому, а не символічно, — ось що змушує заміну спрацювати.

Біткойн розв'язує ту саму задачу інакше, через заміну за комісією, яка працює зі входами, а не з лічильником адреси. Ідея та сама, механіка інша, тож не переносьте кроки з одного гаманця в інший.

Коли гаманець попереджає про комісію

Комісія в сучасних мережах з обліковою моделлю складається з двох частин: базової, яку мережа призначає і спалює, та пріоритетної, що дістається тому, хто вас включить. Надсилаючи, гаманець фіксує максимум, який готовий заплатити за одиницю газу. Усі попередження про комісію ростуть із цієї стелі.

Поставте стелю нижче за поточну базову комісію — і транзакцію просто не включать, доки базова не опуститься їй назустріч. Поставте значно вище — і гаманець може попередити, що найгірший випадок набагато більший за вартість самого переказу: ви навряд чи заплатите всю стелю, але ви її дозволили. В обох випадках попередження про обрану вами стелю, а не про суму, яку ви, найімовірніше, заплатите. Як влаштована ціна газу, варто прочитати один раз: кожне з цих попереджень росте звідти.

RPC-ендпоінти і що ламається разом із ними

Гаманець не зберігає копію мережі. Він питає вузол через RPC-ендпоінт, і все, що ви бачите — баланс, історія, чи пройшла транзакція, — надходить цим з'єднанням.

Тому коли ендпоінт лежить, обмежує вас за частотою запитів або відстає від вершини мережі, гаманець не так помиляється, як не поінформований. Баланс виглядає застарілим. Підтверджена транзакція показується як така, що очікує. Надсилання падає з помилкою з'єднання, хоча з рахунком усе гаразд.

Зміна ендпоінта зазвичай знімає питання, і один справжній ризик варто знати: ендпоінт бачить кожен ваш запит, а ворожий може показати вам будь-що. Додавайте ендпоінти лише з джерел, яким ви це довірили б, і перевіряйте, що ідентифікатор мережі збігається з тією, у якій ви себе вважаєте.

Що ви бачите Що це означає Що робити
Nonce замалий Цей номер уже витрачено Дати гаманцю перечитати лічильник; нічого не застрягло
Nonce завеликий Ви лишили пропуск у послідовності Надіслати відсутній nonce або скинути кеш історії рахунку
Replacement transaction underpriced Надбавка замала, щоб витіснити ту, що очікує Повторити той самий nonce зі значно більшою комісією
Максимум нижчий за базову комісію Ваша стеля нижча за те, що мережа бере зараз Підняти стелю або дочекатися падіння базової
Ендпоінт не відповідає Вузол, до якого ви звертаєтесь, лежить або обмежує Змінити ендпоінт і перевірити ідентифікатор мережі

Зниклі транзакції після імпорту гаманця

Відновлення гаманця на новому пристрої іноді показує порожню історію — тривожно й майже ніколи не означає того, чим виглядає. Ваші кошти записані в мережі на адресу; гаманець зберігає лише сид-фразу, з якої ця адреса виводиться.

Порожню історію пояснюють три речі. Гаманець міг вивести не ту адресу, якою ви користувалися, бо відрізняється шлях деривації або індекс рахунку. Селектор мережі може вказувати не туди. Або історія просто не завантажилася, бо список, на який ви дивитесь, надходить від сервісу індексації, а не з самої мережі.

Розв'язується це порівнянням адреси, а не балансу. Вставте її в блок-експлорер. Якщо експлорер показує ваші транзакції, нічого не втрачено, а проблема в тому, що показує гаманець, — про це варто прочитати як читати невдалу або зниклу транзакцію.

Підсумок

Три рухомі частини пояснюють майже будь-яку помилку транзакції в гаманці: лічильник, який мусить іти поспіль, з'єднання, яке може застаріти, і стеля комісії, яку ви ставите самі. Жодна з них не стосується ваших ключів, і жодна не лікується тим, щоб надіслати ту саму транзакцію ще раз сильніше.

Прочитайте повідомлення, перш ніж діяти. У ньому названо, що саме з трьох скаржиться, а це і є більша частина відповіді. Щоб і далі вивчати основи, читайте інші матеріали Bitbase Academy.

Схожі матеріали

Інші матеріали Bitbase на цю тему:

- Що таке криптовалютний QR-код?

- Комісії в криптотрейдингу: скільки ви платите насправді

- Що таке комісія за криптотранзакцію?

- Он-рамп і оф-рамп у крипті: у чому різниця?

- NAV ETF, премія/дисконт і похибка відстеження

Застереження: Ця стаття є освітнім матеріалом Bitbase Academy і надається лише для інформації. Вона не є інвестиційною, торговою, податковою чи фінансовою порадою. Криптоактиви волатильні — оцінюйте ризики самостійно. Написано станом на вересень 2026 року; орієнтуйтеся на найновішу офіційну інформацію.

Джерела

[1] ethereum.org, "Transactions" ethereum.org

[2] EIP-1559: Fee market change eips.ethereum.org

[3] go-ethereum, core/txpool/legacypool/legacypool.go github.com

[4] ethereum.org, "Nodes and clients" ethereum.org

Пов'язані статті

Більше