Краткое описание:
Задача — собрать информацию о транзакциях на платформе Uniswap V3 (с thegraph.com). Проект из двух частей. В данном этапе нужна смета для первой части – сбор исторических данных. Необходимо создать два скрепера/парсера:
1. для сбора исторических данных (запускается по требованию, для сбора данных с пользователем указанного временного интервала) — укажите только стоимость этой части.
2. Real-time парсер, который постоянно собирает данные, поступающие в thegraph.com с минимальной задержкой (эта часть будет делаться позже, после успешного завершения первой части)
На данном этапе мы ищем человека, который сможет создать скрепер/парсер исторических данных. Поэтому, пожалуйста, сообщите свою смету и временные рамки только для этой части. Данные собираем через API, данные открыты, т.е. не защищены captcha и другими методами. Если эта часть будет успешной, мы, продолжим работу над парсером real-time данных.
Для первой части - сбора исторических данных надо хорошо знать Python, MySQL, иметь опыт создания парсеров, работу с API.
Для второй части проекта, надо уметь работать с Redis, Docker, Google Pub/Sub и парсингом данных real-time.
Система хранит все данные о транзакциях в базе данных MySQL, запускает фоновые задачи с помощью заданий cron и поддерживается в рабочем состоянии и контролируется с помощью PM2. Решение полностью основано на бэкэнде без фронтэнда, развернуто на сервере VPS.
Мы ищем опытного и надежного инженера по данным / разработчика бэкенда для создания надежного и быстрого скрипта сбора данных, который собирает, анализирует и сохраняет данные с Uniswap V3. Основное требование — сбор транзакций, хранение структурированных данных в кэше Redis и их потоковая передача в систему обмена сообщениями Google Pub/Sub для маршрутизации каждой входящей транзакции в нашу модель машинного обучения. Более того, данные также будут храниться в базе данных.
Объем проекта
• Сбор данных на уровне транзакций с помощью API Graph из Uniswap V3 Subgraph на Arbitrum
https://thegraph.com/explorer/subgraphs/5zvR82QoaXYFyDEKLZ9t6v9adgnptxYpKpSbxtgVENFV?view=Query&chain=arbitrum-one
• Pagination. Реализация решения по пагинации, если требуется, для эффективного сбора большого массива данных
• Сохранение данных в Redis. Исключение дубликатов (для второй части проекта)
• Интеграция Google Pub/Sub. Отправка (push) каждой входящей транзакции в две разные pubsub topics для дальнейшей обработки. А также получение выходных данных и сохранение выходных данных обратно в Redis и базе данных. (для второй части проекта)
• Развертывание приложения/скрипта с помощью Docker. Убедиться что dockerfiles реализованы без ошибок, загрузка, развертывания и контроль работоспособности контейнера в режиме реального времени.
Требуемые навыки
• Эксперт по Python: уверенное владение asyncio, быстрый парсинг данных, оптимизированные network calls. Плюс, если у вас есть опыт пакетной обработки (batch processing).
• GraphQL: опыт запросов к API Graph или любому Web3 subgraph
• Redis: хранилище данных в реальном времени с ключами и наборами отсортированными по оценкам (потребуется только на втором этапе проекта)
• Google Pub/Sub: публикация событий из полученных данных (потребуется только на втором этапе проекта)
• Docker: контейнеризация решения с ясной конфигурацией (потребуется только на втором этапе проекта)
• Разработка баз данных: оптимизация запросов, планирование схем (Redis и нижестоящие БД) (потребуется только на втором этапе проекта)
Технологический стек, который вы будете использовать
• Python 3.x (aiohttp/requests + graphql libs)
• Graph API / GraphQL (Uniswap V3 Arbitrum)
• База данных Mysql
• Redis (Sorted Sets, Streams, Pipelines) (только второй шаг проекта)
• Google Cloud Pub/Sub (только второй шаг проекта)
• Docker (только второй шаг проекта)
Прилагается файл на английском вышеизложенного текста.
Если интересует проект - присылайте цену, когда можете начать работу, сколько дней работа займет (для реализации первой части проекта). Если для подсчета надо что-то уточнить - присылайте конкретные вопросы.