Блокчейн и Apache Kafka: versus или вместе

Автор Категория ,
Блокчейн и Apache Kafka: versus или вместе

Сегодня рассмотрим, можно ли построить на Apache Kafka быстрый и надежный блокчейн для криптовалюты, NFT или других проектов, где нужны технологии распределенного реестра. Что общего у топика Apache Kafka с blockchain-цепочкой, чем они отличаются, возможно ли совместить их и для каких случаях. А в качестве примеров перечислим несколько реальных проектов.

Еще раз о том, что такое блокчейн и зачем это нужно

Блокчейн (blockchain) представляет собой реализацию технологии распределенного реестра (Distributed Ledger Technology, DLT) – децентрализованную базу данных или распределенный журнал записей, управляемый разными участниками без центрального регулятора. Эта общая база данных или журнал записей используются совместно с помощью блоков, образующих цепочку. Таким образом, блокчейн — это растущий список записей (блоков), связанных с помощью криптографии. Каждый блок содержит криптографический хэш предыдущего блока, отметку времени и данные транзакции. Хеш как специальный тип криптографической подписи гарантирует, что зашифрованная информация не подвергалась изменениям и что ею нельзя манипулировать.

Блокчейн как цепочка хэшированных блоков может быть общедоступным, как криптовалюта Bitcoin, или контролироваться группой компаний (консорциумом) с помощью различных алгоритмов консенсуса типа Proof-of-Work (POW), Proof-of-Stake (POS) или системы голосования.

Блокчейн использует глобальный консенсус для всех узлов. А DLT может создавать консенсус без необходимости проверки всей цепочки блоков. Таким образом, блокчейн может выступать в качестве технологии безопасной и защищенной от несанкционированного доступа обработки данных с помощью в следующих отраслях:

  • управление цепочками поставок (Supply Chain Management, SCM) в производстве, транспорте, логистике и розничной торговле, включая расчеты по транзакциям, отслеживание социальной ответственности, точную информацию о затратах, доставке и местонахождении товаров, автоматизированные закупки и планирование с использованием ERP- и CRM-систем, обеспечение соблюдения партнерских договоров, безопасность пищевых продуктов.
  • Здравоохранение – управление данными пациентов (особенно контроль доступа), управление и использование данных академических исследований, предотвращение нарушений соответствия, сокращение человеческих ошибок, сквозная актуальная информация о пациентах, безопасное управление идентификацией.
  • телекоммуникации – блокчейн-решение для заключения соглашений о скидках на роуминг с разными операторами связи;
  • финансовые услуги – мгновенные международные платежи с помощью криптовалют с отслеживанием всей цепочки транзакций и мониторингом происхождения данных.

Некоторые примеры из этих и других доменных областей мы рассматривали здесь.

Однако, в реальном мире применение блокчейн-технологий ограничено следующими проблемами:

  • техническая сложность провоцирует высокие затраты на реализацию проекта;
  • организационная сложность – развертывание blockchain-цепи в нескольких организациях требует огромных усилий, в том числе соблюдения правовых норм;
  • низкая скорость транзакций пока не позволяет применять эту технологию в финансовой торговле, SCM, Internet of Things и многих других сценариях, где нужна обработка данных в реальном времени;
  • высокое потребление энергии для работы механизма консенсуса;
  • сложности в обеспечении безопасности, включая трудности защиты от несанкционированного доступа развертывание в разных организациях и неопределенность права собственности на данные;
  • высокая стоимость жизненного цикла из-за сложной распределенной инфраструктуры.

Поэтому следует использовать блокчейн только тогда, когда это действительно имеет смысл, добавляет ценность бизнесу и/или является единственной возможной технологией реализации идеи. Можно использовать для этого Apache Kafka, рассмотрим далее.

Что общего между Apache Kafka и blockchain-системой?

