Kaspa Forge
Разбор

Kaspa Escrow Процедура спора: от раскрытия ключей чата до AI-вердикта

22 июля 2026 Автор — ИИ-команда OfficeForge · проверено командой 10 мин чтения
Споры в Kaspa Escrow: раскрытие ключей чата, AI-расследование и арбитраж

Когда два незнакомца торгуют через интернет, самое сложное — не сама транзакция, а то, что происходит, когда что-то идёт не так. Традиционные крипто-сервисы эскроу решают эту проблему, храня ваши средства в собственном кошельке и прося вас доверять тому, что они вынесут справедливое решение. Kaspa Escrow идёт другим путём: средства находятся в ковенанте в блокчейне, а слой разрешения споров — E2E-чат, движок AI-расследования и арбитр-человек — работает полностью вокруг этого контракта, не прикасаясь к ключам.

В этой статье рассказывается о внесетевой координации, благодаря которой споры работают: как личные переписки остаются приватными до подачи спора, как AI анализирует доказательства и выносит рекомендацию, и как арбитр-человек создаёт единственную подпись, способную переместить средства в оспариваемой сделке.

Основа в блокчейне

Прежде чем разбирать внесетевой процесс, полезно понять, что обеспечивает контракт. Контракт Kaspa Escrow (escrow.sil) определяет десять путей расходования. К спорам относятся следующие:

  • dispute(buyerSig) — переводит UTXO из состояния ACTIVE в DISPUTED, сбрасывает его возраст и запускает таймер дедлайна арбитра.
  • arbitrateToBuyer(arbSig), arbitrateToSeller(arbSig), arbitrateSplit(arbSig) — три пути, которые может подписать арбитр-человек; каждый выплачивает только покупателю, продавцу или обоим (каждый выход разделения — не менее 1 KAS).
  • timeoutToBuyer() / timeoutToSeller() — пути без ключей, которые активируются по истечении дедлайна арбитра, гарантируя, что средства выйдут из контракта, даже если все внесетевые участники исчезнут.

Критический инвариант: ни один путь в контракте не может выплатить никому, кроме {buyer, seller, feeSpk}. Арбитр физически не способен перенаправить средства куда-либо ещё. Это не обещание — это скрипт, исполняемый каждым узлом Kaspa.

Пять этапов спора

Этап 1 — Заявления

Когда покупатель открывает спор, обе стороны подают структурированное заявление: refund, release или split (с предложенной пропорцией). Каждое заявление аутентифицируется токеном сделки стороны. Сервер фиксирует заявление, но UTXO в блокчейне пока не меняется. Транзакция dispute покупателя переводит ковенант в режим DISPUTED, сбрасывая возраст UTXO и запуская дедлайн арбитра.

Определение

Окно спора — период, задаваемый при создании сделки (от 24 до 168 DAA-часов в зависимости от шаблона), в течение которого покупатель может подать спор. Если спор не подан, продавец может получить средства через autoRelease. Дедлайн арбитра — более длительное окно (72–240 часов), которое начинается с момента подачи спора; если оно истекает без решения, таймаутный путь контракта выплачивает средства автоматически.

Пресеты окон задаются на стороне сервера в белом списке: для сделок с товарами по умолчанию 72 часа на спор / 168 часов на арбитра; для OTC-сделок — 24/72; для услуг — 120/240. Ни одна сторона не может расширить окно после финансирования. Отсчёт времени использует DAA-скор — подробнее о том, как DAA-скор управляет временными окнами, можно прочитать в базе знаний Kaspa.

Этап 2 — Раскрытие ключей чата

Это граница приватности. На протяжении всей сделки обе стороны общаются по протоколу Kasia — каждое сообщение зашифровано методом ECIES (ECDH на secp256k1 + ChaCha20-Poly1305) и закреплено в BlockDAG в виде транзакции. Сервер передаёт шифротекст; он никогда не видит открытый текст.

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

Обычная сделка:  Сторона A ──[ECIES шифротекст]──▶ Сервер ──▶ Сторона B
                 Сервер ничего не видит.

Спор подан:      Сторона A раскрывает chat_sk ──▶ Сервер расшифровывает переписку
                 Сторона B раскрывает chat_sk ──▶ Сервер расшифровывает переписку
                 AI-медиатор читает открытый текст, выносит вердикт.

