Ethereum для новичков: как работает сеть, транзакции и почему есть комиссии
12-12-2025, 21:58
Авторизуйтесь или зарегистрируйтесь, чтобы оценивать материалы, создавать записи и писать комментарии.
Авторизоваться© 2026 24k.ru. Все материалы носят исключительно информационный характер и не являются индивидуальной инвестиционной рекомендацией (ФЗ-39 «О рынке ценных бумаг»). Криптовалюты не являются законным средством платежа в РФ (ФЗ-259). Используя сайт, вы соглашаетесь с нашей Политикой конфиденциальности и использованием cookie.
Ситуация знакомая: вы отправили транзакцию в Ethereum — а она либо долго “Pending”, либо стала Failed/Reverted, либо в кошельке “всё ок”, но получатель ничего не видит. В Ethereum это решается не “магией”, а диагностикой: что именно произошло (не дошла до блока / попала в блок и упала / была заменена / была отброшена из mempool) — и уже под это выбирается действие.
Быстрый алгоритм:
1) Откройте транзакцию в обозревателе по tx hash и определите статус: Pending или Failed (или вообще “Not found”).
2) Если Pending — почти всегда лечится ускорением (speed up) или отменой (cancel) через транзакцию с тем же nonce и более высокими параметрами комиссии.
3) Если Failed/Reverted — это уже “сделка не состоялась”: причину читаем в ошибке, правим условия (slippage/allowance/gas limit) и отправляем заново.
4) Если “Not found” — транзакция могла не разойтись по сети или была выброшена из mempool: её обычно нужно переотправить.
Базовые страницы в нашей вики, которые помогут понимать термины по ходу (открывайте по мере необходимости): транзакция, комиссия (gas fee) в Ethereum, mempool.
Содержание
Слово “не прошла” люди используют для трёх разных случаев. Чтобы не лечить не то, проверьте tx hash в обозревателе:
| Что вы видите | Что это означает | Самое частое действие |
|---|---|---|
| Pending (нет номера блока) | Транзакция в mempool, ещё не включена в блок | Поднять комиссию (speed up) или отменить (cancel) |
| Success (есть номер блока) | Транзакция выполнена | Проверить сеть/получателя/токен, дождаться подтверждений |
| Failed / Reverted (есть номер блока) | В блок попала, но действие не выполнилось | Исправить причину (slippage, allowance, gas limit и т.д.) и отправить заново |
| Not found / dropped (обозреватель не находит) | Транзакция могла не разойтись по сети или была выброшена из mempool | Переотправить (иногда — с тем же nonce) |
Главный вывод: “Pending” лечится комиссией и nonce-логикой. “Failed” лечится условиями исполнения (контракт/параметры). Это две разные ветки.
| Симптом | Вероятная причина | Что делать (коротко) |
|---|---|---|
| Pending 10+ минут, сеть загружена | Слишком низкие Max Fee / Priority Fee | Speed up: поднять Max Fee и Priority Fee |
| Pending, а другие ваши транзакции тоже “не идут” | Nonce-очередь: более ранняя pending блокирует следующие | Ускорить/отменить самую раннюю транзакцию по nonce |
| “Replacement transaction underpriced” | Недостаточный bump при замене | Поднять параметры сильнее (обычно +10–15% и выше) |
| Fail / Reverted | Контракт откатил выполнение (slippage, allowance, deadline) | Проверить причину, поправить параметры, отправить заново |
| Out of gas | Gas limit слишком низкий | Увеличить gas limit (или использовать авто-оценку) |
| Insufficient funds | Не хватает ETH на value+fee | Пополнить ETH, затем отправить заново |
| В кошельке “успешно”, а в сервисе “не пришло” | Сервис ждёт подтверждения / вы в другой сети | Проверить сеть, дождаться confirmations/finality |
Pending означает: транзакция не включена в блок. Ниже — 10 причин, которые встречаются чаще всего.
При EIP-1559 вы задаёте потолки: max fee и priority fee. Если они ниже текущих условий сети, валидаторам просто невыгодно включать вашу транзакцию, и она “висит” в mempool.
Даже если вы поставили адекватные параметры, при резком росте загрузки base fee может подняться выше вашего max fee. Тогда транзакция “физически не может” быть включена, пока base fee не упадёт.
У каждого адреса есть порядок транзакций — nonce. Если транзакция с меньшим nonce зависла, транзакции с большими nonce обычно не смогут пройти вперёд: сеть ждёт порядок.
У узлов есть правило: заменяющая транзакция с тем же nonce должна быть заметно “выгоднее” (иначе это спам-замены). Если прибавка маленькая, вы получите ошибки вроде replacement transaction underpriced.
Иногда кошелёк показывает “Submitted”, но транзакция не попала в широкий mempool: ваш RPC мог не распространить её, соединение могло оборваться, или провайдер “подвис”.
Mempool не бесконечный. Очень старые транзакции с низкой комиссией могут быть выброшены узлами. Тогда вы видите “pending” у себя, но в сети это уже “призрак”.
Если на адресе не хватает ETH, чтобы покрыть сумму перевода плюс максимум комиссии, транзакция может не попасть в блок или будет отвергаться узлами.
Иногда в кошельке вы думаете, что в Ethereum L1, а на деле активна другая сеть (L2/sidechain). В результате “там” транзакция ушла, а “здесь” вы её не находите, или наоборот.
В моменты, когда валидаторы охотнее берут транзакции с более высоким приоритетом (tip), “нормальные” транзакции могут ждать дольше, хотя формально валидны.
Бывает, что расширение кошелька глючит, браузер режет запросы, или локальная очередь кошелька показывает “pending”, хотя транзакция уже заменена.
Failed/Reverted означает: транзакция попала в блок, но выполнение откатилось. Важно: откат не всегда означает “вы потеряли активы”, но комиссия за попытку чаще всего списывается (сеть уже потратила ресурс на выполнение до места ошибки).
Вы задали слишком маленький gas limit или кошелёк ошибся с оценкой, и выполнение не уложилось в лимит.
Если цена сдвинулась сильнее, чем вы разрешили, контракт откатывает сделку, чтобы не “продать хуже”.
Многие операции имеют “срок годности”, чтобы транзакция не исполнилась через час по уже другой цене.
Если вы пытаетесь потратить токен контрактом, а разрешение (approve) не выдано или меньше нужного, операция откатится.
Вы могли “видеть баланс” в интерфейсе, но он изменился: вы сделали другой перевод, баланс был в другой сети, или часть средств заблокирована.
Некоторые контракты имеют ограничения: минимальная сумма, пауза протокола, белые списки, лимиты.
Иногда интерфейс dApp формирует неправильный вызов (особенно при перегруженном RPC), и контракт закономерно откатывает выполнение.
Это классическая ошибка: не хватает ETH, чтобы покрыть комиссию и сумму перевода одновременно. Важно: даже если переводите токен, комиссия в L1 платится ETH.
Адрес контракта может существовать в другой сети, а в текущей сети быть “пустышкой” или другим контрактом. Результат — revert или бессмысленное действие.
Кошелёк часто симулирует выполнение до отправки, но реальный блок может отличаться: цена, состояние пула, MEV, конкурентные транзакции. Поэтому “в симуляции ок” не всегда гарантирует успех.
Pending почти всегда решается заменой транзакции с тем же nonce:
Failed/Reverted не “чинится” повышением комиссии: транзакция уже была в блоке и уже неудачна. Нужно исправить условия:
Nonce — это порядковый номер транзакции для вашего адреса. Он нужен, чтобы сеть знала, в каком порядке исполнять ваши действия и чтобы нельзя было “переиграть” историю адреса.
Ключевое правило: транзакции от одного адреса обрабатываются по nonce. Если транзакция с nonce=15 pending, то транзакции с nonce=16,17… могут ждать, даже если у них высокая комиссия.
Поэтому если у вас “всё зависло”, обычно нужно лечить не последнюю отправку, а самую раннюю pending транзакцию в очереди.
Когда: транзакция pending и вам нужно, чтобы она прошла.
Важно про replacement: заменяющая транзакция должна быть заметно более привлекательной по комиссии, иначе узлы могут её отвергнуть как “underpriced”. Если после ускорения вы снова видите зависание, поднимайте параметры сильнее.
Когда: транзакция pending, вы передумали или она мешает другим операциям (nonce-очередь).
Технически “отмена” — это отправка новой транзакции с тем же nonce, обычно на свой же адрес и с нулевой суммой, но с более высокой комиссией, чтобы именно она попала в блок вместо зависшей.
Что будет дальше: как только “cancel” попадёт в блок, зависшая транзакция с тем же nonce станет невозможной (nonce уже занят), и очередь разблокируется.
Если вы делаете транзакции в L2 (Arbitrum/Optimism/Base/zkSync и т.д.), то базовая логика “pending/failed” сохраняется, но добавляются нюансы:
Практическое правило то же: сначала смотрите статус в обозревателе вашей сети, затем решаете — ускорение/отмена (для pending) или правка условий (для failed).
Обычно нет. Пока транзакция не включена в блок, списания комиссии не происходит. Деньги списываются, когда транзакция попадает в блок и исполняется (или пытается исполниться).
Чаще всего да: сеть уже потратила вычислительный ресурс на попытку выполнения до места ошибки. Поэтому важно читать причину revert и не повторять одну и ту же ошибку “в лоб”.
Иногда да: если нагрузка сети упадёт, base fee снизится, и ваша транзакция снова станет “в рынке”. Но если зависание мешает другим операциям (nonce-очередь), обычно быстрее сделать speed up или cancel.
Частые причины: вы повышали не ту транзакцию (нужно лечить самую раннюю pending по nonce), bump недостаточный для замены, или сеть резко стала ещё более загруженной (base fee вырос выше вашего max fee).
Важно и то, и другое. Max fee — ваш потолок (чтобы покрыть base fee), priority fee — ваш приоритет. Если base fee вырос, нужно поднять max fee. Если конкуренция за блок высокая, может понадобиться увеличить и priority fee.
Материал носит исключительно информационный характер и не является индивидуальной инвестиционной рекомендацией (ФЗ-39). Криптовалюты не являются законным средством платежа в РФ (ФЗ-259).
12-12-2025, 21:58
13-12-2025, 02:11
13-12-2025, 02:00
26-11-2025, 17:35
13-12-2025, 01:29
Анна Коваль
Комментариев нет