Анатомия транзакции: nonce, газ, mempool и подтверждения
Что происходит от нажатия «Подписать» до подтверждения в блоке: поля транзакции, nonce, mempool, включение в блок, финальность и причины застрявших транзакций.
В этой статье
Вы нажимаете «Подтвердить» в приложении, кошелёк предлагает подписать - и через несколько секунд интерфейс сообщает, что всё прошло. Между этими моментами происходит целая цепочка событий. Её понимание помогает не паниковать, когда «что-то зависло», и читать данные в обозревателе блоков.
Из чего состоит транзакция
Транзакция - это структура данных. Основные поля:
- from - отправитель (определяется по подписи).
- to - получатель: другой адрес или адрес контракта. Для создания нового контракта поле пустое.
- value - сколько основной монеты передаётся (может быть нуль).
- data - для вызова контракта: какую функцию вызвать и с какими аргументами. Пусто при простом переводе. Формат описан в статье про ABI.
- nonce - порядковый номер транзакции отправителя.
- gas limit - максимум газа, который вы готовы потратить.
- maxFeePerGas и maxPriorityFeePerGas - предельные цены газа (см. статью о комиссиях).
- chainId - идентификатор сети. Он защищает от воспроизведения: транзакция, подписанная для Base, не будет принята в Ethereum.
- подпись - доказательство, что транзакцию отправил владелец ключа.
Жизненный путь транзакции
1. Создание и подпись. Интерфейс формирует транзакцию, кошелёк показывает её вам, вы подписываете закрытым ключом. Подпись происходит локально, ключ никуда не отправляется.
2. Отправка узлу. Кошелёк отправляет подписанную транзакцию на RPC-узел сети - компьютер, который принимает запросы. Узел проверяет подпись, nonce и баланс.
3. Mempool. Узел рассылает транзакцию соседям, она попадает в mempool - общий «зал ожидания». Здесь все ждут включения в блок. В это время транзакция видна всем, но ещё не исполнена.
4. Включение в блок. Валидатор, формирующий очередной блок, выбирает транзакции из mempool - преимущественно с наибольшими чаевыми. Транзакция исполняется: контракт меняет своё состояние, результат записывается.
5. Подтверждения. Каждый следующий блок поверх вашего добавляет уверенности, что запись не откатится. В Ethereum финальность - гарантия, что блок не будет переписан, - наступает примерно через 13 минут (две эпохи). Для практических целей обычно хватает нескольких блоков.
Что такое nonce
Nonce - счётчик транзакций вашего адреса: 0, 1, 2… Сеть принимает их строго по порядку. Это защищает от дублирования: нельзя исполнить дважды одну и ту же подписанную транзакцию, потому что её nonce уже занят.
Отсюда следствие, которое выручает при проблемах: транзакция с nonce 5 не исполнится, пока не исполнена транзакция с nonce 4. Если «застряла» одна, все следующие стоят за ней в очереди.
Почему транзакция «зависла»
Самая частая причина - слишком низкая цена газа. Вы отправили транзакцию, когда сеть была свободной, цена выросла, и валидаторам стало невыгодно брать вашу. Транзакция висит в mempool.
Что можно сделать:
- Подождать. Часто нагрузка спадает, и транзакция проходит сама.
- Ускорить. Кошельки позволяют отправить ту же транзакцию (тот же nonce) с более высокой ценой газа, и она заменит старую.
- Отменить. Отправьте с тем же nonce транзакцию себе на себя с нулевой суммой и более высокой ценой газа.
Статусы в обозревателе
- Pending - в mempool, ещё не включена.
- Success - выполнена, результат записан.
- Failed (Reverted) - выполнение остановлено ошибкой. Состояние контракта не изменилось, но газ потрачен.
Ошибка контракта обычно сопровождается причиной - например, «WrongStatus» или «NotAuthorized». Хорошие интерфейсы переводят эти технические сообщения на понятный язык.
«Транзакция отправлена, а статус не обновляется»
Интерфейс узнаёт о результате опросом сети: ждёт, когда по хешу транзакции появится квитанция (receipt). Иногда публичный узел отвечает с задержкой, пока интерфейс уже показал состояние «отправлено». Это не ошибка: подождите минуту и обновите страницу. Окончательную правду показывает обозреватель блоков - об этом в статье как читать Etherscan.
Что почитать дальше
Одна из самых частых транзакций для токенов - разрешение, или approve. Она вызывает больше всего вопросов и рисков: ERC-20 и approve. А чтобы читать происходящее самостоятельно - руководство по обозревателю блоков.
Читайте также
- 2 · Практика
Как читать Etherscan: проверяем контракт, транзакцию и события
Практическое руководство по обозревателям блоков (Etherscan, Basescan, Polygonscan, BscScan): как проверить адрес, транзакцию, контракт, токены и разрешения.
3 мин чтения - 3 · Под капотом
EVM изнутри: стек, память, storage, calldata и стоимость газа
Как виртуальная машина Ethereum исполняет смарт-контракт: стековая архитектура, области данных, опкоды, цена операций и почему упаковка storage экономит деньги.
4 мин чтения
Упоминается в статьях
- Криптография с открытым ключом: как подпись доказывает, что это вы
- Словарь терминов: блокчейн, кошельки, смарт-контракты и эскроу от A до Я
- Жизненный цикл сделки: от оферты до выплаты шаг за шагом
- Комиссии сети (газ), L1 и L2: какую сеть выбрать для сделки
- Как читать Etherscan: проверяем контракт, транзакцию и события
- Аккаунты и состояние Ethereum: EOA, контракты и мировое состояние
- EIP-1559: как устроен рынок комиссий Ethereum (base fee, чаевые и сжигание)
- MEV и фронтраннинг: кто и как зарабатывает на порядке транзакций
Готовы попробовать?
Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.

