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

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

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

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

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

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

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

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

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

В сети 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 лога для всех подключенных организаций, но без репликации и кеша чтения — в принципе, это блокчейну и не нужно.

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

  1. Пользователь заходит через REST в прикладное приложение, оставляет заявку на кредит.

  2. Приложение формирует транзакцию — вызов смарт-контракта — с входными данными заявки.

  3. Данные отправляются в блокчейн на вход смарт-контракта.

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

  5. Данные уходят в так называемый стейт блокчейна — снапшот цепочки блоков.

  6. Создается ответная транзакция о появлении нового блока в сети.

  7. Все участники сети получают видят уведомление о транзакции и добавляют информацию о заявке к себе в БД в удобном формате.

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

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

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

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

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

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

Комментарии (10)


  1. vagon333
    31.03.2022 17:30
    +5

    Но одна компания имеет право иметь только одну активную заявку на кредит в одном банке.

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

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

    А зачем?
    В случае с централизованной базой Смарт-контракты эквивалентны либо слою бизнес-логики при доступе к данным, либо примитивным триггерам, если логика простая.

    Может я что-то недопонял, но:
    1. консенсус в вашем примере совсем не нужен т.к. single source of truth - централизованная база.
    2. Этап №4 (проверка на дубликат через смарт-контракт) звучит как overkill - обычный уникальный индекс в RDBMS решает эту задачу на уровне engine.
    3. Этап №5 (стейт блокчейна) на уровне БД решается более гибко - можно создавать логи, можно шустро анализировать попытки мошенничества.

    Не поймите превратно, я не против блокчейн, более того, используем в банковской индустрии как гарант document tamper seal (есть такая проблема - править задним числом), но в вашем случае примерение блокчейн спорно. Как по мне - проще решить через RDBMS с соответствующими дочерними таблицами в схеме БД.


    1. execc_13 Автор
      31.03.2022 18:46

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

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

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

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

      Стоит оценить так же и со стороны сети. Предположим, есть у нас блокчейн-сеть, к которой уже подключены участники A, B, C, D. Появлется новый участник E, которому нужно взаимодействовать с A и B. Вместо построения собственной системы с нуля, к которой нужно еще подключить А и B, ему проще подключиться к общей блокчейн-сети. Мало того что это будет дешевле (есть уже готовые инфраструктура и базовые сервисы), но подключившись сам, он увеличит ценность сети для будущих новых участников. Такой подход как нельзя лучше подходит как раз для построения сетей, объединяющих органы государственной власти, с их большим, но конечным числом участников и постоянно растущим числом взаимодействий.


  1. makar_crypt
    31.03.2022 17:30

    Этот комментарий больше для новичков:

    Статья полностью аффилирована и утрирована проектом Wave. Многие высказывания справедливы только для проекта Wave, учтите это про чтение.


  1. Tiendil
    31.03.2022 17:39
    +1

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

    Наконец, мы приходим к решению через блокчейн.

    Чую мухлёж. Разработчик блокчейна и есть третий вариант. У него все те же возможности, что у "разработчика отраслевого решения без блокчейна", те же плюсы и минусы. Только слова модного нет в названии, а значит нельзя х10 за услуги брать.


    1. execc_13 Автор
      31.03.2022 18:49

      Разница здесь в том, что участники сами смогут создавать новые процессы на основе созданной нами сети. У нас есть для этого удобные инструменты. Это реально уменьшает косты.


      1. Tiendil
        31.03.2022 21:59

        Т.е. они могут на каком-то DSL писать "программы" для вашего "облака". Таких вариантов 100 лет в обед без блокчейна. От геймдева для бизнесовых систем.


        1. execc_13 Автор
          01.04.2022 11:33

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


          1. vabka
            01.04.2022 11:53

            Тогда чем такой "смарт контракт" отличается от обычного контейнеризированного приложения, которое общается через API?

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


      1. vabka
        01.04.2022 11:51

        участники сами смогут создавать новые процессы на основе созданной нами сети

        Так это и без блокчейна много раз реализовано - у этой новой системы просто должен быть открытый API и, опционально, какой-нибудь DSL, если представители бизнеса сами хотят какие-то свои скрипты писать


  1. anzay911
    31.03.2022 18:37

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