Kaspa Forge
Новость

Kaspa Python SDK 2.0.1 достиг стабильного статуса

16 июля 2026 Автор — ИИ-команда OfficeForge · проверено командой 5 мин чтения
Kaspa Python SDK 2.0.1: Стабильный релиз с исправлениями ковенантов

18 июня Kaspa Python SDK обновился до версии 2.0.1 и был официально повышен со статуса бета до production/stable на PyPI. Для релиза, затрагивающего сериализацию ковенантов, расчёт storage-массы, события синхронизации кошелька и совершенно новый RPC-метод, стоит остановиться и разобраться, что изменилось — и почему эти детали важны для каждого, кто создаёт инструменты на Kaspa после Toccata.

Релиз был опубликован контрибьютором *smartgoo* и закрепляет зависимость от Rust на коммите rusty-kaspa cfafeb4c0 (v2.0.1). Это закрепление гарантирует, что Python-слой и нативный код узла согласованы по форматам сериализации, расчётам массы и сигнатурам RPC — необходимое условие для работы в продакшне.

Исправления привязки ковенантов: главное для разработчиков на Toccata

Наиболее значимые изменения в этом релизе — исправления сериализации CovenantBinding.

Ковенанты — фича Toccata, позволяющая ончейн-скриптам накладывать условия на будущие расходы — зависят от чётко определённого формата словаря при передаче данных между Python и Rust-узлом. До версии 2.0.1 вызов CovenantBinding.to_dict() возвращал вложенную структуру: ключи authorizingInput и covenantId оборачивались во внутренний ключ "inner". Метод from_dict() ожидал ту же вложенность. Это не соответствовало плоской структуре, описанной в документации 2.0.0 и в WASM SDK, из-за чего код, перенесённый между тремя SDK, мог молча формировать некорректные транзакции или выбрасывать ошибки ключей.

В версии 2.0.1 и to_dict(), и from_dict() используют плоскую структуру: {"authorizingInput": ..., "covenantId": ...}. Исправление приводит Python SDK в соответствие с документацией и WASM-слоем. Если вы создаёте инструмент, который конструирует или разбирает транзакции с ковенантами — кошельки, контракты эскроу, логику хранилищ, индексаторы — и обходили вложенный формат, ваш костыль теперь является багом. Обновитесь и протестируйте работу с новой структурой.

Связанное исправление касается создания PaymentOutput и TransactionOutput из словарей. Ранее, если в обычный словарь {"address": ..., "amount": ...} не был включён ключ "covenant", возникал KeyError. Это делало невозможным создание стандартного выхода без ковенанта из простого словаря без обязательного указания поля covenant. В версии 2.0.1 ключ covenant стал необязательным — как в документации и WASM SDK. Это небольшое улучшение эргономики, но оно снимает реальную проблему для каждого, кто пишет код построения транзакций, работающий и с ковенантными, и с обычными выходами.

GenesisCovenantGroup получил полноценный конструктор

GenesisCovenantGroup — структура группировки ковенантов на уровне генезиса — теперь можно создать напрямую:

group = GenesisCovenantGroup(authorizing_input, outputs)

Структура предоставляет authorizing_input и outputs как свойства и имеет метод __repr__ для отладки. Что важнее, Transaction.populate_genesis_covenants теперь принимает либо экземпляр GenesisCovenantGroup, либо обычный словарь с ключами "authorizingInput" и "outputs". Такой двойной подход упрощает построение транзакций как из структурированных объектов, так и из «сырого» JSON (например, при чтении из API или базы данных).

Ограничение расчёта storage-массы

Вспомогательная функция calculate_storage_mass теперь ограничивает среднее значение входных сумм снизу единицей, что соответствует поведению calc_storage_mass из rusty-kaspa v2.0.1. Без этого ограничения крайние случаи с очень малыми или нулевыми входами могли давать неопределённые или некорректные значения массы. Для майнеров и кода расчёта комиссий это исправление корректности, предотвращающее тонкие ошибки при проверках порога пыли и лимитов массы.

Новый RPC: get_seq_commit_lane_proof

Добавлен новый метод: RpcClient.get_seq_commit_lane_proof(request). Этот RPC был представлен в rusty-kaspa 2.0.0 и теперь доступен через Python-обёртки. Он возвращает подтверждение для последовательных коммитов в определённой полосе — данные, необходимые для верификации состояния относительно цепочки выбранных родителей GHOSTDAG в Kaspa.

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

События синхронизации кошелька включают прогресс SMT

События состояния синхронизации кошелька теперь содержат дополнительные данные на этапе импорта SMT (разрежённого дерева Меркла) в точке обрезки во время начальной загрузки блоков (IBD). Пayload содержит {processed, total}, предоставляя вызывающей стороне индикатор прогресса для шага, который ранее был «чёрным ящиком».

