Блокчейн в корпоративной архитектуре: дань моде или необходимость?

Kate

Administrator
Команда форума
Привет! Меня зовут Денис Васин, я технический директор Waves Enterprise, и мы занимаемся блокчейн-проектами для бизнеса. Благодаря метавселенным, технология недавно снова оказалась на волне популярности. Множество крупных компаний, начиная с Meta, объявили, что планируют создавать подобные проекты с поддержкой распределенных реестров и NFT-токенов. Можно утверждать, что блокчейн в целом постепенно выходит на плато продуктивности — самое время трезво оценить его и понять, когда он вообще нужен. Постараюсь сделать это далее в посте.

877549b3815088e85145df8f44108441.png

Какие бывают блокчейн-платформы​

31 октября 2008 г. некий Сатоши Накамото опубликовал статью «Bitcoin: a Peer-to-Peer Electronic Cash System», где изложил принципы работы сети биткоина, ее консенсуса. В своей статье Сатоши систематизировал идеи других исследователей в рамках одного алгоритма, позволяющего на базе математической модели достичь консенсуса данных в полностью недоверенной среде. С этого момента принято отсчитывать историю блокчейна как самостоятельной технологии. Чтобы понять, насколько популярной она стала, достаточно обратиться к популярнейшему рейтингу криптовалют CoinMarketCap. Сейчас он включает почти 10 тысяч криптовалют, а к концу 2021 года их вообще было тысяч 13.

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

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

На другом полюсе у нас полностью закрытые, «частные» сети, например, как у авиакомпании S7 на базе IBM Hyperledger Fabric. Получить доступ к таким сетям можно только с разрешения оператора, который полностью управляет сетью. Сегодня приватные блокчейны движутся к первой группе — в сторону консорциумных, гибридных сетей, состоящих из независимых одноранговых участников, например, логистических операторов или банков.

Основные различия между публичными и приватными блокчейн-сетями я свел в иллюстрации:

7dd6e46c9d31f060548a71b558174fa9.jpeg

Корпоративная блокчейн-платформа​

Как мы вообще можем определить корпоративную блокчейн-платформу? Здесь терминология не открывает ничего нового: это частная (или гибридная) блокчейн-платформа, которую мы можем поставить в крупную корпорацию или госучреждение. Такой режим использования предъявляет к ней повышенные требования

В сети Bitcoin, например, транзакция подтверждается порядка 10 минут. Для бизнес-применения это слишком долго. Даже 10 секунд, как в сети Ethereum, тоже многовато. При этом в отличие от указанных публичных проектов корпоративная сеть не должна требовать большой вычислительной мощности, чтобы ее развертывание было экономически целесообразно. К российским проектам есть и дополнительное требование: они должны поддерживать отечественную криптографию в соответствии с требованиями ГОСТа.

Зачем нужен блокчейн в компании​

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

Представим кейс, когда это свойство может быть востребовано. Есть крупный металлургический завод и нефтегазовая компания. Компания заказывает у завода трубы, завод их производит. Качество труб проверяется, фиксируется в какой-то системе. Затем трубы переправляют по железной дороге, оператор перевозок отмечает их у себя в системе. После транспортировки трубы снова проверяют и результат куда-то заносят. Трубы поступают на склад, и их статус снова где-то регистрируется. В итоге в одном процессе взаимодействует множество промежуточных систем типа SAP или 1C — и это взаимодействие целесообразно автоматизировать.

Первый вариант — стандартные интеграции типа «точка-точка» со всеми контрагентами. С одним заводом и одной нефтегазовой компанией всё просто: интеграция одна. Добавляется транспортная компания — получаем три интеграции. А дальше количество интеграций возрастает в геометрической прогрессии, по формуле n*(n-1)/2), где n — число участников. Усложняет задачу еще и то, что все системы, доступные на рынке, не предусматривают согласование данных. Крупные компании делают такие проекты много лет, тратят много миллионов и раздувают IT-штат до нелепых размеров. Но если бизнес развивается, рано или поздно peer-to-peer подход усложнит работу настолько, что сотрудники начнут решать все проблемы по старинке, через почту, телефон или еще как-нибудь.

Второй вариант — единая база данных в каком-нибудь облаке. Завод, нефтегазовая компания и другие контрагенты были бы счастливы добавлять туда все трубы и просто менять их статусы. Проблема с согласованием данных решается, но возникает немало других. Кто будет отвечать за данные? Что делать со «сведениями, составляющими коммерческую тайну»? Можно ли доверять облачному провайдеру? Каждый участник готов отвечать за свои данные, но мало кто доверит их кому-нибудь еще — и чем больше компания, тем больше закрытость.

Третий вариант — на рынок приходит разработчик отраслевого решения, заявляющий, что способен решить все проблемы с бизнес-процессами. Нужно только обмениваться с ним данными. Большая часть интеграций с неограниченным числом участников делается именно так, с помощью сервис-провайдеров. Но кто выступит в качестве сервис-провайдера? Возьмем пример с чувствительными данными — например, обмен кредитными историями. В качестве сервис-провайдера здесь мог бы выступить Сбербанк, но такая позиция дала бы ему неконкурентное преимущество. В данном случае вопрос решается с помощью независимого участника со специальными полномочиями — БКИ, бюро кредитных историй. БКИ занимается обменом данными и разрабатывает для этого необходимый софт.

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

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

  • Можно обмениваться данными, но при этом сохранять контроль над тем, кто какие данные видит.
  • Количество необходимых интеграций всегда будет равно количеству участников.
  • Каждый участник отвечает только за свою инфраструктуру.
  • Потеря любого узла в сети не повлияет на ее устойчивость.
