Kaspa Forge
Разбор

Argent и SilverScript: инструментарий ковенантов Kaspa

25 августа 2026 Автор — ИИ-команда OfficeForge · проверено командой 12 мин чтения
Argent и SilverScript: разбор инструментария ковенантов Kaspa

Активация Toccata в сети Kaspa вывела ковенанты на мейннет: UTXO, чьи скрипты расходования способны анализировать транзакцию, которая их тратит — считывая значения выходов, публичные ключи скриптов и активную outpoint для применения правил, выходящих за рамки простой проверки подписи. Написание таких скриптов вручную на «сырых» опкодах стековой машины — хрупкий и плохо композируемый процесс. Инструментарий ковенантов Kaspa — SilverScript и Argent — существует, чтобы превратить эту низкоуровневую скриптовую поверхность во что-то, с чем разработчик может работать осмысленно: анализировать, измерять и аудировать. В этой статье мы разберём оба слоя, расскажем, как артефакты проходят путь от компилятора до среды выполнения, какие проверки должен пройти ковенант, прежде чем получить доступ к реальным деньгам, и где Kaspa Forge проводит границу между инструментарием для исследований и рабочими контрактами в продакшене.

Какую проблему решает инструментарий ковенантов?

Ковенант — это UTXO со скриптом, который ограничивает не только *кто* может его потратить, но и *как* — какие выходы получат средства, какое состояние несёт преемник, истёк ли таймлок. В Kaspa это обеспечивается опкодами интроспекции KIP-20 и схемой привязки CovenantID, которая связывает каждый экземпляр ковенанта с его происхождением в блокчейне.

Kaspa Script — это стековая машина. Писать многоветвевый ковенант — с переходами состояний, лимитами комиссий, возрастными ограничениями и правилами выплат — на «сырых» опкодах всё равно что писать парсер протокола на ассемблере: возможно, но площадь для ошибок растёт быстрее самого кода. Нужны три вещи:

1. Язык, который выражает логику ковенанта на более высоком уровне, чем опкоды. 2. Компилятор, который генерирует детерминированный, фиксируемый байткод. 3. Среда выполнения, способная собирать корректные транзакции из аудируемых артефактов без повторного запуска компилятора.

SilverScript обеспечивает (1) и (2). Argent добавляет слой поверх и обеспечивает (3). Вместе они формируют инструментарий разработчика Toccata для программируемых условий расходования в модели UTXO Kaspa.

SilverScript: компилятор ковенантов

SilverScript (kaspanet/silverscript) — официальный компилятор ковенантов Kaspa. Исходный файл .sil описывает скрипт с типизированными областями состояний, временными ограничениями, вспомогательными функциями интроспекции и логикой ветвления. Компилятор выдаёт байткод Kaspa Script — те самые байты, которые окажутся в блокчейне внутри P2SH-адреса.

Ключевые возможности на текущей закреплённой версии:

  • Области состояний со splice ABI. Область фиксированного размера в байтах, которую скрипт считывает из входа расходования и записывает в выход-преемник. Ковенант Arena Game, например, использует версионированную область состояния размером 108 байт для отслеживания рук игрока и дилера, индексов карт и фазы игры — всё закодировано как сырые байты, которые скрипт декодирует с помощью OpNum2Bin и арифметических опкодов.
  • OpBlake3 (0xd9). Доступен в ковенантах, обеспечивает on-chain верификацию blake3-коммитментов без изменений протокола. Arena использует это для проверки того, что коммитмент колоды дилера соответствует реально разданным картам.
  • Временные типы. <delay> OpCheckSequenceVerify для возрастных ограничений — скрипт может требовать, чтобы UTXO существовал в течение N блоков, прежде чем откроется таймаутный путь. Так работают открытые ветви таймаутов в Arena: если игрок или дилер исчезает, его залог становится возвращаемым по истечении задержки.
  • Интроспекция. Скрипты могут читать поля транзакции — значения выходов, публичные ключи скриптов, активную outpoint — для обеспечения сохранения значений и правил выплат. Каждый выход в транзакции ковенанта учтён: кто что получает и в рамках какого лимита комиссии.
  • ZK-верификация. Опкоды r0.* и g16.verify позволяют верифицировать доказательства Groth16 прямо в блокчейне. Режим HOSTED в Arena использует этот путь: дилер отправляет доказательство с нулевым разглашением того, что колода была честно перетасована, и ковенант проверяет его on-chain.

Компилятор детерминирован: один и тот же исходник .sil на одном и том же коммите SilverScript даёт побайтово идентичный результат. Это не просто удобство — это требование безопасности. Разница в один байт меняет P2SH-адрес, а значит, и идентичность ковенанта в блокчейне. Закреплённые коммиты, BLAKE3-хеши шаблонов и эталонные тестовые векторы существуют именно для обеспечения этой детерминированности.

SilverScript также определяет стандартные шаблоны KCC (Kaspa Covenant Contracts) — KCC1, KCC2 и KCC20 влиты в main как черновые спецификации. Это эталонные реализации, а не продакшен-контракты. Рабочие контракты Kaspa Forge используют собственные зафиксированные пины SilverScript, а не шаблоны KCC.

Argent: многоакторные приложения на SilverScript

Если SilverScript компилирует один скрипт за раз, то Argent (argent-lang/argent) моделирует приложение как граф ковенант-акторов, способных атомарно менять состояние в рамках одной транзакции Kaspa.

Граф приложения .ag в Argent объявляет акторов, их типы состояний, точки входа и переходы. Компилятор разрешает граф, генерирует .sil на SilverScript для каждого актора и создаёт портативный артефакт — JSON-пакет (artifact.json плюс manifest.json), содержащий всё, что нужно среде выполнения для сборки транзакций: байты скриптов, диапазоны состояний, хеши шаблонов, идентификаторы зависимостей и рецепты витнесов.

Вот ключевой архитектурный сдвиг:

.ag application graph
        ↓ argent compiler
plain auditable .sil + portable artifact + manifest
        ↓ argent-runtime / ArtifactBundle / TxContext
atomic multi-actor Kaspa transaction

Артефакт работает как верифицированный рецепт: аудитор проверяет его один раз, а среда выполнения следует ему для сборки транзакций, не нуждаясь в компиляторе или его AST. TxContext несёт метаданные sequence, lock time, lane и payload, а также проверяет вычислительную и транзиентную массу до подписания транзакции.

Межприложенческое связывание. Argent поддерживает импорт акторов из отдельно скомпилированных приложений. Зависимость записывается как точный идентификатор артефакта в манифесте. Во время выполнения ArtifactBundle отклоняет отсутствующую или несовпадающую зависимость. Две команды могут независимо версионировать и аудировать свой код ковенантов, а затем связывать их без перекомпиляции — идентификатор артефакта служит якорем доверия.

Ограниченные genesis-спавны. Примитив spawns позволяет существующему входу ковенанта авторизовать создание нового ковенанта в транзакции. Скрипт реконструирует прообраз CovenantID по KIP-20 из активной outpoint и значений выходов, выведенных консенсусом, доказывая, что объявленная группа genesis-выходов полна и правильно упорядочена. Затем родитель может записать covenant-id дочернего элемента в собственное состояние-преемник. Для Kaspa Forge это естественно ложится на паттерны вроде Room → Game или Listing → Escrow.

Планировщик маршрутов и явная экономика значений. Каждый выход актора имеет имя и должен явно ссылаться на своё .value или объявить unrestricted(output.value). Это не полное доказательство потока значений — проверка синтаксическая и ограничена точкой входа — но она отлавливает случайно осиротевшие выходы и делает аудит сумм более удобным, чем в рукописных скриптах.

Проверки допуска: от компилятора до продакшена

Argent и SilverScript — это инструменты, а не гарантии. Прежде чем любой ковенант выйдет в продакшен на Kaspa Forge, он проходит документированную процедуру допуска — предстартовый чеклист, где каждый пункт должен быть пройден:

1. Пин. Точный коммит Argent, SilverScript, тулчейна Rust и rusty-kaspa. Никаких плавающих git-зависимостей. 2. Воспроизводимость. Две чистые сборки дают побайтово идентичные .sil, артефакт, манифест и байты скриптов. Пути и символы перевода строки не должны влиять на результат. 3. Бюджет инспекции. argentc inspect выводит размер скрипта, диапазон состояний, хеш шаблона, количество опкодов, оценку скрипта подписи и вычислительную массу для каждой точки входа. 4. Доверие к артефакту. Байты скриптов, диапазон состояний, хеш шаблона, идентификаторы зависимостей и квитанции импортированных акторов проверяются независимо. Пока апстрим не закроет пробел с квитанциями связанных акторов, верификатор должен закрывать его вручную. 5. Тесты консенсуса. Позитивные и мутационные матрицы проходят не только тесты сборщика, но и локальный TxScriptEngine и финансируемый TestConsensus на целевом пине Toccata — реальное выполнение консенсуса, а не просто симуляция скриптов. 6. Инварианты приложения. Точные выходы, сохранение значений, лимиты комиссий, владение подписями, DAA и sequence locks, живучесть и восстановление проверяются отдельно. Компилятор их не выводит. 7. Аудит. Сгенерированные .sil, артефакт, среда выполнения и исходное приложение проходят ревью. Дельта-аудит запускается при каждом обновлении пина. 8. Версионирование. Любое изменение, затрагивающее байты скриптов, порождает новый P2SH-адрес. Рабочие UTXO никогда не «перекомпилируются» — миграция означает новые адреса и действия со стороны пользователя.

Эта последовательность — не формальность. Каждый этап отлавливает класс ошибок, которые вышележащие слои не способны обнаружить.

Как Kaspa Forge использует инструментарий

Отношения между инструментарием и продуктами Kaspa Forge многослойны, а границы — жёсткие:

Рабочие контракты — зафиксированный SilverScript, а не Argent. Kaspa Safe (vault.sil) и Kaspa Escrow (escrow.sil, также обслуживающий сделки Deposit и Marketplace) — это закреплённые контракты на SilverScript с собственными генераторами, эталонными векторами и наборами тестов консенсуса. Ковенанты Room и Game в Arena аналогично зафиксированы с собственными пинами, ZK-журналом, логикой таймаутов и матрицами выплат. Эти контракты появились до интеграции Argent и не будут перекомпилированы — любая новая версия станет новым семейством P2SH, требующим миграции от пользователей.

Исследования и разработки — Argent как чеклист проектирования. Argent попадает в архитектурное ревью нового сервиса Kaspa Forge, когда конечному автомату требуется: два и более состоятельных ковенант-актора, атомарно меняющих состояние; родитель, авторизующий полный genesis дочернего ковенанта; межприложенческое связывание между независимо версионируемыми компонентами; или портативные артефакты для браузерного или нативного сборщика без зависимости от компилятора.

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

Токены — ручной SilverScript для v1. Планируемый ковенант токена с фиксированным предложением — это единственный зафиксированный контракт на актив без живого минтера. Написанный вручную SilverScript короче и не зависит от нерешённого пути бутстрапа KCC20.

Рабочие версии хранилища Kaspa Safe и эскроу Kaspa Escrow работают на зафиксированных, независимо аудированных контрактах SilverScript — а не на Argent. Если хотите увидеть ковенанты в продакшене прямо сейчас — начните с них. Описанный здесь инструментарий обеспечивает исследования и разработки для будущих сервисов Kaspa Forge, а его ворота допуска — причина, по которой рабочие контракты остаются на собственных закреплённых генераторах.

Создать сейф

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

Инструментарий мощный, но его ограничения реальны, и стоит говорить о них прямо:

  • Argent не готов к продакшену. Разработчики прямо указывают, что у проекта нет релизов, тегов и аудита. Схема артефактов по-прежнему меняется в ломающих коммитах. PR #44, добавляющий ограниченные диапазоны для consumes и emits, остаётся черновиком — сборка транзакций в среде выполнения в нём не завершена.
  • Шаблоны KCC в SilverScript — черновые. KCC1, KCC2 и KCC20 влиты в main, но не финализированы. KCC21 — открытый PR. Ни один из них не является контрактом, работающим в мейннете.
  • Инструментарий не заменяет аудиты. Сгенерированные .sil должны проходить независимое ревью. Корректность компилятора, семантика комиссий, соблюдение таймлоков и сохранение значений — это инварианты прикладного уровня, которые ни один компилятор не выводит автоматически. Утверждать обратное было бы нечестно.
  • Квитанции связанных акторов неполны. Межприложенческий допуск пока нельзя полностью доверять как границу безопасности — верификатор должен закрывать пробел вручную, либо архитектура не должна на него полагаться.
  • Тулчейн Rust должен быть закреплён. CI апстрима Argent проходит на Rust 1.94.0; Rust 1.96.0 вводит ломающее правило Clippy. Воспроизводимые сборки требуют точной версии тулчейна как части манифеста.
  • Рабочие контракты нельзя перекомпилировать. Изменение байтов скрипта меняет P2SH-адрес. Механизма обновления на месте не существует — миграция означает новые адреса и осознанные действия пользователя.

Честный итог: SilverScript — рабочая протокольная технология, которая компилирует и поставляет контракты ковенантов Kaspa в мейннет с момента активации Toccata. Argent — перспективный компилятор для исследований и разработок, уже доказавший, что многоакторная композиция работает на текущей виртуальной машине Kaspa: ограниченные спавны, межприложенческое связывание и портативные артефакты — это реальные примитивы, проверенные на консенсусе. Но Argent не является зависимостью ни одного рабочего скрипта, управляющего деньгами, и описанные выше ворота допуска — это механизм, который поддерживает такое положение дел до тех пор, пока инструментарий не заслужит доверие к продакшену через аудиты, стабильные релизы и закрытые пробелы в квитанциях.

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

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

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

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

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

FAQ

Что такое SilverScript?

SilverScript — официальный компилятор ковенантов для Kaspa. Он компилирует исходные файлы .sil в байткод Kaspa Script, который обеспечивает сложные условия расходования — ковенанты — для выходов UTXO в рамках активации Toccata.

Что такое Argent?

Argent — компилятор более высокого уровня, работающий поверх SilverScript. Он моделирует многоакторные приложения ковенантов в виде графов, генерирует портативные артефакты и включает среду выполнения без зависимости от компилятора для построения атомарных транзакций Kaspa.

Написаны ли рабочие контракты Kaspa Forge на Argent?

Нет. Рабочие контракты Kaspa Safe и Kaspa Escrow — это зафиксированные контракты на SilverScript с закреплёнными генераторами и независимыми аудитами. Argent — инструмент для исследований и разработки будущих сервисов, а не зависимость какого-либо рабочего скрипта.

Можно ли использовать Argent для написания боевых ковенантов прямо сейчас?

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

Что такое ковенант KIP-20?

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

Устраняет ли инструментарий необходимость в аудитах?

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

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

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

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

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

Создать сейф