Перейти к содержимому
buybitcoinsmart

Глоссарий / Транзакции и комиссии

Мемпул

Другие названия: пул памяти, Memory pool.

Что такое мемпул?
Мемпул представляет собой набор действительных транзакций, о которых узел узнал, но которые еще не увидел в блоке; эти транзакции хранятся в памяти, пока ждут, когда их выберет майнер.

Единого мемпула нет. Каждый узел держит свой, ограниченный в Bitcoin Core по умолчанию значением 300 мегабайт, и выбрасывает самые дешевые транзакции, когда этот предел достигнут. То, что показывает сайт мемпула, есть взгляд одного узла на очередь: достаточно близкий, чтобы выбрать комиссию, но никогда не истина в последней инстанции.

Как это работает

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

Хранилище ограничено, и это удивляет тех, кто ждет бесконечной комнаты ожидания. Параметр -maxmempool по умолчанию равен 300 мегабайтам, и когда хранилище заполняется, узел вытесняет транзакции с самой низкой комиссией за единицу размера и поднимает собственный порог приема выше обычного минимума. Все, что еще ждет спустя -mempoolexpiry часов, тоже отбрасывается, и это значение по умолчанию составляет 336 часов, то есть ровно 14 дней. Начиная с Bitcoin Core 0.14.0, содержимое переживает перезапуск, потому что записывается в файл mempool.dat, так что выключение узла больше не стирает то, что он знал.

Порядок задается ценой за единицу размера. Майнер, собирающий блок-кандидат, сортирует транзакции по комиссии за единицу размера и заполняет бюджет в 4 000 000 единиц веса сверху, оценивая транзакцию вместе с неподтвержденными родителями, от которых она зависит. Bitcoin Core 31.0 перестроил мемпул именно вокруг этой идеи: связанные транзакции группируются в кластеры до 64 участников и ранжируются по ставке, по которой они действительно были бы добыты. Время поступления не значит ничего, поэтому транзакцию, отправленную сегодня утром, весь день могут обгонять более поздние, которые платят больше.

Поскольку каждый узел применяет свои настройки, содержимое различается от машины к машине. Узел, перезапущенный час назад, знает меньше, чем работающий месяц, узел с Bitcoin Knots фильтрует иначе, чем узел с Bitcoin Core, а майнерам можно передать транзакции напрямую, которые вообще не путешествовали по сети.

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

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

От того, какую биржу вы используете, зависит, насколько это важно. Binance, Kraken и Coinbase оценивают вывод биткоина по состоянию сети, поэтому названная ими цифра растет, когда очередь длинная, и снижается, когда она рассасывается, и ожидание тихого часа стоит реальных денег. Площадки, которые вместо этого публикуют фиксированную плату за вывод, взимают одну и ту же сумму независимо от того, что делает очередь, из-за чего они карательны в спокойный день и выгодны при перегрузке. Зная, по какой модели вы работаете, вы понимаете, дает ли ожидание что-то.

Перегрузка также приходит без предупреждения и по причинам, не связанным с платежами. Волны создания токенов в 2023 и запуск Runes в апреле 2024 заполнили блоки данными, втянув обычных людей, которые копят биткоины в войну ставок, в которую они вовсе не хотели вступать. Если вы делаете регулярные покупки через Swan или River с автоматическим выводом, разумный ответ состоит в пороге, который переводит биткоины меньшим числом более крупных транзакций, а не фиксированный недельный график, игнорирующий состояние очереди.

Как читать очередь перед нажатием кнопки вывода

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

Подставьте цифры на примере перевода одной монеты на один выход. Такая транзакция занимает около 110 виртуальных байт с нативным входом SegWit, поэтому при 2 sat/vB она стоит 220 сатоши, а при 90 sat/vB стоит 9900 сатоши. Транзакция байт в байт одинакова в обоих случаях. Различается только выбранный вами момент, и в этом весь урок.

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

Мемпул vs политика мемпула

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

Мемпул vs блок

Блок представляет собой зафиксированную постоянную запись с жестким пределом в 4 000 000 единиц веса; мемпул представляет собой временное, частное и в принципе неограниченное предположение о том, что могут содержать следующие несколько блоков. Транзакции покидают мемпул, когда их добывают, и покидают его снова, если содержащая их ветвь отброшена, и тогда они возвращаются в ожидание. Пребывание в мемпуле никого ни к чему не обязывает.

Не путать с

Часто задаваемые вопросы

Существует ли единый глобальный мемпул?

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

Сколько времени транзакция остается в мемпуле?

Пока ее не намайнят, не заменят или пока она не истечет. Bitcoin Core отбрасывает все, что еще ждет после 336 часов, то есть 14 дней, а узел, у которого заполняется лимит в 300 мегабайт, вытесняет самые дешевые транзакции заметно раньше.

Моя транзакция исчезла из мемпула. Куда она делась?

Либо она истекла, либо ее вытеснили за слишком низкую плату, либо на ее место встала замена с более высокой комиссией. Биткоины при этом не были потрачены, так что ваш кошелек может заново собрать и повторно отправить платеж с более высокой ставкой комиссии.

Читайте далее

Связанные термины

Еще в разделе «Транзакции и комиссии»

Читать эту страницу на английском