Статья 7

В этой статье объясняется техническая реализация многопользовательской системы SafeClaw — как работает изоляция пользователей, как осуществляется контроль доступа и как маршрутизируются три типа учетных записей Binance.



━━━ ОСНОВНОЙ ВЫЗОВ ━━━

Однопользовательский ИИ-агент относительно прост в защите. Публичный многопользовательский агент, обрабатывающий реальные финансовые API-ключи, является принципиально другой проблемой.

Требования:
1. API-ключ Пользователя A должен быть невидим для Пользователя B
2. История торгов Пользователя A должна быть невидима для Пользователя B
3. План DCA Пользователя A не должен влиять на Пользователя B
4. Скомпрометированная сессия для Пользователя A не должна подставлять Пользователя B
5. Бот должен направлять API вызовы каждого пользователя в правильную среду Binance

SafeClaw решает все пять.



━━━ АРХИТЕКТУРА ИЗОЛЯЦИИ СЕССИЙ ━━━

Система сессий OpenClaw настроена с:
dmScope: "per-channel-peer"

Это означает: каждый уникальный идентификатор пользователя Telegram получает свой собственный изолированный контекст сессии.

Технически, что это означает:
• Сообщения каждого пользователя обрабатываются в отдельном пространстве имен сессии
• Данные сессии (хранятся в sessions.json) индексируются по идентификатору пользователя Telegram
• Сессия ни одного пользователя не может читать данные другой сессии
• Контекст AI агента для каждого пользователя содержит только данные этого пользователя

Данные сессии, хранящиеся по пользователю:
• binance_account_type (live/demo/testnet)
• binance_live_key, binance_live_secret
• binance_demo_key, binance_demo_secret
• binance_testnet_key, binance_testnet_secret
• binance_square_key
• валюта, методы оплаты, профиль риска
• dca_asset, dca_amount, dca_interval, dca_history
• simulation_history, evaluation_scores

Ни одно из этих данных недоступно для других пользователей.



━━━ СИСТЕМА УПРАВЛЕНИЯ ДОСТУПОМ ТРЕХ АККАУНТОВ ━━━

SafeClaw поддерживает три различных типа аккаунтов Binance на пользователя. Навык api-router отвечает за маршрутизацию:

РЕАЛЬНЫЙ АККАУНТ (Производство)
Команда: /updatekey [КЛЮЧ] [СЕКРЕТ]
Эндпоинт валидации: https://api.binance.com/api/v3/account
Эндпоинт для торговли: https://api.binance.com
Эндпоинт для фьючерсов: https://fapi.binance.com
Сценарий использования: Живое DCA, мониторинг реального дохода
Безопасность: Разрешение на вывод = мгновенное отклонение
IP ограничение: Пользователям сообщается о необходимости ограничить доступ к IP сервера

ДЕМО АККАУНТ (Практика)
Команда: /updatekey-demo [КЛЮЧ] [СЕКРЕТ]
Эндпоинт валидации: https://demo-api.binance.com/api/v3/account
Эндпоинт для торговли: https://demo-api.binance.com
Эндпоинт для фьючерсов: https://demo-fapi.binance.com
Сценарий использования: Симуляция Академии, тестирование стратегии
Баланс: 5,000 USDT предоставлено Binance
Безопасность: Нет реальных средств, нет риска вывода

TESTNET (Разработка)
Команда: /updatekey-testnet [КЛЮЧ] [СЕКРЕТ]
Эндпоинт валидации: https://testnet.binance.vision/api/v3/account
Эндпоинт для торговли: https://testnet.binance.vision
Сценарий использования: Разработчики, строящие на Binance, тестирование API
Баланс: Тестовые средства из testnet.binance.vision



━━━ ПРОЦЕСС ВАЛИДАЦИИ API КЛЮЧА ━━━

Каждый поданный ключ проходит этот точный процесс:

1. Валидация формата
Длина ключа: должна быть 64 символа
Набор символов: только буквенно-цифровые
Если недействительный: "Неверный формат ключа. Пожалуйста, проверьте и повторите попытку."

