Монеты и сети

Мемпул это: где ждут неподтверждённые транзакции

Основы Также известно как мемпул это что такое мемпул почему транзакция не подтверждается неподтвержденная транзакция

Коротко

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

Как работает очередь

Как идёт отбор

Каждый узел держит собственную копию пула ожидающих транзакций. Когда валидатор или майнер собирает следующий блок, он выбирает из этого пула, и выбирает по выгоде.

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

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

Что мемпул говорит о состоянии сети

Пул публичен, и это делает его живым индикатором загрузки.

Для биткоина сайт mempool.space показывает очередь по уровням комиссии и оценивает, сколько каждый уровень ждёт. Заглянуть туда до отправки это и есть способ избежать описанной выше ситуации, а занимает он секунд пять.

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

Почему перевод зависает

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

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

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

Два способа вытолкнуть

Replace-by-fee

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

Child-pays-for-parent

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

Если не сделать ни того, ни другого

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

Что нужно знать мерчанту

Две вещи, и обе про обработку заказов.

Платёж, лежащий в мемпуле, платежом ещё не стал. Зачислять заказ при нуле подтверждений означает зачислять то, что ещё может сорваться, и пороги существуют именно поэтому.

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

Частые вопросы

До подтверждения или до истечения срока, в биткоине это обычно около двух недель.

Напрямую нет. Её можно заместить версией с большей комиссией, если она была помечена заменяемой.

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

Потому что она разослана. Отправлена и подтверждена это разные состояния.

Нет. Неподтверждённая транзакция комиссию не списывает.

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

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

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

Отправка второй такой же транзакции обычно ни к чему не приведёт: сеть считает её дублем. Работает именно замещение с более высокой комиссией.

Статья была полезной?

Смотрите также