Медиа-вложения следуют тому же принципу: каждый файл зашифрован отдельным ключом, загружен как blob и описан внутри E2E-сообщения. Медиатор сверяет хеши SHA-256 с закреплениями в блокчейне для обнаружения подделки. Приватный ключ чата хранится только в оперативной памяти сервера — он никогда не сохраняется на диск или в базу данных.

Этап 3 — AI-расследование и вердикт

После расшифровки чата в работу последовательно включаются две автоматизированные системы.

Медиа-расследование (media_probe.rs) проверяет каждое вложение:

  • Проверка целостности: хеш SHA-256 против закрепления в блокчейне, проверка magic-байтов, извлечение EXIF-данных для изображений.
  • Изображения: передаются в модель компьютерного зрения для классификации содержимого.
  • Видео: извлечение ключевых кадров и аудиодорожки через ffmpeg/ffprobe.
  • Документы: PDF парсятся через poppler.
  • Отслеживание товаров: проверка трек-номеров S10, запрос к SOAP API Почты России.
  • OTC-верификация: для сделок с поддерживаемой встречной стороной (USDT на Tron/TON/ETH/BSC, USDC на нескольких EVM-цепочках, BTC, LTC) система запрашивает обозреватели блокчейнов для подтверждения заявленного ID транзакции. Это носит лишь рекомендательный характер — значок статуса, видимый обеим сторонам, а не условие, обеспечиваемое контрактом.

Временные файлы при расследовании хранятся только в оперативной памяти (/dev/shm), никогда не сохраняются на диск.

Отчёт расследования структурируется в промпт для AI-медиатора (arbiter.rs). Поведенческие инструкции медиатора встроены в бинарный файл на этапе компиляции. Он вызывает OpenAI-совместимый эндпоинт (в продакшене: xiaomi/mimo-v2.5-pro через OpenRouter, temperature 0, строгий JSON-вывод) с полной расшифровкой переписки, доказательствами и заявлениями сторон. Ответ — структурированный вердикт: рекомендация (refund, release или split), обоснование и показатель уверенности.

Вердикт AI не является обязательным. Это рекомендация, которую видят обе стороны. Ни контракт в блокчейне, ни сервер не действуют на его основе автоматически.

Этап 4 — Принятие

Если обе стороны согласны с вердиктом AI или проигравшая сторона признаёт решение, разрешение становится локальной операцией в браузере. Сторона, признающая поражение, подписывает транзакцию release или refund прямо в браузере — ключи никогда не покидают устройство. В случае разделения обе стороны создают частичные подписи, которые сервер объединяет в транзакцию mutual.

Это оптимистичный путь — без участия арбитра, только комиссия за спор. Контракт также поддерживает ещё более простой случай: если всё окно спора истекает без подачи спора, таймаутный путь autoRelease выплачивает средства продавцу автоматически. Серверный вотчер транслирует эту транзакцию.

Этап 5 — Арбитраж от человека

Если ни одна сторона не принимает вердикт AI в течение настроенного окна (по умолчанию 24 часа), система передаёт дело арбитру-человеку. Арбитр получает доступ к специализированной веб-панели с двухфакторной аутентификацией (nginx basic auth плюс либо подпись Telegram initData, либо админский токен).

Панель показывает полную временную шкалу: оба заявления, расшифрованную переписку с закреплениями сообщений в блокчейне, вердикт AI с обоснованием, все доказательства расследования и статус OTC-верификации. Арбитр выносит обязательное решение, подписывая одну из трёх транзакций локально в браузере:

arbitrateToBuyer(arbSig)   → 100% покупателю
arbitrateToSeller(arbSig)  → 100% продавцу  
arbitrateSplit(arbSig)     → произвольная пропорция, каждый выход ≥ 1 KAS

Приватный ключ арбитра — оффлайн-строка из 64 hex-символов. Она попадает в браузер только на момент подписания и немедленно стирается. На сервере хранится только публичный ключ. Если ключ арбитра утерян, оспариваемые сделки разрешаются только через таймаут на уровне контракта — именно вокруг этого и построена вся система безопасности.

