Kaspa Forge
Новость

Rusty Kaspa v2.1.0 — Порционная IBD и ужесточённые лимиты сообщений

31 октября 2026 Автор — ИИ-команда OfficeForge · проверено командой 7 мин чтения
Rusty Kaspa v2.1.0: порционная IBD, лимиты сообщений, исправления Stratum

Вышел Rusty Kaspa v2.1.0 — комбинированный релиз с новыми возможностями, исправлениями безопасности и сопровождения, помеченный 22 сентября пользователем someone235; с момента тега в GitHub девять коммитов в ветку master. Главное новшество — протокол P2P версии 11 с порционной начальной загрузкой блоков, но в релизе также снижены лимиты на размер сообщений, ужесточена проверка доказательств обрезания, усилен мост Stratum, который используют майнеры, а инструменты ZK-скриптов вынесены в отдельный пакет. Ниже — что именно изменилось в релизе и что это означает в зависимости от того, эксплуатируете ли вы узел, направляете хешрейт в пул или строите на ковенантах Toccata.

Что изменилось — вкратце

  • Протокол P2P 11: большие данные IBD передаются порциями по 20 МиБ, совместимость с узлами на протоколе 10 сохранена.
  • Лимиты сообщений: P2P_MAX_MESSAGE_SIZE снижен с 1 ГБ до 256 МБ, для блоков введён потолок 2 МБ, добавлены проверки размера транзакций и блоков до валидации, входящие соединения с забаненных адресов сразу отклоняются.
  • Границы обрезания в консенсусе: MAX_UNCOMPRESSED_PARENTS — 255 * 2048, а заголовки без родителей, не относящиеся к генезису, теперь отвергаются в доказательствах обрезания с ошибкой PruningImportError::NonGenesisParentlessHeader.
  • Упрощение после Toccata: ветки активации схлопнуты в безусловную логику, BLOCK_VERSION унифицирован на значении 2, скриптовые единицы заменяют устаревший учёт sigops.
  • Мост Stratum: исправлен обход каталогов, утечки CLOSE_WAIT, ограничена кардинальность метрик Prometheus.
  • ZK SDK: kaspa-txscript-zk-sdk стал отдельным пакетом.
  • Арифметическая безопасность: clippy::arithmetic_side_effects включён для всех продуктовых пакетов согласно формальной политике в docs/ARITH-SAFETY.md.
  • Мемпул: транзакции coinbase явно отклоняются с ошибкой RuleError::RejectCoinbase.

Порционная IBD: синхронизация без узкого места на кадрировании

До сих пор большие данные начальной загрузки блоков — доказательства точки обрезания, пачки заголовков, доверенные данные — приходилось передавать одним сообщением. Именно такой трафик и натыкается на ограничения кадрирования сообщений и таймауты передачи на медленных каналах или слабом оборудовании. Протокол версии 11 разбивает эти данные на порции по 20 МиБ: доказательства точки обрезания приходят через PruningPointProofChunkMessage и завершаются сообщением PruningPointProofChunksEndMessage, заголовки нарезаются на части во время синхронизации, а доверенные данные используют пару TrustedDataChunkMessage / TrustedDataChunksEndMessage.

Два предохранителя не менее важны, чем само дробление: общий предельный лимит передачи в 1 ГиБ и суммарные таймауты передачи с логированием прогресса — зависший узел виден, а не «тих». Ключевой момент: протокол 11 умеет договариваться вниз до протокола 10 со старыми узлами — никакого «большого взрыва» и срока принудительного обновления в заметках не описано.

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

Лимиты сообщений и ужесточение консенсуса

Вторая тема — отказываться от избыточных или некорректных данных раньше. P2P_MAX_MESSAGE_SIZE снижен с 1 ГБ до 256 МБ в обработчике соединений. Для сообщений с транзакциями и блоками введены предварительные проверки размера, при этом блок в сети ограничен 2 МБ. Забаненные входящие соединения теперь отклоняются ещё на этапе установки соединения, а не после проделанной работы; блоки релея, запускающие IBD, проверяются так, чтобы их нельзя было обработать как доверенные данные.

Обработка родителей тоже ограничена: суммарное число нераспакованных родителей на всех уровнях в CompressedParents не превышает MAX_UNCOMPRESSED_PARENTS = 255 * 2048, а для некорректных заголовков возвращается CompressedParentsError::SizeExceeded. Проверка доказательств обрезания теперь строго требует, чтобы заголовки без родителей были генезисом. Оба изменения закрывают DoS-векторы, завязанные на хеширование, — работу, которую узел вообще не должны были просить выполнять.

После Toccata: веток активации больше нет

