Требуется разработать микросервис (желательно на Laravel, так как существующие сервисы уже на нем реализованы) позволяющий создавать и управлять криптоботами ‣ пользователям нашего проекта

Passivbot - это бот для торговли криптовалютами, написанный на Python и предназначенный для того, чтобы требовать минимального вмешательства пользователя. Замечено, что цены на рынке будут колебаться вверх и вниз, создавая возможности для извлечения прибыли. Цель бота - автоматизировать извлечение прибыли.

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

Поскольку поведение passivbot в реальном времени детерминировано, оно может быть смоделировано на исторических ценовых данных с использованием включенного обратного теста. Также включен оптимизатор, который находит лучшие конфигурации, повторяя тысячи обратных тестов с различными кандидатами.

Стратегия интегрирована - для запуска боту требуется только предопределенная конфигурация.

Разработчики бота также собрали docker-образ приложения, что для нас является ключевым.

На текущий момент имеются несколько микросервисов: OAuth Provider, OAuth Proxy и App Service. Также о сервисах написано тут

BitBot.postman_collection.json

OAuth Provider - интернал сервис, поставщик данных о пользователе. Работает с учетными записями и токен-парами для доступа к сервисам.

OAuth Proxy - экстернал сервис, позволяющий контроллировать доступ к эндпойнтам микросервисов посредством проверки легитимности представленного токена, а также установкой требуемого уровня доступа для области применения (scope). На каждый эндпойнт ставится нужный scope, либо не ставится, если он открыт для неавторизованных пользователей. Для микросервисов прокси передает X-User заголовок в котором содержится информация о токене: время жизни, id-пользователя и т.п - нас интересует id-пользователя что преимущественно.

App Service - сервис, поставщик данных о кошельках пользователя. Позволяет вносить кошельки, удалять, получать. Получать данные по аналитике и т.д.

Основная логика:

  1. При регистрации пользователя, для него в docker (docker-dind \ docker-in-docker) создается контейнер с passivbot.
  2. Запросы отправляемые пользователем должны направляться в целевой контейнер с ботом, работать с его конфигурацией и т.д
  3. Также требуется получение данных-состояния бота, статистику и т.д - все что может отдать passivbot

По итогу разрабатываемый сервис должен уметь:

  1. Создавать ботов для внесенных в AppService кошельков