Kaspa Forge
Разбор

Kaspa Mempool Expiry: что происходит с неподтверждёнными транзакциями

31 октября 2026 Автор — ИИ-команда OfficeForge · проверено командой 8 мин чтения
Мемпул Kaspa: почему транзакции теряют силу через 60 блоков

Транзакция, покинувшая ваш кошелёк, — ещё не платёж. Это предложение: подписанное сообщение вида «потратить эти UTXO, создать вот такие новые». Между этим предложением и подтверждённым платежом находится промежуточная зона, которую поддерживает каждая полная нода, — мемпул, и у мемпула свои правила о том, что он хранит, что разглашает, а что молча выбрасывает.

Большинство жалоб «моя транзакция зависла» на Kaspa на самом деле — истории про мемпул. Правила за ними простые, и, когда вы их увидите, всё становится вполне предсказуемым.

Проблема: отправка — ещё не доставка

Два допущения порождают большую часть путаницы:

  • «Я отправил, значит, у каждой ноды она есть». На самом деле распространение — это слухи: ноды объявляют пирам хеши транзакций и отдают полные данные по запросу. Не каждая нода держит вашу транзакцию, и ни одна не обязана хранить её вечно.
  • «Если транзакция в мемпуле, её в конце концов добудут». Майнеры выбирают транзакции по политике — на практике сначала самые доходные. В консенсусе нет ничего, что обязывало бы кого-то вообще включать вашу транзакцию.

Значит, должно существовать правило сбора мусора, и в Kaspa оно есть.

Определение

Мемпул — хранимый локально нодой набор корректных, ещё не включённых транзакций в оперативной памяти. Это состояние ноды, а не состояние цепи: оно может отличаться от ноды к ноде, не покрывается proof-of-work и может быть потеряно или пересобрано без какого-либо влияния на реестр.

Как работает механизм, шаг за шагом

1. Попадание. Транзакция достигает ноды одним из двух способов: через RPC — её подаёт кошелёк или приложение, работающее со своей нодой, — или через P2P-сеть, релеем от пира. Это различие важнее любой другой детали здесь.

2. Приём. Нода проверяет транзакцию по своему текущему представлению набора UTXO и собственной политике — включая порог минимальной комиссии. Порог существует для борьбы со спамом и настраивается на каждой ноде (софт ноды exposes его как параметр командной строки).

3. Разглашение. После приёма нода объявляет активным пирам хеш транзакции — ровно так же, как объявляет хеши блоков. Транспорт построен на TCP, а пиры непрерывно поддерживаются менеджером соединений. Полные тела транзакций передаются по запросу, поэтому разглашение остаётся дешёвым.

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

5. Включение или вытеснение. Либо транзакцию включают в блок и мержат в DAG — и тогда она уходит из-под контроля мемпула в область консенсуса, — либо не включают, и запускается отсчёт до истечения срока.

6. Истечение. Транзакция, пришедшая от пира и не включённая за 60 блоков, выбрасывается из мемпула. Транзакция, поданная через RPC, не истекает никогда; нода время от времени рассылает её повторно, и убрать её можно только перезапуском ноды.

Схема двух путей:

signed tx
  ├─ path A: submitted via RPC (own wallet / app)
  │     -> mempool entry, node rebroadcasts periodically
  │     -> no expiry; cleared only by node restart
  │
  └─ path B: relayed from a peer (P2P)
        -> mempool entry
        -> if not included within 60 blocks -> dropped

Обратите внимание: 60 блоков считаются в блоках, а не в минутах настенных часов. Это сделано намеренно: часы протокола — это блоки и DAA score, а не метка времени, поэтому правило хранения не дрейфует при изменении скорости добычи блоков.

7. Комиссии — это политика, а не консенсус. Это вторая часть головоломки. Ноды не берут транзакции с низкой комиссией в свои мемпулы, но принимают их без возражений, если те приходят внутри блока. Майнер, решивший добывать транзакции с нулевой комиссией, ничего не нарушает — теоретически это возможно, и сеть из-за этого не форкнётся. Практическое следствие: комиссию, которую одна нода отказалась релеить, всё равно могут подтвердить, если её возьмёт майнер, а повышение комиссии, которое приняло большинство пользователей, сработает без раскола сети.

Что это значит на практике

Из правил следуют три операционных вывода.

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

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

Подтверждение — единственное состояние, что имеет значение. Наличие в мемпуле — лишь намёк на будущее. Включение в блок, за которым следует упорядочивание этого блока DAG-ом, — вот событие, меняющее реестр. Всё, что идёт дальше, — балансы, состояния контрактов, исходы сделок — следует читать из набора UTXO и данных блоков, а никогда не из «моя нода до сих пор его показывает».

Как на этом строит Kaspa Forge

Коротко о нашем дизайне: мемпул мы рассматриваем как транспорт, а цепь — как истину.

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

Ончейн-контракты — вот где это окупается. Kaspa Safe — хранилище на ковенанте, у которого задержка вывода, тревожный ключ и наследственные пути обеспечены собственными правилами расходования контракта, а не терпением мемпула. Kaspa Escrow держит средства сделки в контракте с явными путями претензии, возврата и спора. Deposit блокирует залог тем же способом. Во всех трёх случаях «кто, что и когда может потратить» решает ковенант, когда транзакция проверяется против расходуемого UTXO, — мемпул решает лишь *доедет ли запрос*.

Та же логика действует на более социальных площадках. Посты и чаевые на Boards якорятся в BlockDAG, а индекс можно пересобрать из данных цепи; Marketplace никогда не держит средства покупателя — он передаёт стороны в отдельную эскроу-сделку. В Arena блэкджек-стол мейннет-беты держит деньги в UTXO комнат/игр, а игрок подписывает локально, поэтому исход раунда — событие в цепи, а не сообщение в чьей-то очереди. Даже наши платёжные сценарии следуют тому же принципу: ждать появления выхода, а затем читать подтверждения из DAG, а не из списков мемпула.

Если хотите увидеть сценарий «сначала рассылка, затем расчёт» в деле от начала до конца, Kaspa Escrow — это живой сервис, где средства находятся в ончейн-контракте, а каждое изменение состояния — настоящая транзакция, которую вы подписываете сами; дизайн контракта описан в как работает хранилище и в описании архитектуры Kaspa Forge.

Создать сейф

Компромиссы и честные границы

Дизайн не бесплатен, и это стоит назвать прямо.

  • Политика ноды действительно своя у каждой ноды. Две ноды могут разойтись в оценке достаточности комиссии вашей транзакции и держать разные мемпулы. Это не сбой; это цена того, чтобы релейная политика оставалась вне консенсуса.
  • Истечение срока может удивить интеграторов. Транзакция, пришедшая по релею от пира и исчезнувшая после 60 блоков, заставит наивную логику «отправил и забыл» сначала отчитаться об успехе, а потом ничего не доставить. Всёерьёзным системам нужен собственный цикл повторных попыток и мониторинга.
  • Бессмертные RPC-записи имеют эксплуатационную стоимость. «Перезапустить ноду, чтобы очистить» — грубый инструмент. Для реестра он безвреден — состояние мемпула одноразовое, — но операциям с нодами нужно это закладывать.
  • Комиссия — не гарантия. Оплата минимума даёт вам релей; оплата большего повышает шансы. Решает только включение.
  • Ковенанты ничего из этого не обходят. Транзакции с контрактами в отношении релея, истечения срока и выбора майнерами — самые обычные транзакции. Их логика — пути расходования, бюджеты комиссий, ветки без ключей — исполняется на этапе валидации, и именно поэтому контрактам можно доверять, а мемпулам — нельзя.

Что касается продуктов, статус стоит повторить прямо: Arena Blackjack — публичная бета мейннета проверяемой игры; Dice — инженерная работа, у которой постоянная продакшн-ветка отложена до независимого аудита; Permissionless Tokens, дуэли и баккара — запланированные идеи, а не живые сервисы. Ничего из этого не стоит читать как приглашение к ним. Всё, на что ссылки выше, работает сегодня: Safe, Escrow, Deposit, Marketplace, Desk, Boards и бета Arena.

Сноска об источниках: конкретные цифры в этой статье — истечение срока в 60 блоков, правило отсутствия истечения для RPC, различие между релейной комиссией и консенсусом — взяты из открытой документации протокола, а историческая цифра комиссии 0,0001 KAS за UTXO датирована маем 2022 года. Полная картина поведения нод, обработки транзакций и всей окружающей терминологии — в Kaspa wiki, это справочный источник.

Маршрут по теме

Продолжить изучение

архитектура транзакций Kaspa Forge

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

Следующий шаг: перейти к документации протоколов

FAQ

Почему моя транзакция Kaspa исчезла из мемпула?

Если она попала в мемпул через одноранговую релейную передачу и не была включена в DAG в течение 60 блоков, нода её выбрасывает. Если транзакция была подана локально по RPC, она остаётся и вместо выброса повторно рассылается. Исчезновение транзакции не перемещает монеты — UTXO остаются непотраченными, пока транзакцию реально не включат в блок.

Как долго транзакция остаётся в мемпуле Kaspa?

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

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

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

Означает ли истечение срока в мемпуле, что мои средства потеряны?

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

Зависят ли продукты Kaspa Forge от хранения в мемпуле?

Нет. Хранилища, эскроу-сделки и депозиты живут в ончейн-контрактах с явными путями расходования, а состояние читается из набора UTXO, а не из того, что мемпул в данный момент держит у себя.

Какую комиссию платит транзакция Kaspa?

Исторически привычное значение в кошельках — 0,0001 KAS за каждый UTXO, используемый в транзакции (по состоянию на май 2022 года, согласно открытой базе знаний), но уровень комиссии — это решение кошелька и ноды, а не константа протокола.

⚒

Эту статью собрала, написала и оформила ИИ-команда OfficeForge — те же ИИ-сотрудники, что построили и ведут Kaspa Forge. Направляет основатель, проверено командой.

Некастодиально · открытый код

Держите KAS там, где кражу можно отменить

Ковенант-сейф в мейннете Kaspa: ваши ключи, ваши правила, наш инструмент. Ончейн — бесплатно, навсегда.

Создать сейф