Как получить трейдерскую аналитику по криптокошельку: данные из блокчейна и 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-бот, выполните следующие шаги:
- Сбор транзакций: Используйте API Covalent (например,
/v1/{chainId}/address/{address}/transactions_v2/) для получения всех операций за нужный период. Укажите параметрыfromBlockиtoBlockдля фильтрации по времени. - Фильтрация токенов: Извлеките только операции типа
token_transfersилиdex_swaps(в зависимости от сервиса). Для каждой записи получите: адрес токена, количество, цену в USD (многие API возвращают её автоматически), время. - Агрегация данных: Сгруппируйте по токенам, подсчитайте количество покупок и продаж, сумму объёмов. Для цены используйте средневзвешенное значение или точную цену из каждой транзакции.
- Формирование таблицы: Загрузите данные в Pandas DataFrame и экспортируйте в Excel с помощью
to_excel(). Добавьте столбцы: Токен, Куплено (кол-во), Продано (кол-во), Средняя цена покупки ($), Средняя цена продажи ($), Количество сделок, Время первой/последней транзакции.
Заключение
Для получения трейдерской аналитики по кошельку без жёстких ограничений рекомендуется комбинировать web3.py (для кастомных сценариев) и готовые API (Covalent, DeBank, Helius). Начните с Covalent - он предоставляет цены в долларах «из коробки» и позволяет загружать до 100 000 транзакций в день. Если требуется работа с Solana, используйте Helius или QuickNode. Избегайте сервисов с лимитом в 100 записей (как DexGuru) без пагинации, чтобы не потерять данные.