Как получить трейдерскую аналитику по криптокошельку: данные из блокчейна и API

    Сбор аналитики по криптовалютному кошельку - задача, с которой сталкиваются трейдеры и разработчики. Необходимо получить данные о токенах, суммах покупки/продажи, ценах в долларах на момент сделки, количестве операций и времени транзакций. В этой статье разберём, как решить эту задачу с помощью web3.py, DEX агрегаторов и специализированных сервисов, избегая жёстких ограничений.

    Основные проблемы при сборе данных из блокчейна

    При попытке получить аналитику напрямую из сетей Solana и Ethereum через web3.py возникают несколько сложностей:

    • Разные ABI токенов: Стандартные ERC-20 (Ethereum) и SPL (Solana) токены имеют различные контракты, что усложняет парсинг типов транзакций (Transfer, Swap и др.).
    • Цена в долларах: Блокчейн хранит только данные о количестве токенов, но не их стоимость в фиате. Для получения цены на момент транзакции необходимо использовать внешние API (например, CoinGecko, Binance).
    • Ограничения API: Многие DEX агрегаторы (как DexGuru) лимитируют количество транзакций за запрос (например, до 100), что недостаточно для анализа за месяц или два.

    Методы получения данных: web3.py vs DEX API

    Использование web3.py для прямого доступа к блокчейну

    Библиотека web3.py позволяет взаимодействовать с узлами Ethereum и Solana. Для получения данных о транзакциях кошелька:

    • Для Ethereum: Получите список транзакций по адресу через eth.get_transaction_count или используйте сервисы вроде Etherscan API для пагинации. Затем декодируйте входные данные (input data) с помощью ABI контракта токена, чтобы определить тип операции (Transfer, Swap).
    • Для Solana: Используйте getSignaturesForAddress для получения сигнатур транзакций, затем getTransaction для деталей. Анализируйте инструкции (instructions) внутри транзакции, чтобы выделить обмены через DEX (например, Jupiter, Raydium).
    • Цена в долларах: После получения количества токенов и времени транзакции, отправьте запрос к историческим данным CoinGecko API (/coins/{id}/history) или Binance API для получения цены на момент сделки.

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

    Использование DEX агрегаторов и специализированных API

    Готовые API, такие как DexGuru, DeBank, или Covalent, предоставляют структурированные данные о кошельках. Однако, как указано в исходном вопросе, у DexGuru есть ограничение в 100 транзакций на запрос. Для обхода лимитов:

    • Пагинация: Используйте параметры offset и limit в запросах, чтобы загружать данные по частям. Например, для DexGuru: /v1/wallet/{address}/transactions?limit=100&offset=0, затем offset=100 и т.д.
    • Альтернативные сервисы: Covalent (covalent.xyz) предоставляет исторические данные с лимитом 100 000 запросов в день на бесплатном тарифе, включая цены токенов в USD на момент транзакции. DeBank (debank.com) также даёт аналитику по кошелькам, но с ограничениями по частоте запросов.
    • Solana-specific: Для Solana используйте Helius или QuickNode с поддержкой WebSocket и исторических данных. Они позволяют получать детализированные транзакции с минимальными ограничениями при платной подписке.

    Практические рекомендации по формированию таблицы аналитики

    Чтобы воспроизвести таблицу, которую генерирует Telegram-бот, выполните следующие шаги:

    1. Сбор транзакций: Используйте API Covalent (например, /v1/{chainId}/address/{address}/transactions_v2/) для получения всех операций за нужный период. Укажите параметры fromBlock и toBlock для фильтрации по времени.
    2. Фильтрация токенов: Извлеките только операции типа token_transfers или dex_swaps (в зависимости от сервиса). Для каждой записи получите: адрес токена, количество, цену в USD (многие API возвращают её автоматически), время.
    3. Агрегация данных: Сгруппируйте по токенам, подсчитайте количество покупок и продаж, сумму объёмов. Для цены используйте средневзвешенное значение или точную цену из каждой транзакции.
    4. Формирование таблицы: Загрузите данные в Pandas DataFrame и экспортируйте в Excel с помощью to_excel(). Добавьте столбцы: Токен, Куплено (кол-во), Продано (кол-во), Средняя цена покупки ($), Средняя цена продажи ($), Количество сделок, Время первой/последней транзакции.

    Заключение

    Для получения трейдерской аналитики по кошельку без жёстких ограничений рекомендуется комбинировать web3.py (для кастомных сценариев) и готовые API (Covalent, DeBank, Helius). Начните с Covalent - он предоставляет цены в долларах «из коробки» и позволяет загружать до 100 000 транзакций в день. Если требуется работа с Solana, используйте Helius или QuickNode. Избегайте сервисов с лимитом в 100 записей (как DexGuru) без пагинации, чтобы не потерять данные.

    Часто задаваемые вопросы