Короткий опис:
Задача — зібрати інформацію про транзакції на платформі Uniswap V3 (з thegraph.com). Проєкт складається з двох частин. На цьому етапі потрібна кошторис для першої частини – збору історичних даних. Необхідно створити два скрепери/парсери:
1. для збору історичних даних (запускається за потребою, для збору даних з користувачем вказаного тимчасового інтервалу) — вкажіть лише вартість цієї частини.
2. Парсер у реальному часі, який постійно збирає дані, що надходять у thegraph.com з мінімальною затримкою (ця частина буде зроблена пізніше, після успішного завершення першої частини)
На цьому етапі ми шукаємо людину, яка зможе створити скрепер/парсер історичних даних. Тому, будь ласка, повідомте свою кошторис і часові рамки лише для цієї частини. Дані збираємо через API, вони відкриті, тобто не захищені captcha та іншими методами. Якщо ця частина буде успішною, ми продовжимо роботу над парсером даних у реальному часі.
Для першої частини — збору історичних даних потрібно добре знати Python, MySQL, мати досвід створення парсерів, роботу з API.
Для другої частини проєкту потрібно вміти працювати з Redis, Docker, Google Pub/Sub та парсингом даних у реальному часі.
Система зберігає всі дані про транзакції у базі даних 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
• Пагінація. Реалізація рішення з пагінацією, якщо потрібно, для ефективного збору великого масиву даних
• Збереження даних у Redis. Виключення дублікатів (для другої частини проєкту)
• Інтеграція Google Pub/Sub. Відправка (push) кожної вхідної транзакції у два різні pubsub топіки для подальшої обробки. А також отримання вихідних даних і збереження їх назад у Redis та базу даних. (для другої частини проєкту)
• Розгортання застосунку/скрипта за допомогою Docker. Переконатися, що Dockerfile реалізовані без помилок, завантаження, розгортання і контроль працездатності контейнера у реальному часі.
Необхідні навички
• Експерт з 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 (тільки другий етап проєкту)
До прикладу, додатковий файл англійською вище.
Якщо вас цікавий проєкт — надсилайте ціну, коли можете почати роботу, скільки днів займе реалізація першої частини проєкту. Якщо потрібно щось уточнити для підрахунку — надсилайте конкретні питання.