Статья 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