2. Живой API вызов
GET {correct_endpoint}/api/v3/account
С подписью времени HMAC SHA256
Таймаут: 10 секунд

3. Проверка разрешений
Разобрать массив .permissions из ответа
Если "WITHDRAWALS" присутствует → отклонить
Если "TRANSFER" присутствует → отклонить
Если "SPOT" отсутствует → предупредить пользователя (может не иметь возможности торговать)
Если canTrade = false → предупредить пользователя

4. Хранение
При успехе: сохранено в памяти сессии пользователя
Флаг типа аккаунта установлен: "live" / "demo" / "testnet"
Пользователь уведомлен с меткой аккаунта

5. Запрос безопасности
"✅ [Тип аккаунта] подключен."
"⚠️ Пожалуйста, УДАЛИТЕ ваше сообщение /updatekey из чата сейчас."



━━━ ЛОГИКА МАРШРУТИЗАЦИИ ━━━

Каждый навык, который выполняет вызов API Binance, читает из навыка api-router:

api-router читает: binance_account_type из сессии
Возвращает: BASE_URL, FUTURES_URL, USER_KEY, USER_SECRET, ACCOUNT_LABEL

Навыки, которые используют api-router:
• smartdca (каждое выполнение DCA)
• safeclaw-academy (каждая симуляция)
• yield-monitor (каждый запрос Earn)
• profile (отображение баланса)
• guardianclaw (при выполнении одобренных сделок)

Навыки, которым НЕ нужен api-router (публичные API):
• p2p-safefinder (P2P API является публичным)
• briefing (данные о ценах являются публичными)
• square-content-engine (новости/тренды являются публичными)



━━━ ЧТО ПРОИЗОЙДЕТ, ЕСЛИ КЛЮЧ НЕ УСТАНОВЛЕН ━━━

Если пользователь пытается запустить /dca run или /simulate без настроенного ключа:

"⚠️ Нет подключенного аккаунта Binance.

Чтобы использовать эту функцию:
• /updatekey — Реальный аккаунт Binance
• /updatekey-demo — Практический аккаунт (РЕКОМЕНДУЕТСЯ)
• /updatekey-testnet — Тестовая сетка для разработчиков

Поиск P2P и брифинги рынка работают без API ключа."

Бот никогда не возвращается к учетным данным уровня сервера. Если ключ пользователя не настроен, функция недоступна для этого пользователя.



━━━ ОБРАБОТКА СОВПАДАЮЩИХ ПОЛЬЗОВАТЕЛЕЙ ━━━

Конфигурация OpenClaw:
agents.defaults.maxConcurrent: 4
agents.defaults.subagents.maxConcurrent: 8

Это означает:
• До 4 основных исполнений агента работают параллельно
• До 8 операций подагента на каждого главного агента
• Дополнительные запросы ставятся в очередь — без потерянных сообщений

На t3.small (2 vCPU, 2GB RAM) это удобно обрабатывает десятки параллельных пользователей. Основное узкое место — ограничения скорости API OpenRouter, а не ресурсы сервера.



━━━ РАСПРОСТРАНЕНИЕ В БУДУЩЕМ ━━━

Масштабирование нескольких экземпляров:
• Хранилище сессий Redis позволяет нескольким экземплярам OpenClaw делиться состоянием
• Балансировщик нагрузки распределяет трафик вебхуков Telegram
• Каждый экземпляр обрабатывает подмножество пользователей с идентичными возможностями

Выбор модели для каждого пользователя:
• Премиум-пользователи могут направлять к Claude Sonnet для большей точности
• Бесплатный уровень направляет к бесплатным резервным моделям
• Выбор модели хранится в сессии пользователя

Уровни пользователей:
• Бесплатно: P2P, Брифинг, Обучение
• Стандартный: + DCA, Защита, Академия
• Премиум: + Доход, Контентный движок, Приоритетная маршрутизация

Быстрые ссылки:

Статья 1 Статья 2 Статья 3 Статья 4 Статья 5 Статья 6 Статья 8

Источник: https://github.com/bnbnepalbinanceangel/SafeClaw

#AIBinance #SafeClaw #MultiUser #AccessControl #OpenClaw