В мире криптовалют анонимность и безопасность являются ключевыми элементами. Когда речь идет о крипто-свапалках, эффективность обработки данных в реальном времени играет решающую роль для обеспечения высокого качества сервиса. В этой статье расскажем, как мы реализовали масштабируемую архитектуру для обработки данных на платформе 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 и других технологий позволяет нам обрабатывать данные с минимальными задержками, обеспечивая безопасность и стабильность на платформе.
Автор: victor_shtal


