Как стать автором
Поиск
Написать публикацию
Обновить

Как мы строим real-time data-пайплайны для анонимных крипто-свапалок: опыт на примере risetocrypto

Уровень сложностиСложный
Время на прочтение5 мин
Количество просмотров924

В мире криптовалют анонимность и безопасность являются ключевыми элементами. Когда речь идет о крипто-свапалках, эффективность обработки данных в реальном времени играет решающую роль для обеспечения высокого качества сервиса. В этой статье расскажем, как мы реализовали масштабируемую архитектуру для обработки данных на платформе risetocrypto с использованием передовых технологий.

Какие данные обрабатываются в крипто-свапалке?

Основными типами данных, которые мы обрабатываем в нашей крипто-свапалке, являются:

  1. Ончейн-транзакции
    Мы следим за транзакциями, происходящими в различных блокчейнах, таких как Ethereum, Binance Smart Chain (BSC), Tron и других популярных платформах.
    Важные параметры:

    • Transaction hash (уникальный идентификатор транзакции)

    • Block number (номер блока, в котором произошла транзакция)

    • From / To addresses (адреса отправителя и получателя)

    • Amount / Token (сумма и тип токена)

    • Gas used / Gas price (затраты на газ и его цена)

  2. Метаданные свапов
    Дополнительно к транзакционным данным мы сохраняем метаданные свапов:

    • Время свапа (timestamp)

    • Объем свапа

    • Адреса вовлеченные в свап (особенно для анонимных транзакций)

    • Типы токенов и их пары (например, USDT/ETH или ETH/BTC)

  3. Потоки WebSocket / REST от блокчейн-ноды
    Для получения обновлений в реальном времени мы используем WebSocket и REST API от блокчейн-нод. Эти каналы данных обеспечивают нас информацией о новых транзакциях, блоках и событиях, происходящих на блокчейне. Мы подписываемся на:

    • New block notifications (уведомления о новых блоках)

    • New transaction notifications (уведомления о новых транзакциях)

    • Token transfer events (события перевода токенов)

Эти потоки позволяют нам получать свежую информацию в реальном времени, что критично для работы крипто-свапалок.


Как обрабатываются данные в real-time?

  1. Kafka / Pulsar для ingestion
    Для того чтобы эффективно и без задержек загружать данные, мы используем Apache Kafka и Apache Pulsar. Эти системы позволяют нам:

    • Работать с потоками данных в реальном времени.

    • Масштабировать систему по мере роста объема данных.

    • Гарантировать надежную доставку сообщений с минимальными задержками.

Kafka и Pulsar обеспечивают нас стабильными очередями, что особенно важно для обработки огромных потоков данных, поступающих с блокчейн-нод. Мы использовали Kafka Streams для обработки потоков данных в реальном времени, что позволило ускорить и упростить трансформацию и агрегацию данных.

  1. Apache Flink / Spark Streaming для трансформаций
    После того как данные поступают в нашу систему, их нужно трансформировать для анализа. Мы применяем Apache Flink и Apache Spark Streaming для обработки данных в реальном времени:

    • Агрегация данных: мы собираем информацию о токенах и их парах, вычисляем общие объемы торгов, среднюю цену и ликвидность.

    • Фильтрация: отсекаем неважные транзакции или данные с ошибками.

    • Применение бизнес-логики: например, вычисляем slippage, отслеживаем аномальные транзакции.

В Flink мы пишем сложные пользовательские функции (UDF), которые применяются к потоку данных для расчета необходимых метрик.

  1. ClickHouse / Druid / BigQuery как витрина аналитики
    Для хранения и анализа данных мы используем ClickHouse, Druid и BigQuery. Эти системы позволяют быстро обрабатывать и анализировать огромные объемы данных, предоставляя нам мощные инструменты для создания витрин данных и формирования отчетности по состоянию на текущий момент.

С этими хранилищами мы обеспечиваем высокую скорость обработки запросов, что важно для мониторинга системы и анализа поведения пользователей.


Как используется big data для:

  1. Выявления подозрительных транзакций

    Мы используем машинное обучение и анализ больших данных для выявления аномальных или подозрительных транзакций. Применяем следующие подходы:

    • Анализ адресов: вычисляем, какой процент транзакций с определенного адреса является аномальным (например, если адрес регулярно участвует в торгах с нестандартными объемами).

    • Частота транзакций: анализируем частоту транзакций с разных адресов и создаем «нормальные» шаблоны активности, чтобы выявлять аномалии.

    • Корреляции между адресами: создаем графы связей между адресами и ищем аномальные взаимосвязи, которые могут указывать на мошеннические схемы.

  2. Мониторинг ликвидности и slippage

    Мониторинг ликвидности проводится с использованием данных о текущем объеме торгов на платформе и в блокчейне. Мы отслеживаем:

    • Изменение ликвидности: если ликвидность начинает падать, это может указывать на риски для платформы.

    • Slippage: с помощью алгоритмов мы отслеживаем отклонения между ожидаемой и фактической ценой исполнения ордеров. Это критично для обеспечения стабильных торговых условий.

  3. Предсказания скачков объемов или бот-активности

    Для предсказания резких скачков объемов мы строим прогнозные модели с использованием исторических данных. Эти модели помогают нам:

    • Предсказать возможные изменения объема торгов на платформе, что позволяет заранее подготовить систему.

    • Обнаружить активность торговых ботов. Мы анализируем паттерны, которые характерны для ботов, такие как высокочастотные транзакции, большие объемы и определенные временные интервалы.


Архитектура пайплайна обработки данных:

Для лучшего понимания, как именно мы строим пайплайн, представим его в виде схемы:

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

Теги:
Хабы:
+1
Комментарии0

Публикации

Ближайшие события