Исправление файла заглушечных типов для covenant_id

Структура данных, которую узлы Kaspa используют для поддержания компактного, верифицируемого снимка множества UTXO в точке обрезки. При начальной загрузке блоков узел импортирует этот снимок, прежде чем сможет валидировать недавние блоки. :::def Для кошельковых приложений это важно. Начальная загрузка блоков может занимать много времени, и без данных о прогрессе единственным вариантом был спиннер загрузки. Теперь кошелёк может показать «Импорт SMT: 4 200 / 12 000 узлов» и дать пользователю реалистичное представление о ходе процесса. Небольшое улучшение UX с непропорционально большим влиянием на впечатление от первого запуска. Функция covenant_id(outpoint, auth_outputs) уже была импортируемой и вызываемой в рантайме, но отсутствовала в .pyi-файлах заглушечных типов. Это означало, что IDE и инструменты статического анализа типов (mypy, Pyright, Pylance) не имели информации о её сигнатуре — ни автодополнения, ни встроенной документации, ни статической проверки типов. В версии 2.0.1 функция появилась в заглушках. Если в вашей команде используется типизированный Python-воркфлоу, одного этого исправления достаточно для обновления. Что этот релиз значит для экосистемы Переход из бета-версии в стабильную — это не просто смена ярлыка. Он отражает набор исправлений сериализации и корректности, приводящих Python SDK в соответствие с Rust-узлом и WASM SDK. Для экосистемы Kaspa практическое следствие таково: три слоя SDK теперь согласованы по формату передачи транзакций с ковенантами. Именно это согласование делает безопасным создание продакшн-инструментов — кошельков, сервисов эскроу, контрактов хранилищ, индексаторов, интеграций с биржами — без необходимости поддерживать костыли для каждого SDK. :::callout Исправления ковенантов в этом релизе напрямую относятся к ончейн-логике хранилищ и эскроу. Такие инструменты, как Kaspa Safe — который обеспечивает задержку вывода через контракт хранилища на основе ковенанта — и Kaspa Escrow — где средства находятся в ончейн-контракте, а не у посредника — зависят от корректной сериализации и десериализации транзакций с ковенантами на границах SDK. Python SDK, совпадающий с форматами WASM и Rust, означает меньше незамеченных багов в инструментах, которые хранят ваши KAS. :::callout Для держателей KAS, практикующих самостоятельное хранение, косвенная выгода — зрелость экосистемы. Каждый SDK, переходящий в стабильный статус, снижает порог для создания лучших кошельков, инструментов мониторинга и инфраструктуры индексации узлов. RPC-метод get_seq_commit_lane_proof делает независимую верификацию более доступной. События синхронизации SMT делают кошельки прозрачнее во время синхронизации. Исправления ковенантов делают контракты хранилищ и эскроу безопаснее в реализации. Всё это не самое гламурное. Это кропотливая работа по исправлению сериализации, ограничению крайних случаев, заполнению заглушечных типов и обновлению привязки к Rust. Но именно это на самом деле означает «production stable»: скучные вещи работают. Если вы поддерживаете Python-проект на Kaspa — бота, бэкенд кошелька, индексатор, калькулятор комиссий — путь обновления прост. Проверьте круговую сериализацию CovenantBinding, убедитесь, что создание словарей выходов больше не требует ключа ковенанта, и проверьте расчёты storage-массы с учётом нового ограничения. Полный журнал изменений — на странице релиза.

FAQ

Что такое Kaspa Python SDK?

Набор Python-обёрток для взаимодействия с узлами Kaspa по RPC, включающий операции с кошельком, построение транзакций и запросы к консенсусу. SDK оборачивает внутренние механизмы rusty-kaspa на Rust для использования в Python-приложениях.

Что означает статус «production/stable» на PyPI?

Это наивысший классификатор статуса разработки в Python Package Index. Ранее SDK был помечен как бета-версия; повышение означает, что API считается достаточно стабильным для продакшн-нагрузок.

Что такое исправления привязки ковенантов?

Словари CovenantBinding теперь используют плоскую структуру {"authorizingInput": ..., "covenantId": ...} при сериализации и десериализации, что соответствует документации версии 2.0.0. Ранее ключи были вложены во внутренний объект, что вызывало несоответствия.

Кому стоит обновиться?

Любому Python-проекту, который создаёт кошельки, боты, индексаторы, интеграции с биржами или инструменты на основе ковенантов в Kaspa — особенно если речь идёт о мейннет-обновлении Toccata.

Что такое RPC-метод get_seq_commit_lane_proof?

Новый метод get_seq_commit_lane_proof, добавленный в rusty-kaspa 2.0.0. Он позволяет запрашивать подтверждение для последовательных коммитов в определённой полосе, что важно для рабочих процессов верификации консенсуса GHOSTDAG.

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

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

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

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

Создать сейф