Привет! Меня зовут Кирилл Небогин, я руковожу разработкой блокчейн-платформы в Waves Enterprise. Мы привыкли, что новости о блокчейне обычно связаны с рынком криптовалют. Но есть и другие интересные сценарии применения блокчейна, на которых мы в компании и фокусируемся. В этой статье на примере истории нашей платформы я расскажу, как блокчейн приходит в бизнес, в государственные проекты и какие технические (и не только) сложности с этим связаны.

В третьем квартале 2018 года вышел первый публичный релиз нашей блокчейн-платформы — тогда она еще не называлась Waves Enterprise. Один крупный российский заказчик оценил ее как перспективную для своего проекта, но ему было важно наличие ГОСТ-сертификации. Так что первым значительным энтерпрайз-обвесом стала для нас поддержка криптографии, сертифицированной по ГОСТу. Без этого ни о каких проектах с госучастием не могло идти и речи, а исключать рынок с таким потенциалом не стоило. На данный момент ГОСТ-криптография реализована у нас по стандарту ГОСТ Р 34.12-2015 для шифрования данных, ГОСТ Р 34.11-2012 — для хеширования и ГОСТ Р 34.10-2012 — для электронных подписей.

Выбор консенсуса

Следующим большим шагом стала разработка собственного консенсуса. Основных исходных моделей здесь три — PoW, PoS и PoA.

В PoW (Proof-of-Work) мы рискуем простоем дорогостоящего оборудования. Это мы отмели сразу как чрезвычайно затратный и энергоемкий вариант.

В PoS (Proof-of-Stake) мы рискуем деньгами. Здесь энергозатратные вычисления не требуются, майнер создает только цифровую подпись, и шанс каждого майнера на успех зависит от того, сколько у него токенов сети. Для публичной сети это рабочая схема, так что в мейннете мы остановились на PoS. Потенциально PoS ведет к централизации, а следовательно, к уязвимости сети и снижению мотивации основного числа участников. Поэтому мы дополнительно реализовали сдачу токенов сети в лизинг за долю в вознаграждении — получился LPoS (Leased-Proof-of-Stake). Так мы сохраняем мотивацию у миноритарных участников. 

Публичные сети развиваются за счет финансовой мотивации. Но нужна ли она в приватных сетях, которые в основном и создаются для бизнес-проектов? Зачем нам какие-то токены, чтобы, например, просто обмениваться хешами документов? Проще установить случайный выбор майнеров, сохранив тем самым децентрализацию сети, и ограничить количество валидаторов, чтобы управлять ее масштабируемостью. Так работает консенсус PoA (Proof-of-Authority), который мы взяли на вооружение в приватных проектах. Здесь мы рискуем только деловой репутацией. 

На этом этапе мы стартовали первые небольшие пилоты — системы автоматизации цепи поставок, хранения медицинских записей, проверки подлинности продукта. Казалось, что время выбрано идеально, в 2018 году прошло первое чтение закона о ЦФА (цифровых финансовых активах), мы сделали вексельную программу на блокчейне, несколько других демопроектов, были готовы к большому будущему, но… закон о цифровых финансовых активах несколько задержался и был принят лишь в середине 2020 года. Что ж, неплохой запас времени для доработки продукта :)

Смарт-контракты

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

Вариант первый: писать на специализированных языках, таких, например, как Solidity, что используется в Ethereum. Так можно делать любые контракты и реплицировать их на все узлы, чтобы каждый из них самостоятельно исполнял контракт и добавлял выходные данные в стейт (или в таблицу, если придерживаться аналогии с БД). Но так мы быстро упираемся в потолок пропускной способности, поскольку корпоративные сценарии обычно требуют контрактов со сложной логикой. Другая, не менее важная проблема со специализированными языками — для них нужны дополнительные специалисты с узкими компетенциями. Обычно же в штате компаний есть только разработчики на Java и других языках, популярных в энтерпрайз-секторе.

Второй вариант реализации смарт-контрактов — компилировать ноду сразу со смарт-контрактом внутри. Это позволяет добиваться сотен транзакций в секунду на тестах и, на первый взгляд, решает проблему. Но посмотрим на два хода вперед: что если нам потребуется изменить логику бизнес-контракта? Вполне обычная в бизнес-сценариях ситуация оборачивается редеплоем всех узлов сети — не самый лучший пользовательский опыт, да и непрерывность под большим вопросом.

Мы выбрали третий вариант: реализовали работу смарт-контрактов внутри докер-контейнеров, с доступом через REST API или gRPC. Это популярный в индустрии подход, который дает возможность писать смарт-контракты на тех языках, в которых привыкли писать в компании. Его же использует, например, Hyperledger Fabric. Пример создания и упаковки простого контракта на Python в докере есть у нас в документации.

Валидация смарт-контрактов

Чтобы результаты выполнения смарт-контракта (майнинга) были добавлены в стейт, их должны завалидировать другие участники сети: выполнить на своей стороне, хешировать результаты и убедиться, что полученный хеш совпадает с хешем майнера. В Hyperledger Fabric политика валидации настраивается в зависимости от конкретного проекта: можно, например, указать, что для валидации необходимо 50%+1 узел компании A, один узел компании B и все узлы компании C.

У нас есть три политики валидации: Any, Majority и Majority with one of.

  • Any не требует от других участников сети валидации результатов.

  • Majority требует, чтобы валидаторы исполнили контракт и прислали майнеру хэши результатов. Контракт считается исполненным, если совпадают хеши большинства валидаторов, эти доказательства сохраняются в блокчейне.

  • MajorityWithOneOf аналогична Majority, но для исполнения контракта необходим хэш/доказательство по крайней мере от одного из участников из заранее созданного списка.

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

Выделение роли валидаторов и настройка политики валидации позволяет нам балансировать скорость и уровень децентрализации блокчейн-сетей в зависимости от конкретного проекта.

Проблемы корпоративного блокчейна

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

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

Пропускная способность

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

В этом году мы проработали скорость в тяжелых транзакциях — 15 КБ — и при нагрузочном тестировании достигли 500 tps (транзакций в секунду). Под тяжелыми транзакциями подразумеваются вызовы смарт-контракта с бизнес-логикой системы федерального дистанционного электронного голосования, которая по тестам в итоге справилась с нагрузкой в 25 млн избирателей. На базовых трансферах токенов получаем около 2000 tps.

SDK интегратора

Бизнес-логика проектов бывает так непредсказуема, что имеет смысл не множить готовые решения, а развивать инструменты для их самостоятельного создания. Постепенно в составе Waves Enterprise сформировалось отдельное подразделение интегратора и важнейшим результатом его работы стал SDK для автоматизации бизнес-процессов. Он вполне доступен даже для тех, кто не знаком с программированием. Пройдя через этот «мастер создания», вы в итоге получаете готовый смарт-контракт на Kotlin в докере. В позапрошлом году наша команда читала курс по блокчейну в ВШЭ, и для финального проекта многие ребята самостоятельно разобрались с нашим SDK за пару недель, сделали с его помощью рабочие смарт-контракты.

Исходники SDK нашей платформы есть на гитхабе. Устанавливаете по инструкции — и у вас в распоряжении десятидневная триал-версия, с клиентом, дата-сервисом и всем необходимым. Только предварительно нужно установить Docker и Docker-compose. Можно писать контракты, делать транзакции и ни в чем себе не отказывать :) В этом году мы также планируем выложить опенсорсную версию всей платформы. 

Текущий статус