Группа запросов на слияние (#1082–#1101) схлопнула ветки активации в безусловную логику после Toccata на всех уровнях — консенсуса, мемпула и P2P. BLOCK_VERSION сведён к значению 2 — TOCCATA_BLOCK_VERSION и переходные параметры удалены. Устаревший учёт sigops заменён скриптовыми единицами, что делает проверку ковенант-скриптов безусловной, а извлечение PSKT ограничено числом скриптовых единиц, зафиксированных во входах. Toccata также активирована в devnet, а фикстуры DAG обновлены.

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

Stratum: исправления, которые майнеры реально ощутят

Пулы и майнеры-одиночки на мосту Stratum получают три конкретных исправления. Первое — уязвимость обхода каталогов при раздаче статических файлов в веб-панели: компоненты пути без нормализации отклоняются, а канонизированные пути проверяются на то, что они остаются внутри корневого каталога статики. Второе — утечки сокетов в состоянии CLOSE_WAIT: входящие HTTP-запросы теперь выполняются в выделенных задачах-обработчиках с таймаутом чтения 10 секунд и явными заголовками Connection: close, так что долго живущие мосты перестают накапливать полузакрытые сокеты. Третье — кардинальность метрик Prometheus на /metrics ограничена: из адресов клиентов вырезаются эфемерные порты, метки воркеров и майнеров унифицированы, а для счётчика добытых блоков добавлено кольцевое буферное окно на 512 блоков.

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

Для пользователей самостоятельного хранения этот релиз — в основном фоновая сантехника. Но именно от этой сантехники зависят ваши ключи. Инструменты на ковенантах, такие как Kaspa Safe, работают с обычными узлами, а открытый CLI vaultctl — с любым узлом Kaspa v2+, поэтому узел, который надёжно синхронизируется и разумно ограничивает размер сообщений, — это ровно тот контрагент, который нужен некастодиальной схеме. Контракт хранит ваши правила; узлу остаётся только быть честным и не падать.

Создать сейф

Для разработчиков: отдельный ZK SDK и арифметическая дисциплина

kaspa-txscript-zk-sdk теперь самостоятельный пакет, содержащий логику генерации скриптов для доказательств RISC Zero Groth16 и STARK. В нём добавлена генерация верификатора Groth16 со статическими или динамическими идентификаторами образа (append_r0_groth16_verifier, append_r0_groth16_verifier_with_image_id), ограничены доказательства включения управления Poseidon2 с точки зрения чрезмерной верификационной работы, зафиксирована версия risc0-zkvm-platform, а проблемы линковки в Windows решены через risc0-export-syscall.

Отдельно: аудит арифметических переполнений по всему рабочему пространству включил clippy::arithmetic_side_effects для продуктовых пакетов согласно формальной политике, описанной в docs/ARITH-SAFETY.md, — усилены счётчики, циклы повторных попыток и арифметические операции по всему узлу. Прочие исправления в библиотеках: безопасная Borsh-декодировка адресов, которая больше не падает на некорректной длине полезной нагрузки, исправлено сообщение о числе выходов в ошибках txscript и сравнение приватных ключей за постоянное время в kaspa-bip32.

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

Мемпул: транзакции coinbase здесь не жалуют

#1137 заставляет мемпул явно отклонять поданные транзакции coinbase с ошибкой RuleError::RejectCoinbase, даже если разрешены нестандартные транзакции. Правило маленькое, но острое: выходы coinbase создаются майнерами в блоках, а не отправляются в мемпул, как обычные транзакции.

Кому обновляться, а кому можно понаблюдать

Операторы, выполняющие первичную синхронизацию или работающие через мост Stratum, получают наибольшую отдачу сразу. Разработчикам, работающим с ковенантами или ZK-скриптами доказательств, стоит изучить упорядочивание после Toccata и новое разделение пакетов, прежде чем полагаться на прежние вспомогательные функции. Все остальные могут рассматривать этот релиз как тот, что завершил переход на Toccata в коде: протокол 11 аккуратно договаривается вниз, так что обрыва в заметках не описано.

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

Что проверить перед обновлением

  • Прочитайте подробный список запросов на слияние в заметках о релизе, особенно #1136, #1138 и #1137.
  • Если вы используете веб-панель моста Stratum, убедитесь, что в вашем развёртывании подхвачено исправление путей для статических файлов.
  • Если вы следите за мостами через Prometheus, ожидайте изменений в метках на /metrics.
  • Если ваши инструменты опираются на переходные параметры или TOCCATA_BLOCK_VERSION, перейдите на BLOCK_VERSION 2.
Маршрут по теме

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

документация продуктов Kaspa Forge

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

Следующий шаг: открыть некастодиальный Desk

FAQ

Что такое порционная IBD в rusty-kaspa v2.1.0?

Протокол версии 11 передаёт большие данные начальной загрузки блоков — доказательства точки обрезания, заголовки и доверенные данные — порциями по 20 МиБ вместо единичных огромных сообщений, с общим предохранительным лимитом в 1 ГиБ и таймаутами передачи. Старые узлы на протоколе 10 остаются совместимыми.

Меняет ли v2.1.0 правила консенсуса Kaspa?

Она их упорядочивает. Ветки активации схлопнуты в безусловную логику после Toccata, BLOCK_VERSION унифицирован на значении 2, а устаревший учёт sigops заменён скриптовыми единицами, при этом проверка ковенант-скриптов стала безусловной. Сами параметры консенсуса в заметках о релизе не переопределяются.

Что именно исправлено в мосте Stratum?

Уязвимость обхода каталогов при раздаче статических файлов в веб-панели, утечки сокетов в состоянии CLOSE_WAIT — исправлены за счёт выделенных задач-обработчиков на каждое соединение и явных заголовков Connection: close, а также неограниченная кардинальность метрик Prometheus на /metrics.

Нужно ли немедленно обновлять узел?

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

Что такое новый пакет kaspa-txscript-zk-sdk?

Инструменты генерации скриптов из ZK-доказательств, вынесенные из рабочего пространства в отдельный пакет: генерация скриптов для RISC Zero Groth16 и STARK со статическими или динамическими идентификаторами образа, ограниченные доказательства управления и исправления сборки под Windows.

⚒

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

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

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

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

Создать сейф