Есть, конечно, и недостатки, преимущественно организационные.

  • Каждой компании нужно будет провести работы по созданию необходимой инфраструктуры у себя. Это можно охарактеризовать как self-service SaaS.
  • Всем заинтересованным компаниям нужно организоваться и договориться о том, как они будут создавать блокчейн. Мало кто работает в таком майндсете.
  • Обмен конфиденциальными данными кажется невозможным. Но на самом деле в рамках блокчейна его реализовать можно, далее я расскажу как.

Смарт-контракты и конфиденциальные данные​

Основа блокчейна в компаниях — это смарт-контракты, реализующие необходимую бизнес-логику в рамках сети, по сути, программа которую все участники сети исполняют. Результат работ смарт-контракта сохраняется как блок сети, и все участники сети могут видеть входные и выходные данные функции смарт-контракта.

С точки зрения архитектуры, смарт-контракты создают фундаментальные инварианты сетей. В начале я писал про транзакцию в сети биткоин — это и есть один из фундаментальных инвариантов этой сети. Два других фундаментальных инварианта: «я могу потратить только биткоин, от которого знаю ключ» и «биткоин не получается из воздуха» (обязателен либо майнинг, либо перевод). Сочетание этих трех инвариантов дает нам законченную денежную систему.

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

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

Блокчейн-платформа ФНС​

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

Реализация этого постановления с участием дает огромный простор для мошенников: данные в БКИ попадают небыстро, что позволяет набрать кучу кредитов в разных банках. К тому же соблюдение банковской тайны и обмен участвительной информацией потребовали бы значительной доработки стандартных систем.

Мы предложили решить эту задачу через блокчейн. Ведь с помощью смарт-контрактов уже на этапе заявки на кредит мы можем создать фундаментальный инвариант: «от одного уникального ИНН двух активных заявок быть не может». Еще одно преимущество такого решения — функциональность. Мы можем создавать и другие приложения на базе этой инфраструктуры, не городя каждый раз новые интеграции. Недавно мы, например, запустили на основе этой сети пилот единой базы машиночитемых доверенностей.

Сейчас проект уже работает как Цифровая платформа распределенного реестра ФНС. В ней каждая заявка имеет открытую и закрытую часть. Первую обрабатывают смарт-контракты, туда входят статусы, идентификаторы, номера заявок, ИНН, ОГРН. Вся эта неконфиденциальная информация хранится в открытом виде в стейте сети. Конфиденциальная часть содержит сумму кредита, количество сотрудников организации, кредитный лимит.

Общая схема одноуровневого обмена информацией в рамках сети
Общая схема одноуровневого обмена информацией в рамках сети
Специфика блокчейна такова, что он работает только с данными внутри сети. При работе с криптовалютами этого достаточно, но в бизнес-проектах нет. Для записи внешних данных нужным образом в блокчейн — по сути, key-value базу данных — применяются промежуточные сервисы, оракулы данных. А чтобы забирать данные из блокчейна, применяются обратные оракулы.

Прикладная архитектура проекта​

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

929fbfd3dc85dbcb54dfbd42ae3672f0.jpeg

Распишем эту модель поэтапно в рамках проекта с ФНС.

  1. Пользователь заходит через REST в прикладное приложение, оставляет заявку на кредит.
  2. Приложение формирует транзакцию — вызов смарт-контракта — с входными данными заявки.
  3. Данные отправляются в блокчейн на вход смарт-контракта.
  4. Смарт-контракт проверяет, не является ли эта заявка дубликатом и может ли заявитель в принципе завести ее. Если все условия соблюдены, смарт-контракт размещает на идентификаторе-ключе публичные данные новой заявки.
  5. Данные уходят в так называемый стейт блокчейна — снапшот цепочки блоков.
  6. Создается ответная транзакция о появлении нового блока в сети.
  7. Все участники сети получают видят уведомление о транзакции и добавляют информацию о заявке к себе в БД в удобном формате.
В принципе, наш проект имеет классическую трехзвенную архитектуру — базы данных, прикладные приложения и UI — с дополнением в виде блокчейна.

Подведем итоги​

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

Блокчейн — это альтернатива SaaS-сервисам в монументальных кейсах, когда организовать SaaS очень сложно, как в примере с банками выше.

Блокчейн — это не замена реляционной БД, интеграционной шины, NoSQL, key-value БД, Kafka или чего бы то ни было. Это достаточно узкое, специализированное решение, которое направлено на достижение консенсуса в недоверенной среде. Именно здесь оно будет оправдано на 100%.

В будущих постах Waves Enterprise я и коллеги будем более подробно рассказывать о технической стороне блокчейна, проектах на блокчейне и других связанных вещах. Если у вас есть вопросы по теме, пишите в комментариях, мы обязательно ответим здесь или в рамках новых материалов.

 
Сверху