В мире криптовалют анонимность и безопасность являются ключевыми элементами. Когда речь идет о крипто-свапалках, эффективность обработки данных в реальном времени играет решающую роль для обеспечения высокого качества сервиса. В этой статье расскажем, как мы реализовали масштабируемую архитектуру для обработки данных на платформе risetocrypto с использованием передовых технологий.
Какие данные обрабатываются в крипто-свапалке?
Основными типами данных, которые мы обрабатываем в нашей крипто-свапалке, являются:
Ончейн-транзакции
Мы следим за транзакциями, происходящими в различных блокчейнах, таких как Ethereum, Binance Smart Chain (BSC), Tron и других популярных платформах.
Важные параметры:Transaction hash (уникальный идентификатор транзакции)
Block number (номер блока, в котором произошла транзакция)
From / To addresses (адреса отправителя и получателя)
Amount / Token (сумма и тип токена)
Gas used / Gas price (затраты на газ и его цена)
Метаданные свапов
Дополнительно к транзакционным данным мы сохраняем метаданные свапов:Время свапа (timestamp)
Объем свапа
Адреса вовлеченные в свап (особенно для анонимных транзакций)
Типы токенов и их пары (например, USDT/ETH или ETH/BTC)
Потоки WebSocket / REST от блокчейн-ноды
Для получения обновлений в реальном времени мы используем WebSocket и REST API от блокчейн-нод. Эти каналы данных обеспечивают нас информацией о новых транзакциях, блоках и событиях, происходящих на блокчейне. Мы подписываемся на:New block notifications (уведомления о новых блоках)
New transaction notifications (уведомления о новых транзакциях)
Token transfer events (события перевода токенов)
Эти потоки позволяют нам получать свежую информацию в реальном времени, что критично для работы крипто-свапалок.
Как обрабатываются данные в real-time?
Kafka / Pulsar для ingestion
Для того чтобы эффективно и без задержек загружать данные, мы используем Apache Kafka и Apache Pulsar. Эти системы позволяют нам:Работать с потоками данных в реальном времени.
Масштабировать систему по мере роста объема данных.
Гарантировать надежную доставку сообщений с минимальными задержками.
Kafka и Pulsar обеспечивают нас стабильными очередями, что особенно важно для обработки огромных потоков данных, поступающих с блокчейн-нод. Мы использовали Kafka Streams для обработки потоков данных в реальном времени, что позволило ускорить и упростить трансформацию и агрегацию данных.
Apache Flink / Spark Streaming для трансформаций
После того как данные поступают в нашу систему, их нужно трансформировать для анализа. Мы применяем Apache Flink и Apache Spark Streaming для обработки данных в реальном времени:Агрегация данных: мы собираем информацию о токенах и их парах, вычисляем общие объемы торгов, среднюю цену и ликвидность.
Фильтрация: отсекаем неважные транзакции или данные с ошибками.
Применение бизнес-логики: например, вычисляем slippage, отслеживаем аномальные транзакции.
В Flink мы пишем сложные пользовательские функции (UDF), которые применяются к потоку данных для расчета необходимых метрик.
ClickHouse / Druid / BigQuery как витрина аналитики
Для хранения и анализа данных мы используем ClickHouse, Druid и BigQuery. Эти системы позволяют быстро обрабатывать и анализировать огромные объемы данных, предоставляя нам мощные инструменты для создания витрин данных и формирования отчетности по состоянию на текущий момент.
С этими хранилищами мы обеспечиваем высокую скорость обработки запросов, что важно для мониторинга системы и анализа поведения пользователей.
Как используется big data для:
Выявления подозрительных транзакций
Мы используем машинное обучение и анализ больших данных для выявления аномальных или подозрительных транзакций. Применяем следующие подходы:Анализ адресов: вычисляем, какой процент транзакций с определенного адреса является аномальным (например, если адрес регулярно участвует в торгах с нестандартными объемами).
Частота транзакций: анализируем частоту транзакций с разных адресов и создаем «нормальные» шаблоны активности, чтобы выявлять аномалии.
Корреляции между адресами: создаем графы связей между адресами и ищем аномальные взаимосвязи, которые могут указывать на мошеннические схемы.
Мониторинг ликвидности и slippage
Мониторинг ликвидности проводится с использованием данных о текущем объеме торгов на платформе и в блокчейне. Мы отслеживаем:Изменение ликвидности: если ликвидность начинает падать, это может указывать на риски для платформы.
Slippage: с помощью алгоритмов мы отслеживаем отклонения между ожидаемой и фактической ценой исполнения ордеров. Это критично для обеспечения стабильных торговых условий.
Предсказания скачков объемов или бот-активности
Для предсказания резких скачков объемов мы строим прогнозные модели с использованием исторических данных. Эти модели помогают нам:Предсказать возможные изменения объема торгов на платформе, что позволяет заранее подготовить систему.
Обнаружить активность торговых ботов. Мы анализируем паттерны, которые характерны для ботов, такие как высокочастотные транзакции, большие объемы и определенные временные интервалы.
Архитектура пайплайна обработки данных:
Для лучшего понимания, как именно мы строим пайплайн, представим его в виде схемы:
plaintextКопировать+-------------------+ +-----------------+ +-------------------------+
| Блокчейн-нод | | Потоки WebSocket| | Потоки REST API |
| (Ethereum, BSC, | --------> | / REST API | ---------> | (Новые транзакции и |
| Tron и др.) | | (Получение данных о | | события с блокчейна) |
+-------------------+ | блоках и транзакциях) | +-------------------------+
+-----------------+
|
v
+-----------------+
| Kafka / Pulsar |
| (Ingestion, |
| доставка данных)|
+-----------------+
|
v
+-------------------------------+
| Apache Flink / Spark |
| (Обработка данных в реальном |
| времени, трансформация) |
+-------------------------------+
|
v
+------------------------------------------+
| ClickHouse / Druid / BigQuery |
| (Хранение, анализ данных, аналитика) |
+------------------------------------------+
|
v
+---------------------------------------+
| Обнаружение аномалий и анализ |
| (Подозрительные транзакции, |
| мониторинг ликвидности, etc.) |
+---------------------------------------+
Копировать
+-------------------+ +-----------------+ +-------------------------+ | Блокчейн-нод | | Потоки WebSocket| | Потоки REST API | | (Ethereum, BSC, | --------> | / REST API | ---------> | (Новые транзакции и | | Tron и др.) | | (Получение данных о | | события с блокчейна) | +-------------------+ | блоках и транзакциях) | +-------------------------+ +-----------------+ | v +-----------------+ | Kafka / Pulsar | | (Ingestion, | | доставка данных)| +-----------------+ | v +-------------------------------+ | Apache Flink / Spark | | (Обработка данных в реальном | | времени, трансформация) | +-------------------------------+ | v +------------------------------------------+ | ClickHouse / Druid / BigQuery | | (Хранение, анализ данных, аналитика) | +------------------------------------------+ | v +---------------------------------------+ | Обнаружение аномалий и анализ | | (Подозрительные транзакции, | | мониторинг ликвидности, etc.) | +---------------------------------------+
Таблица для мониторинга и анализа данных:
Параметр | Описание | Применение |
---|---|---|
Transaction Hash | Уникальный идентификатор транзакции | Отслеживание каждой транзакции и ее подтверждение в блоке |
Block Number | Номер блока | Понимание, в каком блоке произошло событие |
From/To Address | Адрес отправителя/получателя | Важен для анализа активности на конкретных адресах |
Amount/Token | Сумма и тип токена | Помогает анализировать объем торгов и типы используемых токенов |
Timestamp | Время свапа | Необходим для временной аналитики и мониторинга активности |
Liquidity / Slippage | Информация о ликвидности и отклонении от ожидаемой цены | Помогает отслеживать стабильность рынка и наличие рисков |
Таким образом, для построения эффективных real-time data-пайплайнов в крипто-свапалках мы применяем самые современные инструменты и подходы. Архитектура на основе Kafka, Flink, ClickHouse и других технологий позволяет нам обрабатывать данные с минимальными задержками, обеспечивая безопасность и стабильность на платформе.