Сочетая описанные выше и другие технологии, мы можем свободно создавать на основе блокчейна масштабные информационные системы для государства и бизнеса. О федеральной системе ДЭГ я упоминал выше; кроме того, на основе нашей сделана блокчейн-платформа ФНС, мы делаем и финтех-сервисы для Альфа-Банка, и корпоративные решения других компаний. В общем, платформа востребована :)

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

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


  1. niyaho8778
    16.01.2022 15:32
    -1

    И сколько вам заплатили ? не вижу на гос закупках ничего связаного с вами


    1. kantefier Автор
      18.01.2022 20:20

      У нас юрлицо называется по-другому. Вот на госзакупках наш проект с ФНС, вот проект по инициативному голосованию в Волгоградской области. В проекте федеральной системы ДЭГ, вероятно, упоминается только Ростелеком.


  1. Tiendil
    16.01.2022 19:02
    +8

    Блокчейн для бизнеса: как он устроен и почему именно так

    Было бы неплохо начать с ответа на вопрос «Зачем?».


    1. bjornd
      16.01.2022 22:25
      +1

      Тоже интересно.


    1. vix_simplex
      17.01.2022 15:37

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


    1. kantefier Автор
      18.01.2022 20:20

      Спасибо за вопрос, мы поставим его себе в контент-план :) В рамках комментария можно дать общие фразы на тему доверенной среды, но будет интересней разобрать конкретные кейсы в отдельных постах.


  1. Revertis
    16.01.2022 22:40

    Как так получилось, что с помощью ДЭГ украли выборы? Недоработка в коде блокчейна или намеренная уязвимость?


    1. kantefier Автор
      18.01.2022 20:20

      Скандал с выборами разразился в связи с московским ДЭГ, а мы с Ростелекомом работали над другой, федеральной системой, которая использовалась в регионах. Поэтому здесь прокомментировать не могу, не знаю, что конкретно у коллег под капотом. Про нашу систему, кстати, на Хабре есть отдельный пост.


  1. caballero
    16.01.2022 23:31
    +6

    Блокчейн нужен для распределенных данных у которых нет единого владельца-мейнтейнера. У данных бизнеса владелец очевидно есть всегда. Посему не очень понятно куда в бизнесе приткнуть блокчейн


    1. Revertis
      17.01.2022 01:20

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


      1. gto
        17.01.2022 02:48
        +1

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


        1. Revertis
          17.01.2022 02:58

          Может это нам, обывателям, не видно сложностей в межбанковских рассчётах? :)

          Кроме того, банков сейчас огромное количество, и некоторые из них запросто можно назвать спекулянтами, которым лучше быстро и чётко торговать расписками. :)


  1. ustas33
    17.01.2022 00:09

    Какая защита предусмотрена от Gas wars? Если школьники минтят NFT на плоском блокчейне, как это скажется на бизнес транзакциях?
    В Near есть шардинг, и можно выбирать своих валидаторов. Школьники будут играться в отдельной шарде.
    Возможно пора переносить часть оплаты за пользование сетью на протоколы? Чтобы запускать 100500 форк pancakeswap было экономически бесмысленно.


    1. kantefier Автор
      18.01.2022 20:22

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

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


  1. vagon333
    17.01.2022 08:48
    +1

    Работа с банковскими документами, которые передаются между организациями - моя область применения блокчейна (банковское кредитование США, стандарт MISMO).
    При передаче документов возникает проблема достоверности версии документа: возможна редакция ошибок и повторная передача. В этом случае создается путанница из версий. Блокчейн эту путанницу решает через распределенную бд корректных версий.

    Ваш опыт интересен, однако реализация для РФ не подойдет другим странам.
    Интересны детали и проблемы реализации, но не сама реализация.


  1. AlexandreFrolov
    17.01.2022 09:28
    +1

    Так понимаю, что приватный корпоративный блокчейн можно без особого труда сделать на бесплатном geth с открытым кодом, для чего нужно выделить необходимое количество узлов. Если, конечно, не требуется применять шифрование ГОСТ.

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

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

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


    1. kantefier Автор
      18.01.2022 20:23

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


      1. AlexandreFrolov
        19.01.2022 10:05

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

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

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


  1. teemour
    17.01.2022 13:33
    +1

    Пишите всё что хотите, интересно


    1. kantefier Автор
      18.01.2022 20:23

      Спасибо за поддержку, будем писать.