Открыть сервис

Мемпул

Мемпул (от англ. memory pool — «пул памяти») — это структура данных в сети криптовалют, работающих на основе технологии блокчейн, в которой временно хранятся неподтверждённые транзакции, ожидающие включения в блок. Мемпул служит промежуточным буфером между моментом создания транзакции и её фиксацией в распределённом реестре. Каждый узел (нода) сети поддерживает собственный мемпул, который может отличаться по составу от мемпулов других узлов из-за задержек распространения транзакций и разницы в политиках фильтрации.

Принцип работы

Создание и распространение транзакции

Когда пользователь инициирует перевод криптовалюты, его кошелёк создаёт транзакцию, подписывает её закрытым ключом и отправляет в сеть. Транзакция сначала попадает в мемпул одного или нескольких ближайших узлов. Узел проверяет её на корректность: достаточность баланса отправителя, валидность подписи, отсутствие двойной траты (double-spending). Если проверка проходит успешно, транзакция добавляется в локальный мемпул узла и рассылается соседним узлам по протоколу распространения (например, через инвентарные сообщения в Bitcoin).

Ожидание включения в блок

Транзакции в мемпуле ранжируются по приоритету, который обычно определяется размером комиссии (в сатоши за байт) и временем ожидания. Майнеры (в сети Bitcoin) или валидаторы (в сетях с Proof-of-Stake) выбирают транзакции из своего мемпула для формирования нового блока. Как правило, в первую очередь включаются транзакции с более высокой комиссией, так как они приносят больший доход майнеру. Транзакции с нулевой или низкой комиссией могут оставаться в мемпуле неопределённо долго, пока не будут отклонены или не будут повторно отправлены с повышенной комиссией.

Подтверждение и удаление

После того как майнер находит новый блок (или валидатор его создаёт), транзакции, включённые в этот блок, удаляются из мемпулов всех узлов, получивших информацию о блоке. Если блок оказывается отвергнутым сетью (например, из-за сиротского блока), транзакции возвращаются в мемпул для повторного включения.

Размер и управление мемпулом

Ограничения по объёму

Мемпул не имеет фиксированного размера — он может расти в зависимости от нагрузки на сеть. Однако каждый узел может устанавливать собственные ограничения на объём мемпула (например, в Bitcoin Core по умолчанию — 300 МБ). При превышении лимита узел начинает удалять самые старые или самые низкоприоритетные транзакции (по принципу «последний пришёл — первый ушёл» или по минимальной комиссии). Это может привести к потере неподтверждённых транзакций, которые затем приходится отправлять заново.

Политика фильтрации

Узлы могут отклонять транзакции, не соответствующие определённым критериям:

  • Минимальная комиссия (например, 1 сатоши за байт).
  • Максимальный размер транзакции (обычно до 100 КБ).
  • Наличие некорректных данных (например, подписи с истекшим сроком).
  • Нестандартные типы транзакций (non-standard), которые не поддерживаются большинством узлов.

Влияние на работу сети

Заторы и комиссии

При высокой активности (например, во время халвинга, ажиотажа или сетевых атак) мемпул может переполняться, что приводит к росту времени подтверждения и увеличению комиссий. Пользователи вынуждены платить более высокие комиссии, чтобы их транзакции были обработаны в первую очередь. В сети Bitcoin в периоды пиковой нагрузки (2017, 2021) мемпул достигал десятков тысяч неподтверждённых транзакций, а комиссии — десятков долларов за перевод.

Аналитика мемпула

Мемпул является важным индикатором состояния сети. Сервисы мониторинга (например, mempool.space, Blockchain.com) отображают:

Эти данные используются трейдерами, майнерами и разработчиками для прогнозирования комиссий и оценки нагрузки.

Особенности в разных криптовалютах

Bitcoin

В сети Bitcoin мемпул является децентрализованным и не имеет единого состояния. Каждый узел хранит свой набор транзакций. Протокол не гарантирует, что транзакция будет включена в блок — это зависит от майнеров. Для повышения вероятности подтверждения используется механизм Replace-by-Fee (RBF), позволяющий отправителю заменить транзакцию на новую с более высокой комиссией.

Ethereum

В Ethereum аналогом мемпула является «пул ожидающих транзакций» (transaction pool). Однако из-за модели счёта (account-based) и газа (gas) транзакции ранжируются по цене газа (gas price). В сети также используется механизм EIP-1559, который сжигает часть комиссии и устанавливает базовую плату, что снижает волатильность комиссий. В Ethereum мемпул может содержать до нескольких тысяч транзакций.

Bitcoin Cash и Litecoin

В этих форках Bitcoin мемпул работает аналогично, но из-за большего размера блока (32 МБ в Bitcoin Cash) заторы возникают реже. Комиссии остаются низкими, а время подтверждения — предсказуемым.

Монеты с конфиденциальностью (Monero)

В Monero мемпул также используется, но из-за технологии кольцевых подписей и скрытых адресов транзакции не раскрывают сумму и отправителя. Однако мемпул может быть атакован с целью деанонимизации (например, атака «эпидемия»).

Безопасность и атаки

Атака двойной траты (double-spending)

Мемпул играет ключевую роль в предотвращении двойных трат. Когда узел получает две конфликтующие транзакции, использующие одни и те же входы, он принимает первую полученную и отклоняет вторую. Однако злоумышленник может попытаться отправить транзакцию напрямую майнеру (минуя мемпул), что может привести к временной двойной трате. Для защиты используются правила консенсуса и механизмы проверки.

Засорение мемпула (mempool flooding)

Атакующий может создать множество транзакций с низкой комиссией, чтобы заполнить мемпул и замедлить обработку легитимных транзакций. Это увеличивает комиссии и время ожидания. Для защиты узлы устанавливают лимиты на количество транзакций от одного отправителя и минимальную комиссию.

Атака «замедление» (stalling)

Злоумышленник может задерживать распространение блоков, чтобы майнеры продолжали работать над устаревшими мемпулами. Это может привести к временным разветвлениям цепи и потере доходов майнеров.

Критика и ограничения

  • Неравенство доступа: Пользователи с низкими комиссиями могут ждать подтверждения часами или днями, что делает сеть менее доступной для мелких транзакций.
  • Централизация майнинга: Крупные майнинговые пулы могут договариваться о приоритетах, что нарушает децентрализацию.
  • Неэффективность: Хранение большого количества неподтверждённых транзакций потребляет ресурсы узлов (память, процессор).
  • Отсутствие гарантий: Транзакция может быть удалена из мемпула без подтверждения, что требует повторной отправки.

Будущее мемпула

С развитием технологий масштабирования (например, Lightning Network в Bitcoin, шардинг в Ethereum) нагрузка на мемпул может снизиться. Внедрение протоколов второго уровня позволяет проводить транзакции вне основной цепи, уменьшая количество неподтверждённых операций. Также разрабатываются алгоритмы динамического управления комиссиями (например, fee estimation), которые помогают пользователям выбирать оптимальную плату.

Источники

  • Antonopoulos, A. M. (2017). Mastering Bitcoin: Unlocking Digital Cryptocurrencies. O'Reilly Media.
  • Wood, G. (2014). Ethereum: A Secure Decentralised Generalised Transaction Ledger. Ethereum Yellow Paper.
  • Bitcoin Core Developer Documentation. (2023). Transaction Pool.
  • Mempool.space. (2024). Mempool Statistics and Visualization.
  • Narayanan, A., et al. (2016). Bitcoin and Cryptocurrency Technologies. Princeton University Press.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →