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

Мемпул: устройство и роль в блокчейне

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

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

В децентрализованных платёжных системах на основе технологии блокчейн, таких как Биткоин, транзакция считается завершённой только после того, как она попадает в блок и проходит необходимое число подтверждений. Процесс прохождения транзакции включает несколько этапов.

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

Каждый полный узел сети поддерживает собственный мемпул, однако из-за задержек распространения данных и различий в настройках содержимое мемпулов разных узлов может незначительно отличаться. Мемпул не является единым централизованным хранилищем — это распределённая совокупность локальных очередей, которые в норме стремятся к консенсусу.

Параметры и ограничения

Ёмкость мемпула не бесконечна. В протоколе Биткоина существует ограничение на общий размер мемпула узла, задаваемое параметром mempoolmaxsize (по умолчанию — 300 МБ). При превышении лимита узел начинает отклонять новые входящие транзакции с наименьшей комиссией, а также может удалять из мемпула старые транзакции с низким приоритетом. Это защищает узлы от переполнения памяти при резких всплесках сетевой активности.

Каждая транзакция в мемпуле имеет срок жизни. Если транзакция долгое время не попадает в блок, узел удаляет её из мемпула. В Биткоине этот период по умолчанию составляет 336 часов (14 суток). После удаления транзакция не передаётся далее, однако отправитель может повторно объявить её в сети, если она всё ещё не была включена в блок.

Важным параметром транзакции является комиссия (fee), которую отправитель платит за обработку. Размер комиссии измеряется в сатоши за байт данных транзакции. Майнеры, формирующие новый блок, экономически заинтересованы включать в него транзакции с максимальной суммарной комиссией, поэтому они сортируют содержимое мемпула по убыванию удельной комиссии. Транзакции с низкой комиссией могут ожидать включения в блок длительное время, особенно в периоды перегрузки сети.

Роль в формировании блоков

Мемпул напрямую связан с процессом майнинга. Когда майнер находит решение задачи Proof-of-Work и получает право создать новый блок, он выбирает транзакции из собственного мемпула. В блок включается ограниченное число транзакций, поскольку размер блока в Биткоине лимитирован (в настоящее время — 4 МБ). Отобранные транзакции удаляются из мемпула, а остальные продолжают ожидать следующих блоков.

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

Размер мемпула как индикатор

Объём мемпула — важный показатель состояния сети. Он отражает разницу между скоростью поступления новых транзакций и пропускной способностью блокчейна. Если размер мемпула растёт, это означает, что спрос на проведение транзакций превышает возможности сети по их обработке. В таких ситуациях увеличивается время ожидания подтверждения, а майнеры начинают отдавать предпочтение транзакциям с более высокой комиссией. Пользователи, желающие провести транзакцию быстрее, вынуждены повышать комиссию, что приводит к росту среднего размера комиссионного вознаграждения в сети.

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

Управление перегрузкой

Разработчики криптовалют применяют различные механизмы для борьбы с переполнением мемпула. В Биткоине для этого используется протокол Replace-By-Fee (RBF), позволяющий отправителю заменить неподтверждённую транзакцию в мемпуле на новую версию с более высокой комиссией. Механизм Child-Pays-For-Parent (CPFP) позволяет ускорить подтверждение «застрявшей» транзакции путём создания дочерней транзакции с высокой комиссией, которая тратит выходы родительской.

В сети Ethereum для борьбы с перегрузкой применяется механизм аукциона комиссий (gas auction), а также протокол EIP-1559, который вводит базовую комиссию, сжигаемую при каждой транзакции. В ряде проектов, например в Bitcoin Cash, размер блока был увеличен для повышения пропускной способности и уменьшения вероятности образования очередей.

Значение для пользователей

Для рядового пользователя мемпул проявляется в виде времени ожидания подтверждения транзакции. При отправке средств в Биткоине рекомендуется устанавливать комиссию, соответствующую текущей загрузке сети. Слишком низкая комиссия в период перегрузки приведёт к тому, что транзакция будет находиться в мемпуле неопределённо долго, пока не будет удалена по истечении срока жизни.

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

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

Мемпул как механизм имеет ряд недостатков. Во-первых, он создаёт неравенство между пользователями: те, кто может позволить себе высокие комиссии, получают приоритет в обработке, в то время как транзакции с низкой комиссией могут ожидать часами или даже сутками. Во-вторых, содержимое мемпула потенциально может быть использовано для анализа потоков средств и деанонимизации пользователей, поскольку неподтверждённые транзакции видны всем узлам сети. В-третьих, злоумышленники могут искусственно засорять мемпул множеством транзакций с низкой комиссией, создавая видимость перегрузки и провоцируя рост комиссий.

Несмотря на эти недостатки, мемпул остаётся неотъемлемой частью архитектуры большинства криптовалютных сетей, обеспечивая упорядоченную и проверяемую передачу транзакций от отправителей к создателям блоков.

Источники

  • Antonopoulos A. M. Mastering Bitcoin: Programming the Open Blockchain. — O'Reilly Media, 2017.
  • Bitcoin Developer Documentation: Mempool.
  • Narayanan A., Bonneau J., Felten E., Miller A., Goldfeder S. Bitcoin and Cryptocurrency Technologies. — Princeton University Press, 2016.
  • Документация протокола Bitcoin Core (файлы mempool.cpp, validation.cpp).
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru