Mempool хранит принятые биткоин-узлом транзакции, ещё не подтверждённые в блоке. Узел — это компьютер, подключённый к сети Bitcoin. У каждого свой набор, поэтому единой общей очереди с гарантированным порядком нет. Обозреватель — это сайт, на котором можно просматривать транзакции и блоки.
После нажатия Отправить кошелёк передаёт подписанную транзакцию в сеть. Получившие её узлы проверяют, соответствует ли она правилам сети и их локальным условиям приёма. Если она проходит проверку, они могут сохранить её в своём mempool и передать дальше. Платёж в обозревателе означает, что его оператор знает о нём, а не что он подтверждён. Первое подтверждение появляется лишь после включения в действительный блок текущей цепочки. Даже это может измениться при реорганизации, когда сеть переходит на другую действительную ветвь с большей накопленной работой. [2]
Mempool не работает как очередь к кассе. Место в блоке ограничено, и майнерам выгодно выбирать транзакции, которые больше за него платят. Важна ставка в sat/vB: сатоши, наименьших единицах BTC, за виртуальный байт — единицу учёта размера транзакции в Bitcoin. Например, 100 vB при 10 sat/vB означают комиссию 1 000 сатоши. Это не процент переводимой суммы. Если транзакция тратит выход другой, ещё неподтверждённой транзакции, важна и комиссия всего зависимого пакета. Даже высокая ставка не обещает конкретного блока или времени. [4]
Узлы получают транзакции по-разному и могут иметь другие ограничения памяти или правила приёма и передачи. Иногда им не хватает предыдущей транзакции, от которой зависит новый платёж. Поэтому число ожидающих платежей и оценки комиссий могут отличаться. Эти местные рабочие правила — не то же самое, что консенсус, общие условия действительности блоков. Узел может принять действительный блок с транзакцией, которой раньше не было в его mempool. [2]
После подтверждения транзакция больше не ждёт в mempool. Но она может исчезнуть и из-за нехватки памяти, слишком долгого ожидания или замены другой транзакцией, тратящей те же средства. Удаление из одного узла не отменяет платёж во всей сети: другие могут его сохранить, а майнер — подтвердить позже. Отсутствие одной записи не означает, что безопасно заплатить повторно другими средствами. Сначала проверьте состояние в кошельке и возможную замену. После реорганизации некоторые удалённые из цепочки транзакции могут снова стать ожидающими, если пройдут повторную проверку. [1] [2]
Для обычной проверки отличите неподтверждённый платёж от платежа в блоке и посмотрите его ставку и возможные предыдущие транзакции. Если вы запускаете собственный Bitcoin Core, getmempoolentry показывает одну локально известную транзакцию, а getmempoolinfo описывает состояние набора. Это запросы к вашему узлу, не к центральному списку всей сети. Публичный обозреватель тоже даёт собственный взгляд; его оценка времени может меняться с появлением транзакций и блоков. [3]
Для полной картины прочитайте эту статью вместе с Транзакция, Transaction Fees, Майнинг, Full Node, UTXO. На эту статью также ссылаются Майнинг, Транзакция, UTXO, Transaction Fees.
01Существует ли один глобальный mempool Bitcoin?+
Нет. У каждого узла свой набор. Его содержимое зависит от полученных транзакций, настроек, объёма памяти и того, какие транзакции узел принимает и передаёт дальше.
02Что означает исчезновение транзакции из mempool?+
Сначала проверьте, не подтверждена ли она уже в блоке. Если нет, один узел мог её удалить или заменить. Другой может по-прежнему хранить её, а майнер — подтвердить позже. Поэтому исчезновение из одного mempool само по себе не отменяет платёж.