Мемпул в блокчейне: очередь транзакций и правила попадания в блок
Когда пользователь нажимает «Отправить» в криптокошельке, транзакция не попадает в блокчейн мгновенно. Прежде чем оказаться в цепочке блоков, она проходит несколько промежуточных этапов: формирование и подпись, трансляция по сети, ожидание обработки и, наконец, проверка майнером с последующей записью в блок. Самый непредсказуемый из этих этапов — ожидание — проходит в специальном пространстве под названием мемпул.
Что такое мемпул
Мемпул (от англ. mempool, memory pool — пул памяти) — временное хранилище транзакций, которые уже покинули кошелёк отправителя и распространились по сети, но ещё не получили подтверждения и не вошли ни в один блок. Каждый узел сети, участвующий в формировании блоков, ведёт собственную локальную копию мемпула. Технически это буфер — промежуточное звено между отправкой и финальной записью.
Слово «пул памяти» точно передаёт суть: транзакции живут здесь на временном хранении, до тех пор пока какой-либо майнер не заберёт их для включения в очередной блок.
Мемпул — обязательный элемент блокчейн-протоколов, работающих на механизме консенсуса доказательства выполненной работы (PoW). К таким сетям относятся Bitcoin, Litecoin, Dogecoin, Bitcoin Cash и ряд других. Именно состояние мемпула во многом определяет, как быстро проходят транзакции и сколько стоит отправка в моменты высокой нагрузки.
Как мемпул работает на практике
Сразу после трансляции транзакция не записывается в цепочку — это было бы небезопасно и нарушало бы принцип последовательной проверки. Вместо этого она поступает в мемпул и занимает место в общей очереди.
Попасть в мемпул — ещё не значит гарантированно оказаться в блоке. Майнеры не обязаны брать транзакции в том порядке, в котором они поступают. Действует другой принцип: чем выше комиссия, тем выше приоритет. Параллельно с этим каждый блок имеет физическое ограничение по вместимости.
В сети Bitcoin средний размер блока составляет около 1,6 МБ, хотя вместимость технически измеряется не в байтах, а в единицах веса блока — до 4 млн WU (от англ. weight units — единица веса). На практике в один блок помещается в среднем 4–5 тыс. транзакций. Если в мемпуле их накопилось 10 000, в ближайший блок попадёт не более половины. Остальные будут ждать следующего — при условии, что их не обгонят новые поступления с более высокими комиссиями.
Именно поэтому транзакции не выстраиваются в блокчейне в хронологическом порядке их отправки. Пользователи фактически конкурируют за место в блоке: тот, кто готов платить больше, оказывается быстрее.
Простой пример: Анна отправила перевод раньше Михаила, но указала комиссию ниже. Если майнеры получат большой поток транзакций с более высокими ставками — её перевод будет откладываться снова и снова, пока очередь не уменьшится.
После того как майнер отбирает транзакцию из мемпула, начинается проверка. Оцениваются следующие параметры: действительность цифровой подписи отправителя, достаточность средств на балансе, отсутствие признаков двойного расходования одних и тех же монет, соответствие комиссии текущему рыночному уровню. Только пройдя эту проверку, транзакция включается в блок и навсегда записывается в блокчейн.
Каждый новый блок, добавленный поверх того, в котором содержится транзакция, даёт ей очередное подтверждение. В сети Bitcoin шесть подтверждений традиционно считаются признаком высокой надёжности, хотя конкретное пороговое значение зависит от получателя или сервиса. Некоторые обменники криптовалюты требуют до 12 подтверждений — это защита от мошеннических схем, при которых неподтверждённая транзакция может быть отозвана отправителем до своей финальной записи в цепочку. Чем выше запрашиваемый порог, тем дольше придётся ждать зачисления.
Что делать, если транзакция надолго застряла
При перегруженном мемпуле ожидание может растянуться на несколько часов, а в экстремальных случаях — на несколько суток. Транзакция с минимальной комиссией рискует не получить подтверждения вовсе и в итоге быть отклонена сетью. Пока транзакция остаётся в мемпуле и ещё не записана в блокчейн, её можно попытаться ускорить одним из двух способов.
Замена через повышенную комиссию
Функция замена по комиссии (RBF) позволяет заменить зависшую транзакцию и на новую — с более высокой платой за обработку, чтобы повысить вероятность её скорого включения в блок. От пользователя требуется всего несколько кликов в интерфейсе: он создаёт новую версию транзакции, которая конкурирует с исходной за подтверждение. Если замена принимается сетью и новая транзакция подтверждается, исходная отменится как ошибочная. Важный нюанс: в ряде кошельков функцию RBF необходимо активировать заранее — на этапе создания транзакции; если это не было сделано, воспользоваться RBF постфактум не получится.
RBF также можно использовать для попытки отменить перевод: вместо исходной транзакции создаётся конфликтующая транзакция, например с возвратом средств на собственный адрес. Однако отмена не гарантирована, а за подтверждённую замену взимается сетевая комиссия.
Дочерняя транзакция с повышенной ставкой
Второй способ — CPFP (от англ. child pays for parent — ребёнок платит за родителя), метод оплаты, при котором поверх зависшей «родительской» транзакции создаётся новая — «дочерняя», которая расходует ещё не подтверждённый выход первой. «Дочерняя» транзакция выставляется с заведомо высокой комиссией.
Майнер, видя привлекательную ставку «дочерней», заинтересован включить её в блок. Однако поскольку «дочернюю» нельзя подтвердить раньше «родительской», он вынужден взять обе. Суммарная комиссия перекрывает убыток от низкой ставки исходной транзакции — и весь пакет проходит быстрее. Воспользоваться CPFP можно только в том случае, если пользователь контролирует адрес, на который поступают средства из зависшей транзакции.
Повторная трансляция транзакции
Чтобы неподтверждённую транзакцию не удалили из мемпула, можно передать её в сеть повторно — и она снова станет доступна узлам и майнерам. При этом комиссия не увеличится, поэтому повторная трансляция сама по себе не гарантирует ускорения подтверждения.
Для повторной отправки существуют специальные сервисы. Например, в BestChange PushTX можно указать TXID — уникальный идентификатор транзакции, тогда сервис пытается найти её в мемпуле и повторно передать известным майнерам. Однако результат зависит от состояния транзакции и условий её обработки.
Итог
Мемпул — это не сбой и не задержка системы, а часть архитектуры, обеспечивающей безопасную обработку транзакций. Он работает как рыночный механизм: скорость прохождения определяется готовностью платить. В периоды высокой активности сети это означает рост комиссий и очереди. Понимание того, как устроен мемпул, помогает осознанно выбирать размер комиссии при отправке и не паниковать, если перевод идёт дольше обычного.
- - -
Новый сайт:
- - -
BestChange в Telegram:
- - -
Приложение BestChange для смартфона: