Mempool (мемпул) — это «очередь» неподтверждённых транзакций в узле блокчейна. Когда вы отправляете транзакцию, она не попадает сразу в блок: сначала её принимает один или несколько узлов сети и добавляют в локальный mempool. Уже из этих мемпулов майнеры/валидаторы выбирают транзакции для включения в блок.
Важно понимать:
- mempool нет единого на всю сеть — у каждого узла он свой;
- содержимое mempool в публичных сетях видно наблюдателям и ботовой инфраструктуре (MEV);
- политика mempool влияет на UX пользователей и стабильность DeFi-протоколов.
Как работает mempool на уровне узла
Типичный цикл:
- узел получает транзакцию по сети (от кошелька или другого узла);
- проверяет базовые условия:
- корректная подпись;
- достаточно средств/баланса;
- валидные поля комиссии/газа;
- если всё корректно, узел:
- сохраняет транзакцию в mempool;
- ретранслирует её другим узлам;
- транзакция ждёт, пока майнер/валидатор включит её в блок — или пока не будет вытеснена/удалена.
Политика mempool включает:
- лимиты по размеру — максимальный объём памяти под очередь;
- правила замещения — можно ли заменить транзакцию новой (например, с большей комиссией при том же nonce);
- фильтры — по минимальной комиссии, приоритету и другим параметрам.
Mempool в Ethereum и EVM-сетях
В экосистеме Ethereum mempool тесно связан с моделью газа и комиссий:
- каждая транзакция задаёт:
- лимит газа;
- параметры комиссии (gas fee: base fee + priority/тип EIP-1559);
- узлы сортируют транзакции по эффективной стоимости для майнера/валидатора;
- блок-продюсер выбирает наиболее выгодные транзакции при формировании блока.
Особенности:
- nonce-семантика.
Аккаунт в Ethereum имеет последовательный nonce. Транзакции с одним и тем же nonce могут использоваться для:
- отмены (cancel) — новая транзакция с тем же nonce и более высокой комиссией, но без эффекта;
- ускорения (speed-up) — та же операция, но с большей комиссией.
- Форк mainnet на локальной ноде.
Для тестирования DeFi-логики разработчики используют локальные mempool’ы (Hardhat Network, Anvil), которые форкают состояние сети, но управляют очередью транзакций отдельно от реального mainnet.
- L2 и mempool.
В роллапах и других L2-решениях mempool часто контролируется централизованным sequencer’ом:
- он принимает пользовательские транзакции;
- упорядочивает их;
- периодически публикует агрегированные данные в L1.
Это создаёт отдельный слой вопросов о том, кто контролирует порядок транзакций и как это влияет на MEV.
Публичный и приватный mempool
В классическом публичном mempool:
- транзакция становится видна:
- другим узлам;
- сторонним наблюдателям;
- MEV-ботам, специализирующимся на арбитраже, ликвидациях, sandwich-атаках;
- любой, кто видит выгодную транзакцию, может попытаться «обогнать» её, предложив более высокую комиссию.
Появился и другой подход — приватные mempool’ы:
- пользователь отправляет транзакцию напрямую блоко-билдеру/валидатору через приватный RPC/relay;
- транзакция минует публичный mempool (или попадает туда уже при включении в блок);
- цель — защититься от front-running и sandwich-атак, особенно в чувствительных DeFi-операциях.
Однако приватные mempool’ы:
- повышают асимметрию информации между участниками;
- концентрируют власть у операторов relays и крупных searchers;
- требуют доверия к тому, что оператор не злоупотребит своим положением.
Подробнее о связанных рисках см. MEV и типичные ловушки EVM.
Размер mempool и «застрявшие» транзакции
Узел не обязан хранить все транзакции бесконечно:
- при нагрузке и ограничениях по памяти узел начинает:
- отбрасывать транзакции с минимальной комиссией;
- упорядочивать очередь по доходности для майнера/валидатора;
- если комиссия слишком мала, транзакция:
- может зависнуть надолго;
- или полностью исчезнуть из большинства mempool’ов.
Для пользователя это выглядит как «транзакция висит в ожидании»:
- кошелёк показывает статус pending;
- в обозревателе транзакций она есть в mempool, но не включается в блоки;
- иногда её уже не видит часть узлов.
Стандартные варианты действий:
- ускорение (speed-up).
Отправить ту же транзакцию с тем же nonce, но с более высокой комиссией — большинство узлов заменят старую версию новой.
- отмена (cancel).
Отправить «пустую» транзакцию на свой адрес с тем же nonce и повышенной комиссией, чтобы «закрыть» слот.
Риски и влияние mempool на DeFi
Для обычного пользователя mempool — чаще всего «невидимый слой». Но для DeFi и активных трейдеров он критичен:
- Front-running и sandwich-атаки.
Видимость pending-транзакций позволяет ботам:
- вставлять свои сделки перед и после пользовательской;
- забирать арбитражную прибыль, ухудшая цену исполнения для пользователя.
- Борьба за ликвидации.
В протоколах кредитования mempool — поле конкуренции ботов-ликвидаторов за право первым провести ликвидационную транзакцию.
- Спайки комиссий и mempool-флуды.
Резкие всплески активности (airdrop, запуск токена, новости) ведут к заполнению mempool, росту комиссий и ухудшению UX.
- Атаки на протоколы через mempool.
Некоторые эксплойты используют комбинацию:
- flash-кредитов;
- последовательности транзакций в одном блоке;
- тонкого управления порядком транзакций в mempool.
Поэтому в серьёзных DeFi-протоколах:
- учитывают поведение mempool при проектировании архитектуры;
- тестируют стратегии на форкнутых сетях с «реалистичным» заполнением mempool;
- внедряют механизмы защиты (например, использование приватных каналов для особо чувствительных операций).
Практические моменты для пользователя
- Почему моя транзакция долго не подтверждается?
Чаще всего — из-за слишком низкой комиссии. Сетевой спрос вырос, и майнерам/валидаторам выгоднее выбирать другие транзакции.
- Можно ли «отменить» транзакцию в mempool?
Нельзя удалить её «вручную» из всех узлов, но можно:
- заменить её новой с тем же nonce и большей комиссией (ускорить);
- отправить транзакцию-отмену на свой адрес.
- Как увидеть мемпул?
Через блок-обозреватели и специализированные панели: они показывают:
- число pending-транзакций;
- распределение по комиссиям;
- иногда конкретные транзакции.
- Нужно ли всегда пользоваться приватными mempool’ами?
Они полезны для крупных и чувствительных сделок (например, обмен крупных объёмов на DEX), но не обязательны. Важно понимать, кому вы доверяете свой поток транзакций.
FAQ по mempool
Почему моя транзакция долго не подтверждается? Чаще всего причина — слишком низкая комиссия. При росте спроса майнерам/валидаторам выгоднее включать более «дорогие» транзакции, поэтому ваша может часами оставаться в pending или быть выброшенной из части mempool’ов по лимиту.
Можно ли отменить уже отправленную транзакцию в mempool? Напрямую «удалить» её из всех узлов нельзя. Но можно:
- отправить транзакцию-отмену на свой же адрес с тем же nonce и более высокой комиссией;
- или отправить ту же операцию, но с корректной комиссией (speed-up).
В обоих случаях новая транзакция приоритетно заменит старую в mempool.
Что делать, если транзакция «пропала» из обозревателя? Вероятно, она была вытеснена из mempool большинства узлов (из-за низкой комиссии или истечения срока хранения). Если операция всё ещё актуальна, отправьте новую транзакцию с актуальной комиссией: старая, по сути, считается несуществующей.
Чем публичный mempool отличается от приватного? В публичном mempool ваши pending-транзакции видят все — включая MEV-ботов и арбитражеров. В приватном mempool (через private RPC/relay) транзакция отправляется напрямую блоко-билдеру и не светится в общей очереди до включения в блок. Это снижает риск front-running, но создаёт зависимость от оператора приватного канала.
Почему в разных обозревателях статус одной и той же транзакции может отличаться? У разных узлов — разные mempool’ы и политики. Один узел ещё хранит вашу транзакцию, другой уже выкинул. Поэтому один обозреватель может показывать pending, а другой — ничего не знать о транзакции. На финальный статус влияет только факт включения в блок или его отсутствия.
Как mempool влияет на DeFi и цену исполнения сделок? Поскольку заявки видны заранее, боты могут:
- арбитражировать разницу цен между DEX до того, как ваша сделка будет включена;
- делать sandwich-атаки, ухудшая ваш курс;
Поэтому для крупных сделок DeFi-пользователи часто предпочитают приватные отправки транзакций и/или защитные механизмы в интерфейсах (анти-MEV, ограничение slippage).