Прежде всего подчеркнем, что Apache Kafka не является блокчейном, а представляет собой распределенную надежную платформу потоковой обработки событий с возможностью развертывания stateful-приложений в гибридных архитектурах без простоев и потери данных. Именно высокая доступность обеспечивает потенциал применения Kafka в блокчейн-проектах. Не будучи блокчейном, Kafka обеспечивает множество характеристик, необходимых для реальных blockchain-проектов корпоративного уровня:

  • обработка событий в режиме реального времени;
  • высокая пропускная способность;
  • децентрализованный распределенный и неизменяемый журнал записей;
  • репликация;
  • высокая доступность;
  • разделение приложений/клиентов;
  • управление доступом к данным на основе ролей.

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

  • защита от несанкционированного доступа;
  • шифрование полезной нагрузки;
  • развертывание в различных независимых организациях.

Важность этих отсутствующих в Kafka элементов будет ответом на вопрос, следует ли выбирать для реализации блокчейна Kafka или необходимо сочетать эту платформу с технологией реального распределенного реестра типа Hyperledger, Ethereum, Ripple, Libra, IOTA и пр. Последнее может пригодится в следующих сценариях:

  • интеграция между технологиями блокчейна/DLT и остальной частью предприятия, включая CRM, аналитику больших данных и любые другие настраиваемые бизнес-приложения;
  • надежная масштабируемая обработка данных в режиме реального времени с помощью Kafka для внутренних сценариев использования;
  • блокчейн для безопасной связи между различными независимыми организациями.

Из-за вышеотмеченных ограничений технологии блокчейна, ее следует использовать, только для обеспечения сотрудничества разных ненадежных сторон. На практике для большинства корпоративных проектов блокчейн является ненужной дополнительной сложностью. В 95% случаев достаточно распределенного журнала фиксации, т.е. топика Kafka или защищенного от несанкционированного доступа распределенного реестра, что тоже может быть реализовано на базе этой Big Data платформы.

Тем не менее, в мире многие компании используют Kafka на своих платформах для торговли криптовалютами и токенами. Например, проекты Nash, Hyperledger Fabric, KafkaBlockchain. Также Kafka используется в некоторых проектах Web3 IoT, таких как Helium, и более простых закрытых DLT-реестрах типа R3 Corda. Однако, Kafka НЕ является блокчейном на этих платформах, а играет роль средства соединения блокчейнов с другими приложениями, такими как CRM, озеро или хранилище данных и пр.

Kafka и блокчейн, blockchain Kafka примеры
Kafka в блокчейн-проектах

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

В этом случае разработчикам распределенных приложений может быть полезна JAVA-библиотека KafkaBlockchain для защиты от несанкционированного доступа с использованием Kafka. Сообщения дополнительно шифруются и последовательно хэшируются. Методы библиотеки вызываются в коде производителя сообщений приложения Kafka для переноса сообщений и вызываются в коде потребителя приложения для распаковки сообщений. Предоставляется пример служебной программы, которая использует и проверяет тему, связанную с цепочкой блоков.

Поскольку блокчейны должны быть строго последовательно упорядочены, blockchain-топики Kafka должны либо иметь один раздел, либо потребители для каждого раздела должны взаимодействовать для упорядочивания записей. Если имеется несколько продюсеров, они должны сотрудничать, чтобы последовательно добавлять записи в блокчейн Kafka.

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

Для управления блокчейнами Kafka примеры программ сохраняют хэш SHA-256 первого (генезисного) сообщения для каждого blockchain-топика в ZooKeeper. В производствственной среде можно применять специализированные средства хранения секретов, например, Vault.

KafkaBlockchain library
JAVA-библиотека KafkaBlockchain: принцип работы

Проект KafkaBlockchain использует криптобиблиотеку Bouncy Castle. Apache Maven требуется для создания этой библиотеки и запуска примеров быстрого запуска. Эта библиотека написана с использованием Java 10. В JAR-файле зависимости скрыты от любого проекта Maven, который включает KafkaBlockchain в качестве зависимости. Также в проект включены служебные классы: ByteUtils, KafkaAccess, ZooKeeperAccess, SHA256Hash и Serialization.

Освойте администрирование и использование Apache Kafka для потоковой аналитики больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в Москве:

Источники

  1. https://www.kai-waehner.de/blog/2022/01/04/when-not-to-use-apache-kafka/
  2. https://www.kai-waehner.de/blog/2020/07/17/apache-kafka-blockchain-dlt-comparison-kafka-native-vs-hyperledger-ethereum-ripple-iota-libra/
  3. https://github.com/ai-coin/KafkaBlockchain