KaspaForge
Сетьпроверка DAAпроверка Нодапроверка
КовенантыToccata КлючиЛокально КастодияНет
Статуспроверка
Безопасность · проверяй, а не верь

Центр безопасности

Всё, от чего зависит, можно ли доверить Kaspa Forge деньги, — в одном месте: реальные хеши, ключи и цифры тестов и то, как каждую из них проверить самому. Kaspa Forge — некостодиальный сервис: средства лежат в открытых ончейн-ковенантах, и эта страница — попытка сделать это проверяемым, а не обещанием на словах. Последняя сверка: 23 июля 2026. Контакт по безопасности: kaspa@officeforge.co · security.txt.

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

Что где живёт

Ваше устройство

Ключи создаются и остаются здесь — в зашифрованном профиле под паролем или на отдельной тревожной карточке. Каждая транзакция подписывается локально; пароль и приватные ключи никуда не отправляются.

Наш сервер

Видит только публичные параметры, подписанные транзакции и шифротекст: зашифрованные чаты, зашифрованные блобы синка, медиа объявлений. Ничто из хранимого здесь не может двигать средства.

Kaspa L1

Здесь лежат монеты и скрипты ковенантов. Задержки, пути выплат и таймауты обеспечивает консенсус Kaspa — а не этот сайт.

Границы по продуктам

Что обеспечивает ковенант — и максимум, что можем мы

продуктковенант обеспечиваетоператор может максимум
Сейфвывод уходит только через ваше окно задержки на адрес, зафиксированный при старте; отдельный тревожный ключ его отменяет; один вход + кап комиссии на каждом путиследить за сетью, отправить уже подписанное бесключевое завершение, слать оповещения
Эскроу10 фиксированных путей выплат — только покупателю, продавцу или видимому адресу комиссии; третьей стороне заплатить нельзякак арбитр — выбрать покупатель / продавец / раздел внутри открытого спора
Залогтот же эскроу-ковенант с залогодателем по умолчанию: нет претензии к дедлайну → автоматический возвратте же пределы арбитра, и только пока открыта претензия
Маркеткнопка «Купить» открывает тот же эскроу-ковенант — оплата не проходит через насубрать объявление из каталога; монеты профинансированной сделки неприкосновенны
Доскикаждый текстовый пост — подписанная транзакция Kaspa; чаевые платятся напрямую ключу постаскрыть контент из нашего зеркала (tombstone) — ончейн-запись остаётся
Это те же инварианты, что в §1, — по продуктам. Они действуют независимо от доверия к нам; честная оговорка: ковенанты открыты, но внешнего аудита не проходили — см. предупреждение выше.

1. Модель доверия

Kaspa Forge не берёт ваши монеты в кастоди. Деньги лежат в ончейн-ковенанте Kaspa — скрипте, который исполняет консенсус Kaspa, а не наш сервер. Подписывающие ключи существуют только в вашем браузере или приложении: внутри зашифрованного профиля Деска либо, если для сейфа выбрано отдельное хранение тревожного ключа, на alarm-карточке. Нам они не передаются; граница клиентских ключей подробно описана от памяти браузера до подписи транзакции. Forge Sync загружает только E2E-зашифрованную безопасную проекцию и никогда не включает тревожные ключи сейфов — даже если ключ хранится в зашифрованном профиле. Что это даёт, в виде жёстких инвариантов:

  • Сервер не может украсть. Ни приватных ключей сейфа/эскроу, ни seed на сервере нет. Keyless-пути ковенанта (у сейфа — complete и inheritAuto; у эскроу — autoRelease и timeout) жёстко биндят выход к фиксированному получателю, поэтому даже наш вотчер способен лишь толкнуть средства туда, куда уже говорит контракт.
  • Арбитр не может украсть. У эскроу-ковенанта нет пути к третьему лицу — каждый из 10 путей платит только покупателю, продавцу или на фиксированный fee-адрес сервиса. Скомпрометированный или принуждённый арбитр не может выразить кражу валидной транзакцией; максимум — выбрать покупателя / продавца / раздел.
  • Вор только с горячим ключом быстро ничего не получит. Вывод из сейфа уходит только через окно задержки (unvault) на фиксированный адрес, а отдельный тревожный ключ его отменяет. Хранение на отдельной карточке — более безопасный дефолт; хранение в зашифрованном профиле — осознанный обмен изоляции на удобство.
  • Вотчер — сервис liveness, а не кастодиан. Он следит за цепочкой, публикует уже подписанные keyless-пути (авто-релиз, наследование, timeout) и шлёт алерты — ключа, способного перенаправить средства, у него нет.
  • Ковенанты только P2PK и несоставляемы. Выходы биндятся к простым pay-to-pubkey-скриптам; ковенанты нельзя сцепить или обернуть в больший контракт, меняющий их правила.
  • Single-input на каждом пути. Каждый вход обоих ковенантов утверждает tx.inputs.length == 1 и ончейн-cap бюджета комиссии (0,1 KAS), закрывая multi-UTXO-сифон и не давая сжечь переход в сетевую комиссию.
  • Сервис — удобство, а не зависимость. Если наш сайт исчезнет, ваши средства — нет: контракты живут ончейн. Для сейфа есть офлайн-дешифратор и vaultctl; для Гаранта и Залога — публичный recovery-kit/dealctl. Оба контура работают через независимую ноду Kaspa — см. §10.

Полная архитектура и аннотированный список инвариантов — в документации; исходники контрактов ниже — источник истины.

2. Контракты и их хеши

Всем управляют два ковенанта на Silverscript. Оба целиком опубликованы в нашем открытом репозитории. SHA-256 ниже — от файла-исходника ковенанта в опубликованном виде: он позволяет убедиться, что код, который вы аудируете, — это код, который мы поставляем.

vault.sil — ковенант сейфа Kaspa Safe
версияv3 — наследование (auto / signed), путь migrate
пути траты7 — initiate · cancel · complete · checkin · inheritAuto · inheritSigned · migrate
sha-256a47cb298f60d688427585f9f7b443fddd3bef44c6ec87ebf35648897f7d0220b
escrow.sil — ковенант Kaspa Гарант (Escrow)
версияv1 — 10 фиксированных путей выплаты
пути траты10 — release · refund · mutual · dispute · autoRelease · arbitrate{ToBuyer,ToSeller,Split} · timeout{ToBuyer,ToSeller}
sha-25665d4b6bb3c516647b72a873dab1272445c498f8b17bfba19ec15519726dcb4a0
Почему нет одного «хеша задеплоенного контракта»? Скрипт-префикс ковенанта в цепочке — это исходник плюс ваши параметры (ваши pubkeys, задержка, наследник, бюджет комиссии, условия сделки), поэтому у каждого сейфа и каждой сделки свой script-hash — так и задумано. Стабильная, проверяемая вещь — исходник выше; конкретный script сейфа/сделки детерминированно выводится из него открытым тулингом, а ваш Деск показывает точный адрес, который вы пополнили. Как воспроизвести — в §3.

3. Проверьте контракт сами

Всё для независимой проверки и восстановления стороны открыто в github.com/Kaspaforge/kaspaforge: оба .sil-исходника, vaultctl для Сейфа и hosted-free recovery-kit с общим Rust-ядром и dealctl для Гаранта и Залога. Операторский escrowctl не выдаётся за публичный recovery-инструмент.

Сверьте хеш исходника с тем, что заявлено на этой странице:

# после клонирования репозитория
sha256sum contracts/vault.sil contracts/escrow.sil
# ожидается:
# a47cb298f60d688427585f9f7b443fddd3bef44c6ec87ebf35648897f7d0220b  contracts/vault.sil
# 65d4b6bb3c516647b72a873dab1272445c498f8b17bfba19ec15519726dcb4a0  contracts/escrow.sil

Запустите публичные проверочные наборы. Тулинг закрепляет Silverscript на rev 26e3b9f. Selftest Сейфа и ядро Deal Recovery исполняют валидные и атакующие пути в VM Kaspa; recovery-векторы дополнительно доказывают, что браузер/WASM, core и CLI выводят одинаковые адреса и байты транзакций:

# нужны Rust (rustup.rs), protobuf-compiler, clang
cd vaultctl && cargo run --release -- selftest  # Сейф: 25 проверок
cd ../recovery-kit
cargo test --locked -p kaspa-forge-contracts      # 33: unit + VM + parity
cargo test --locked -p dealctl                    # 33; simnet E2E включается отдельно

Воспроизведите адрес своего сейфа. Офлайн расшифруйте полный .age-профиль, извлеките запись сейфа как vault.json, затем выполните vaultctl status --recovery vault.json. Команда пересоберёт ковенант и напечатает тот же адрес, который пополнил ваш Деск, — доказательство, что задеплоенный script и есть этот исходник, инстанциированный вашими параметрами, без сервера в контуре.

Проверьте и восстановите свою сделку, не отдавая ключ онлайн-машине. Офлайн-команда dealctl watch создаёт публичный watch-файл; онлайн prepare --watch получает UTXO ковенанта; офлайн-подпись привязывает пакет к recovery-записи; онлайн submit отправляет уже подписанную транзакцию. Точный четырёхшаговый поток и сверка checksum — в Recovery hub.

4. Публичные ключи и адреса

Это единственные долгоживущие значения сервиса, зашиваемые в эскроу-сделки. Оба публичны по природе — x-only публичный ключ и адрес Kaspa. Никакого приватного ключа сервиса, которому нужно доверять, нет: ключ арбитра лишь позволяет арбитру выбрать среди покупатель/продавец/раздел, а fee-адрес только получает видимую комиссию сервиса.

pubkey арбитра (x-only)43eec216c3c93e4c0565eb53aae1e4674d567111661baf5eaa2df405316eaa2e
fee-адрес эскроуkaspa:qq3manh4l3yj69hc062wz5a86h6qjffx7nuh9ldkdjqr5kaxm4zy6sh2lksln

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

5. Тесты

Автоматические тест-наборы (измерено 23 июля 2026). Это свежие locked/all-target прогоны. Hosted/runtime-наборы и независимо публикуемые recovery-наборы показаны отдельно, чтобы публичное доказательство не пряталось в одной общей цифре:

крейт сервера335 passed · 0 failed · 5 ignored
browser/WASM-крейт38 passed · 0 failed
runtime subtotal373 passed · 0 failed
публичное recovery-ядро33 passed · 0 failed
публичный dealctl33 passed · 0 failed · 1 opt-in simnet E2E

Консенсусные и recovery-доказательства. У Сейфа 25 публичных VM self-checks. В 33 теста публичного Deal Recovery core входят 9 тестов VM Kaspa и 2 детерминированных parity-вектора. В релизном ревью также прошёл opt-in hosted-independent simnet E2E по цепочке extract → verify → watch → prepare → offline sign → submit с точными дельтами ончейн-балансов.

6. Воспроизводимые сборки и приложение

WASM-ядро сейфа/эскроу собирается из исходников скриптом wasm/build.sh (wasm-pack, release). У Deal Recovery Kit один locked Cargo workspace, fail-closed allowlist, leak-scan всего дерева и RECOVERY-SHA256SUMS; он собирается из корня репозитория командой cargo build --release --locked -p dealctl. Hosted-сервер, чат/медиа, модерация, Telegram и operator/admin-поверхности в пакет не входят.

Android APK сейчас не распространяется. Предыдущие пакетные сборки сняты, потому что они больше не соответствуют текущему продукту Kaspa Forge. Не устанавливайте старый пакет из кеша или стороннего зеркала; до выхода актуальной сборки используйте браузерную/PWA-версию.

Веб-приложение работает в браузере. Content-Security-Policy ограничивает источники скриптов и сетевые назначения и уменьшает последствия инъекции, но не заменяет проверку клиентского кода и независимо проверенный recovery-kit.

7. Известные ограничения

Честность — часть истории про безопасность. Вот реальные края текущего дизайна:

  • Ковенанты не проходили аудит. Контракты открыты, но внешнего аудита ещё не было. Эскроу-сделки принудительно от 50 KAS.
  • Доставка hosted-веба остаётся поверхностью доверия. Используя живой сайт, вы доверяете этому origin доставку опубликованных клиентских байтов. CSP — эшелон защиты, а не доказательство против скомпрометированного first-party релиза. Храните проверенный recovery-kit и сверяйте его checksum перед аварийной операцией.
  • Эскроу требует активного покупателя. Спор нужно открыть внутри окна спора. Если окно прошло без спора, средства авто-релизятся продавцу — покупатель обязан успеть.
  • Потеряли материалы восстановления — потеряли доступ. Аккаунтов и сброса пароля нет. Храните отдельно полный зашифрованный экспорт .age и пароль к нему; для сейфа с отдельным хранением тревожного ключа сохраните также alarm-карточку. Forge Sync не заменяет резервную копию: он не может инициализировать пустое устройство и никогда не переносит alarm_sk.
  • Сервисный токен — это capability. Токен в ключевом файле авторизует управляющие API-вызовы для вашего сейфа/сделки; получивший его может звать эти эндпоинты (двигать средства вне фиксированных путей ковенанта он всё равно не может). Автоматически он не ротируется. Подробности — в политике приватности.
  • Для алертов нужны и доступ, и канал доставки. Первые 30 дней — бесплатный пробный период, затем мониторинг стоит 100 KAS в год. Сам пробный период или оплата ничего не доставляют: подключите Telegram либо e-mail владельца именно для этого сейфа. Без канала алерт не придёт. Алерты также прекращаются, если сервис недоступен; ончейн-безопасность от них не зависит.
  • Контрагента оцениваете вы. В Гаранте и Маркетплейсе мы не сторона сделки и не проверяем товар, личность или платёжеспособность; арбитр судит только в треугольнике покупатель/продавец/комиссия.

8. История изменений контрактов

Каждое изменение исходников ковенантов, новое сверху (из git-истории репозитория):

дата файл изменение
2026-07-10сейфдобавлен путь migrate (обе подписи = мгновенная полная власть: апгрейд / ротация ключа / выход)
2026-07-10обаончейн-griefing-cap: feeBudget ≤ MAX во всех путях (аудит 11.07)
2026-07-10обабюджет комиссии стал конструктор-параметром + два require() из аудита
2026-07-10обаинвариант single-input во всех путях (multi-UTXO анти-сифон)
2026-07-07сейфзаголовок актуализирован до v3 (наследование auto/signed)
2026-07-05эскроуescrow.sil v1 — 10 путей (release/refund/mutual/dispute/autoRelease/arbitrate×3/timeout×2)
2026-07-04сейфv3 наследование (auto/signed, выбор при создании)
2026-07-04сейфпервый ончейн-сейф (genesis-ковенант принят консенсусом)

Авторитетный полный лог — git-история contracts/vault.sil и contracts/escrow.sil в открытом репозитории.

9. Ответственное раскрытие

Нашли уязвимость? Пожалуйста, сообщите приватно и дайте нам шанс её починить, прежде чем она станет публичной.

  • Напишите на kaspa@officeforge.co с деталями, достаточными для воспроизведения (proof-of-concept, затронутый компонент, влияние).
  • Не публикуйте её открыто и не эксплуатируйте против средств реальных пользователей, пока мы работаем над фиксом.
  • Стараемся подтверждать получение быстро и держать вас в курсе фикса и сроков. Репортёров, которые этого хотят, укажем в благодарностях.

Машиночитаемый контакт по RFC 9116: /.well-known/security.txt.

Платной программы bug bounty у нас нет, и выплат мы не обещаем. Это добросовестный канал ответственного раскрытия — просто просим сообщать приватно, и мы отреагируем.

10. Если что-то пошло не так

Поскольку контракты живут ончейн, вы можете действовать, даже если наш сайт недоступен:

  • Восстановление сейфа (офлайн): локально расшифруйте полный .age-профиль, извлеките vault.json и следуйте гайду по восстановлению сейфа. vaultctl может сделать чекин, отменить кражу, завершить вывод, вступить в наследство или выполнить migrate против любой ноды Kaspa.
  • Восстановление Гаранта или Залога: сверьте checksum опубликованного recovery-kit, офлайн извлеките и проверьте сделку, создайте публичный watch-файл без ключа, подготовьте транзакцию онлайн, подпишите офлайн и отправьте онлайн. Следуйте четырёхшаговому гайду dealctl; приватный ключ не должен касаться сетевой машины.
  • Подозрение на кражу горячего ключа сейфа: тревожным ключом с alarm-карточки или из полного локального профиля отмените текущий вывод, затем сделайте migrate в свежий сейф. На синхронизированном втором устройстве этого ключа нет, пока вы не импортировали туда полный экспорт с устройства создания.
  • Нашли баг безопасности: не публикуйте его открыто — пишите на kaspa@officeforge.co (см. §9).

Связанное: Условия · Приватность сейфа · Приватность Гаранта и Маркета · Документация. Вопросы: kaspa@officeforge.co.