Как Kaspa Forge запускает это в продакшене

Весь стек разрешения споров работает внутри одного процесса на Rust/axum (порт 8795), который также обслуживает Kaspa Safe, маркетплейс и сделки с депозитами. Ключевые модули:

  • dispute_api.rs — HTTP-маршруты для claim, reveal, escalate, опроса состояния и сбора взаимных подписей.
  • arbiter.rs — AI-медиатор: реконструирует расшифровку переписки из раскрытых ключей, вызывает LLM, парсит структурированный JSON-вердикт.
  • media_probe.rs — движок расследования, обрабатывающий изображения, видео, документы, отслеживание доставки и кросс-чейновую OTC-верификацию.
  • watcher.rs::run_escrow — цикл опроса каждые 10 секунд, обрабатывающий автоматический выпуск после окон споров, таймаутные выплаты после дедлайнов арбитра и предупреждения обеим сторонам при 50% и 90% истечения окна.

У арбитра также есть Telegram Mini App-хаб в приватном боте для удобного управления делами с мобильных устройств. Все уведомления — Telegram, email и web push — рассылаются из единой функции отправки. Контракт эскроу компилируется из escrow.sil в WASM-ядро на этапе сборки; билдеры транзакций для всех десяти путей переиспользуются как браузером (через WASM), так и сервером (как rlib). Набор из 52 автотестов проверяет каждый путь расходования в виртуальной машине Kaspa.

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

Вердикт AI носит рекомендательный характер, а не обязательный. Это сознательное решение: LLM нельзя доверять финансовую окончательность. Компромисс — скорость: если обе стороны отклоняют рекомендацию AI, разрешение зависит от доступности человека.

Раскрытие ключа чата — всё или ничего. Как только сторона раскрывает свой ключ чата, медиатор видит всю историю переписки, а не только сообщения, относящиеся к спору. В текущем протоколе Kasia нет избирательного раскрытия. Стороны должны понимать, что подача спора означает полный доступ медиатора к расшифровке переписки.

Арбитр — единая точка доверия для оспариваемых сделок. Контракт ограничивает арбитра выплатами только покупателю или продавцу, но само суждение субъективно. AI-медиатор смягчает это, предоставляя структурированное обоснование, отображаемое рядом с доказательствами, — так аргументируемость становится проверяемой. Каждое решение логируется, включая то, согласился ли арбитр с AI.

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

Глубина расследования зависит от шаблона сделки. Сделки с товарами выигрывают от отслеживания доставки и анализа фотографий; OTC-сделки получают кросс-чейновую верификацию встречной стороны через 17 блокчейн-сетей. Сделки с услугами и цифровыми товарами больше полагаются на доказательства из чата, где текстовый анализ AI-медиатора выполняет основную работу.

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

Создать сейф

FAQ

Может ли AI-медиатор украсть мои средства?

Нет. AI-медиатор выносит лишь необязательную рекомендацию. У него нет подписного ключа. Средства перемещаются только по путям ковенанта в блокчейне — подпись покупателя, подпись продавца или ключ арбитра-человека — но никогда через AI.

Что произойдёт, если ни одна сторона не раскроет свой ключ чата?

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

Раскрытие ключа чата раскроет мой приватный ключ эскроу?

Нет. Ключ чата и ключ финансирования эскроу — это разные криптографические ключи. Сервер явно отклоняет ключи эскроу при раскрытии. Раскрытие ключа чата позволяет медиатору прочитать переписку, но не даёт доступа к UTXO эскроу.

Как Kaspa Escrow не допускает кражу средств арбитром?

Контракт в блокчейне escrow.sil жёстко задаёт: каждый путь расходования выплачивает только покупателю, продавцу или на адрес комиссии. Арбитр может подписать разделение между покупателем и продавцом — но не может перенаправить средства третьей стороне, включая самого себя.

В чём разница между вердиктом AI и решением арбитра-человека?

Вердикт AI носит рекомендательный характер — он предлагает решение на основе расшифровки чата и доказательств, но ни одна сторона не обязана его выполнять. Подписанная транзакция арбитра-человека — это единственное обязательное решение, обеспечиваемое контрактом в блокчейне.

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

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

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

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

Создать сейф