MSTR Cat

Блокчейн/Уровень II · Механика/2.2 Транзакции/Урок 5

Мемпул

Локальная зона ожидания, которой каждая нода управляет независимо

МатериалыОбозреватель блоков с отображением мемпула (например, mempool.space)Необязательно: нода Bitcoin Core ('getmempoolinfo')

Любопытство

  1. Почему транзакцию, валидную для одной полной ноды, отклоняет соседняя?
  2. Что происходит с транзакциями с самой низкой комиссией, когда нода достигает лимита памяти?
  3. Как майнеры решают, какие неподтвержденные транзакции заслуживают места в их следующем блоке?

Исследование

  1. Мемпул — это не центральная база данных, а локальный список в оперативной памяти, который каждая полная нода ведёт независимо. Bitcoin Core удаляет неподтверждённые транзакции, которые висят слишком долго: через 72 часа, когда срок истечения был введён в версии 0.12, и через две недели (336 часов) начиная с версии 0.14. Две ноды, получившие транзакции в разном порядке или работающие с разными настройками, хранят немного различающиеся мемпулы.
  2. Каждая нода применяет правила консенсуса (например, корректность скриптов и отсутствие двойной траты) вместе с локальными правилами политики, такими как минимальная ставка комиссии и настройки RBF. Если транзакция не достигает минимального порога ставки комиссии конкретной ноды, эта нода отклонит её или вытеснит, если она уже в мемпуле, даже если другие ноды её принимают.
  3. По умолчанию Bitcoin Core ограничивает размер мемпула 300 МБ с помощью параметра 'maxmempool' в файле bitcoin.conf. При достижении этого лимита нода динамически повышает минимальный порог комиссии, чтобы освободить место для более выгодных транзакций, и вытесняет в первую очередь наименее ценные. Выполните 'getmempoolinfo' и посмотрите, как 'mempoolminfee' поднимается выше статического 'minrelaytxfee' по мере заполнения мемпула.
  4. Майнеры отбирают транзакции для блоков из собственных мемпулов, отдавая приоритет самой высокой комиссии за виртуальный байт с учётом всех неподтверждённых родительских транзакций. Когда приходит валидный блок, каждая нода удаляет из своего мемпула подтверждённые транзакции, а также все конфликтующие с ними.
  5. Политика — это не консенсус. Транзакция, которую большинство нод отказывается ретранслировать, потому что её комиссия ниже их минимума или она имеет нестандартную форму, всё равно может быть валидной в блоке, и некоторые майнеры принимают такие транзакции напрямую. Поэтому мемпул каждой ноды — лишь оценка того, что попадёт в следующий блок, и в пограничных случаях разные ноды могут расходиться.
  6. При выключении Bitcoin Core сохраняет мемпул в файл mempool.dat и загружает его при запуске, отбрасывая всё, что больше не валидно, поэтому перезапущенная нода не начинает с пустого мемпула. Чтобы понаблюдать за работой мемпула, откройте mempool.space: прогнозируемые блоки показывают, что майнеры, скорее всего, включат следующим, а каждый новый блок забирает верхний слой.

Ключевые факты

  • Мемпул — это локальный пул в памяти каждой ноды, а не единый универсальный сервис.
  • По умолчанию Bitcoin Core ограничивает размер мемпула 300 МБ через параметр 'maxmempool'.
  • По умолчанию Bitcoin Core удаляет неподтвержденные транзакции через две недели (336 часов, начиная с версии 0.14).
  • Ноды применяют как правила консенсуса, так и локальные правила политики, включая минимальные ставки комиссии.
  • Когда мемпул заполнен, ноды динамически повышают пороги комиссии, чтобы вытеснить менее выгодные транзакции.
  • Bitcoin Core при выключении сохраняет мемпул в файл 'mempool.dat', чтобы он пережил перезапуск.

Упражнение девять, шесть, три, один

9СобратьПеречислите 9 разных неподтверждённых транзакций из раздела мемпула в обозревателе блоков. Укажите их текущие ставки комиссии, размер в виртуальных байтах и количество подтверждений (у всех — ноль).
6СгруппироватьРаспределите эти 9 транзакций по 6 категориям в зависимости от того, почему они могли застрять: низкая ставка комиссии, большой размер, сигнализация RBF, неподтверждённые входы, статус сироты (orphan) или другие причины, связанные с политикой нод.
3Выделить главноеСведите 6 групп к 3 основным причинам, по которым нода может отклонить транзакцию или вытеснить её из своего мемпула, хотя она валидна по правилам консенсуса.
1КристаллизоватьНапишите 1 предложение о том, как различия в локальной политике нод приводят к фрагментированной, неединой картине ожидающих транзакций в сети.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS