Kaspa Forge
Восстановление

Восстановить средства независимо

Для Сейфа есть vaultctl; для Гаранта и Залога — публичный recovery-kit dealctl. Оба собираются из исходника и работают через Kaspa-ноду без API Kaspa Forge.

🚨 Вывод уже начался

Отмени его тревожным ключом

Пришёл алерт «начат вывод», а это не ты? Времени у тебя — всё окно отмены с момента старта (его длину ты выбирал при создании; таймер виден в «Мой сейф»). Подойдёт любой компьютер или чужой телефон: при раздельном хранении используй тревожную карточку, при общем — импортируй полную зашифрованную копию .age, экспортированную с устройства создания. Одного Forge Sync недостаточно: тревожные ключи он не переносит.

  1. Не паникуй. Монеты не сдвинутся, пока не закончится окно отмены.
  2. Открой Мой сейф — с любого устройства (сначала проверь адрес в строке браузера — см. ниже).
  3. Найди активный вывод и сколько времени осталось.
  4. Нажми ⛔ Отменить вывод. Если при создании сейфа ты выбрал раздельное хранение, введи тревожный ключ с тревожной карточки. Если выбрал хранение в мастер key-file, разблокируй профиль Деска — панель возьмёт ключ оттуда.
  5. Никогда не вводи ключи и пароль деска на сайтах, отличных от kaspaforge.org.
  6. После отмены — не расслабляйся. Раз вывод запускал не ты, как минимум горячий ключ скомпрометирован, и вор может попробовать снова. Сразу создай новый сейф и выведи всё туда. Держи тревожный ключ доступным до конца окна. Если выбрал общее хранение и весь профиль мог попасть к вору, считай скомпрометированными оба ключа.
  7. Быстрый уход (для продвинутых): раз ты контролируешь оба ключа — горячий и тревожный с карточки либо из зашифрованного профиля, — путь migrate ковенанта перевозит весь сейф в новый мгновенно, без ожидания окна. Он доступен в открытой CLI: vaultctl migrate (блок ниже). Вор только с горячим ключом использовать его не сможет: migrate требует обе подписи.
🔒
Ты на настоящем сайте, только если в адресной строке ровно:
kaspaforge.org
Не вводи ключи на похожих копиях (например kaspa-forge.help). Наш старый адрес safe.officeforge.co просто редиректит сюда. Сомневаешься — используй офлайн vaultctl ниже, ему сайт вообще не нужен. А просто посмотреть сейф можно в любом эксплорере Kaspa: вбей адрес сейфа из Деска на kaspa.stream — баланс и транзакции видны без нас и без ключей.

Восстановить из мастер key-file (простой способ)

Твои сейфы, сделки и объявления живут в одном зашифрованном мастер key-file — твоём профиле Деска. С любого устройства открой свой Деск, выбери «Импорт / восстановить» и загрузи мастер key-file (.age) с его паролем — профиль вернётся разом. Рабочие ключи для созданного после раннего экспорта выводятся из мастер-seed, а публичные записи Деск находит на сервере. Тревожные ключи — исключение ниже: выбрав общее хранение для сейфа, сделай свежий полный экспорт с этого устройства.

Место хранения тревожного ключа зависит от выбора при создании каждого сейфа. В более безопасном раздельном режиме ключ живёт только на тревожной карточке, а Деск помечает сейф «alarm: карточка»; отмена кражи и migrate попросят ключ с неё. Если ты выбрал более удобное общее хранение, тревожный ключ находится внутри полной зашифрованной копии мастер key-file с устройства создания. Forge Sync сознательно исключает все тревожные ключи: на втором устройстве сейф появится, но отменить вывод будет невозможно, пока не импортируешь эту полную копию .age.

Нужно достать сырые ключи из файла — даже если этот сайт исчезнет? Скачай офлайн-дешифратор файла ключей (один HTML-файл, ~3 МБ): открой его с диска при выключенном интернете, загрузи .age-файл и его пароль — он покажет все приватные ключи, сохранённые внутри, без единого сетевого запроса. Тревожных ключей сейфов с раздельным хранением там нет: они существуют только на своих карточках. Файл — стандартный age, CLI тоже работает: age -d keyfile.age. Зеркало в открытом репозитории: github.com/Kaspaforge/kaspaforge.

Я — наследник

Тебе оставили сейф Kaspa Safe. Владелец задал срок: пока он периодически отмечался («я жив»), сейф был только его. Если отметки прекратились — после срока сейф открывается тебе. Раньше срока не увидишь и не заберёшь ничего, так задуман контракт.

Режим «авто»Делать ничего не нужно. После срока монеты сами придут на твой Kaspa-адрес — тот, который владелец указал при создании. Просто следи за своим кошельком.
Режим «ручной»Импортируй зашифрованный мастер key-file владельца в Деске, затем открой сейф в «Мой сейф». Когда срок истечёт, появится блок «Наследство»: введи приватный ключ своего адреса (экспортируй из своего кошелька — Kaspium и kaspa-ng это умеют) и нажми «Забрать наследство». Монеты уйдут строго на твой адрес — контракт не позволит иначе.

Сколько осталось до открытия — видно в панели (строка «Таймер») или командой vaultctl status. Наши разрешения не нужны: правила исполняет блокчейн. Сайт недоступен — то же самое делает vaultctl inherit (блок ниже).

Если сайт недоступен — восстановление офлайн через vaultctl

Kaspa Safe не зависит от нас: сейф — ончейн-контракт, и он проверяет только твои ключи и время. Открытая утилита vaultctl делает всё то же, что сайт, из терминала против любой ноды Kaspa v2+ (запущенной с --utxoindex). Код опубликован: github.com/Kaspaforge/kaspaforge — сохрани себе копию (кнопка Code → Download ZIP), тогда не будешь зависеть даже от GitHub.

# один раз: собрать (нужны Rust с rustup.rs, protobuf-compiler, clang)
git clone https://github.com/Kaspaforge/kaspaforge
cd kaspaforge/vaultctl && cargo build --release

# расшифруй офлайн через web/keyfile-decrypt.html или стандартный age:
# расшифруй его один раз и вытащи нужный сейф — vaultctl понимает и JSON:
age -d kaspa-office-profile.age > profile.json       # спросит пароль Деска
jq '.vaults[0]' profile.json > vault.json                 # выбери нужный сейф

# состояние сейфа: баланс, возраст, таймер наследования
vaultctl status   --recovery vault.json

# начать вывод на свой адрес (нужен горячий ключ из профиля)
vaultctl initiate --recovery vault.json --to kaspa:q...

# отменить идущий вывод (тревожный ключ; --dest = адрес, КУДА идёт вывод —
# свой ты знаешь, вора покажет TG-алерт или панель)
vaultctl cancel   --recovery vault.json --dest kaspa:q...

# доставить созревший вывод на назначение (ключ не нужен)
vaultctl complete --recovery vault.json --dest kaspa:q...

# чекин «я жив» · доставка наследства после срока
vaultctl checkin  --recovery vault.json
vaultctl inherit  --recovery vault.json                # режим «авто»: без ключа
vaultctl inherit  --recovery vault.json --heir-sk КЛЮЧ # «ручной»: ключ наследника

# migrate — ОБА ключа (горячий + тревожный) = мгновенная полная власть: перевезти
# весь сейф куда угодно без задержки (ротация засветившегося ключа, апгрейд версии
# контракта, уход). --dest спасает UTXO на полпути вывода (с unvault-адреса).
vaultctl migrate  --recovery vault.json --to kaspa:q... [--dest kaspa:q...]

Хранение тревожного ключа: если ты сохранил его в зашифрованном профиле, он будет в vault.json только тогда, когда profile.json получен из полной копии .age, содержащей ключ, — никогда не из Forge Sync. Для сейфа с раздельным хранением перед cancel или migrate допиши ключ с тревожной карточки полем "alarm_sk".

Полезные флаги: --node grpc://твоя-нода:16110 — любая нода Kaspa v2+ с --utxoindex (по умолчанию публичная нода OfficeForge grpc://node.kaspaforge.org:16110 — или подними свою); --dry-run — собрать и подписать транзакцию, показать txid, но НЕ отправлять (попробуй сначала так). Проверить сам контракт: vaultctl selftest — 25 проверок всех путей и атак в VM ноды.

Гарант и Залог — независимое восстановление через dealctl

Публичный recovery-kit/ содержит общее Rust-ядро транзакций, dealctl, escrow.sil, версионированные схемы, детерминированные векторы, гайды EN/RU, офлайн-дешифратор .age и манифест контрольных сумм. Hosted-сервера, чата/медиа, модерации, Telegram и operator/admin API внутри нет.

# проверь и собери опубликованный исходник
git clone https://github.com/Kaspaforge/kaspaforge
cd kaspaforge/recovery-kit
sha256sum -c RECOVERY-SHA256SUMS
cargo build --release --locked -p dealctl

# ОФЛАЙН: расшифруй бэкап Деска, извлеки и проверь одну сделку
age --decrypt -o profile.json your-backup.age
./target/release/dealctl extract --profile profile.json --deal ID --output deal.recovery.json
./target/release/dealctl verify --recovery deal.recovery.json

# ОФЛАЙН: создай ПУБЛИЧНЫЙ watch-файл — приватных ключей в нём нет
./target/release/dealctl watch --recovery deal.recovery.json --output watch.json

# ОНЛАЙН: запроси любую Kaspa-ноду v2+ с --utxoindex
dealctl prepare --watch watch.json --node grpc://ТВОЯ_НОДА:16110 --output lines.json

# ОФЛАЙН: подпиши разрешённый путь; пакет линий привязан к этой сделке
dealctl escrow release --recovery deal.recovery.json --line lines.json --output release.tx.json

# ОНЛАЙН: отправь готовую подпись; приватный ключ здесь не нужен
dealctl submit --tx release.tx.json --node grpc://ТВОЯ_НОДА:16110

Приватная recovery-запись остаётся офлайн. На сетевую машину переходят только watch.json, lines.json и подписанная транзакция; приватных ключей в них нет. dealctl также поддерживает возврат, спор, взаимный расчёт, keyless auto-release/timeout и соответствующие команды Залога. Перед движением средств прочитай полный гайд.

Если потерян ключ

Потерян горячийМонеты не украдены, но обычный вывод больше не запустить. Если включено наследование — просто перестань делать чекины: после срока монеты уйдут наследнику сами (режим «авто») или наследник заберёт их своим ключом («ручной»). Наследником можешь быть ты сам — если указывал свой второй адрес. Если наследование выключено — честно: монеты заморожены навсегда, никто (включая нас) их не достанет. Поэтому мы советуем включать наследование даже «на себя». Храни бэкап мастер key-file и пароля от Деска.
Потеряна карточкаЭто относится только к сейфу с раздельным хранением. Деньги целы: вывод горячим ключом и наследование работают. Пропали только отмена кражи и мгновенный migrate. Не тяни: обычным выводом (дождавшись окна) переведи KAS в новый сейф со свежим тревожным ключом.
Потеряны обаДоступ утрачен навсегда (если не включено наследование — см. «потерян горячий»). OfficeForge не сможет восстановить ключи — никто не сможет. Поэтому храни бэкап мастер key-file (и его пароля).

Что мы никогда не попросим

Если кто-то просит прислать приватный ключ, seed-фразу, пароль от Деска, мастер key-file или тревожную карточку — это мошенник.

К карточке — особое отношение: вместе с key-file она даёт мгновенный полный контроль над сейфом (путь migrate). Никто настоящий никогда не попросит её «проверить» или «подтвердить».

Мастер key-file не даёт OfficeForge доступ к твоим монетам — он зашифрован твоим паролем и существует только для тебя, чтобы подписывать действия своими ключами. Мы не храним приватные ключи и твой пароль и не можем восстановить их за тебя. И никогда их не попросим — ни в чате, ни в письме, ни «для проверки». Поддержка (kaspa@officeforge.co) может объяснить шаги, но физически не имеет доступа ни к ключам, ни к монетам.