
Мемпул: где ваша транзакция ждёт, прежде чем стать реальной
Вы нажимаете «Отправить», и кошелёк сообщает, что транзакция отправлена в сеть. Обозреватель её показывает, но как «ожидающую», а не подтверждённую. Несколько секунд, минут, а иногда и часов ваша транзакция одновременно существует и не существует.
Место, где она находится в этот промежуток, называется мемпулом. Понимание того, как он устроен, объясняет, почему комиссии меняются от минуты к минуте, почему некоторые транзакции застревают и почему ожидающая транзакция — это обещание, а не платёж.
Что такое мемпул на самом деле
«Мемпул» (mempool) — сокращение от memory pool, «пул памяти». Это набор действительных неподтверждённых транзакций, которые узел держит в памяти, ожидая, пока их заберёт производитель блоков.
Первый сюрприз: единого мемпула не существует. У каждого узла он свой. Когда вы отправляете транзакцию, кошелёк передаёт её узлу, тот проверяет её и пересылает своим пирам, а они — дальше. За считаные секунды копия есть у большей части сети, но пул каждого узла может немного отличаться в зависимости от того, что до него дошло, от его ограничений по размеру и собственных правил.
Транзакция в мемпуле прошла базовые проверки: подписи действительны, а монеты, которые она тратит, существуют. Но она ещё не включена в блок, и пока этого не произошло, она всё ещё может так и не состояться.
Как выбираются транзакции
Место в блоке ограничено, а производители блоков — майнеры в сетях с доказательством работы, валидаторы в сетях с доказательством доли — получают вознаграждение отчасти за счёт комиссий. Поэтому в целом они заполняют блоки транзакциями, которые платят больше всего за занимаемое место.
В Bitcoin и похожих сетях это означает ставку комиссии: сатоши за виртуальный байт, а не общую сумму комиссии. Небольшая транзакция со скромной комиссией может обойти крупную, которая в сумме платит больше. В Ethereum и других EVM-сетях это означает чаевые за приоритет сверх базовой комиссии, которую сеть сама корректирует от блока к блоку.
Вот почему комиссии растут и падают вместе со спросом. Когда в мемпуле спокойно, почти любая разумная комиссия попадает в следующий блок. Когда там тесно — популярный запуск, паника на рынке, волна активности, — транзакции перебивают ставки друг друга, а транзакции с низкой комиссией стоят и ждут.
Почему транзакции застревают
Транзакция, заплатившая слишком мало для текущих условий, не проваливается — она ждёт. Если спрос остаётся высоким, она может долго висеть в мемпуле. Однако узлы не хранят транзакции вечно: когда их пулы заполняются, они выбрасывают самые низкооплачиваемые, а многие удаляют всё, что старше пары недель.
Выброшенная транзакция так и не была подтверждена, значит, средства никуда не перемещались, — но пока она не исчезла отовсюду, её всё ещё могут подтвердить позже. Это и есть неприятное промежуточное состояние: платёж ни выполнен, ни отменён.
Обычно решение — заплатить больше. Replace-by-fee и похожие приёмы позволяют отправить в сеть новую версию той же транзакции с более высокой комиссией, которая заменит старую в мемпуле.
Ожидающее — значит публичное
Всё, что находится в мемпуле, видно. Любой, кто запускает узел, и любой обозреватель могут увидеть, что вы собираетесь сделать, ещё до того, как это станет окончательным: суммы, адреса, а в сетях со смарт-контрактами — точную функцию, которую вы вызываете.
Для большинства переводов это почти не важно. Для торговли — может быть очень важно. Боты следят за мемпулом в поисках крупных свопов и размещают вокруг них собственные транзакции, чтобы заработать на движении цены: и фронтраннинг, и сэндвич-атаки основаны на том, что вашу транзакцию видно, пока она ожидает подтверждения.
Это важно и для всех, кто получает средства. Ожидающая входящая транзакция ещё может быть заменена или выброшена. Это пока не ваши деньги.
От ожидания к окончательности
Включение в блок — это первое подтверждение: транзакция покинула мемпул и вошла в цепочку. Каждый блок, построенный поверх, делает её отмену всё труднее. Сколько подтверждений достаточно, зависит от сети и суммы, но правило везде одно: ожидающая — значит возможная, подтверждённая — вероятная, глубоко подтверждённая — окончательная.
Как это выглядит в SSP
Отправляя средства из SSP, вы выбираете, за какой приоритет платить. Экран отправки предлагает варианты «медленно», «обычно» и «быстро» на основе текущего состояния сети, с оценкой того, сколько времени, скорее всего, займёт каждый, а в EVM-сетях — ещё и пользовательский вариант, если вы хотите задать комиссию сами.
И SSP Wallet, и SSP Key должны одобрить транзакцию, прежде чем что-либо будет отправлено в сеть. Как только транзакция попадает в сеть, мемпул работает для SSP так же, как для всех остальных: выбранная вами комиссия определяет, насколько быстро её заберут, и пока она не подтверждена, она остаётся ожидающей.
Честный итог
Мемпул — это зал ожидания между «отправлено» и «готово». Это много залов, а не один; он публичен; и приоритет в нём получает тот, кто больше платит за место в блоке.
Выбирайте комиссию в зависимости от того, как быстро вам нужно подтверждение, не считайте ожидающую транзакцию — свою или чужую — окончательной и помните, что всё, что вы отправляете в сеть, видно всей сети ещё до завершения расчёта.


