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

Проект проводился НРД под руководством Александра Яковлева, программная реализация была разработана компанией Altoros, архитектор — Олег Абдрашитов.

Под катом мой рассказ о технических и некоторых юридических аспектах подготовки и проведения сделки.

Описание блокчейн-сети


Для проведения пилотной сделки мы развернули блокчейн-платформу на базе Hyperledger Fabric v.1.0. Проект Hyperledger под эгидой The Linux Foundation — это инициатива по созданию разных блокчейн-платформ и вспомогательных инструментов с открытым исходным кодом. В проекте участвует целая россыпь компаний со всего мира: технологические гиганты (IBM, Intel и так далее), консалтинговые компании (Accenture, Altoros и так далее), представители различных отраслей (Сбербанк, Московская биржа, CME, DTCC, Deutche Burse, Daimler, Airbus и так далее) и стартап-команды (Digital Asset Holding, Soramitsu и так далее). Проект запустили в декабре 2015 года, и сейчас активно развивается пять блокчейн-платформ и четыре инструмента для работы с блокчейн-платформами. Hyperledger открыт для всех, его участники равны между собой и придерживаются принципов «чистого» открытого кода.

Поскольку Hyperledger Fabric v.1.0 не так широко известен, как Bitcoin или Ethereum, то чтобы вам было легче понять топологию этой блокчейн-сети и происходящих в ней процессов, я вкратце расскажу об особенностях архитектуры Hyperledger Fabric v.1.0.

Особенности архитектуры Hyperledger Fabric v.1.0


Рассмотрим как выполняются транзакции на блокчейн-платформе Hyperledger Fabric v.1.0 (по материалам «The trend of exploring the use of DLT in Capital market», Japan Exchange Group, September 14, 2017)

В отличие от публичных платформ вроде Bitcoin или Ethereum, в Hyperledger Fabric v.1.0 есть две специальные роли:

  • Endorser (валидатор) — узел, проверяющий и исполняющий транзакцию, а потом возвращающий её обратно клиенту с результатами и своей подписью.
  • Orderer (упорядочиватель) — узел, устанавливающий последовательность транзакций и рассылающий их другим узлам DLT-сети.

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

Как создаётся и исполняется транзакция:

  1. Клиент направляет транзакцию валидаторам (endorsers).
  2. Валидаторы исполняют транзакцию и возвращают её клиенту вместе с результатами исполнения и своей подписью.
  3. Клиент собирает необходимое количество подписей валидаторов и направляет транзакцию с набором ответов валидаторов на Orderer.
  4. Orderer комбинирует транзакции в последовательность блоков и рассылает их.
  5. Каждый из узлов проверяет, соответствует ли транзакция политике валидации, и «проигрывает» её в своём экземпляре реестра.


Топология блокчейн-сети пилотной сделки


В структуре блокчейн-сети было три участника:

  • НРД — оператор сделки и администратор платформы.
  • Мегафон — участник сделки.
  • Райффайзенбанк — участник сделки.

Каждый участник развернул у себя собственный узел сети, а также дополнительные компоненты, предусмотренные архитектурой Hyperledger Fabric v.1.0:

  • НРД развернул Orderer, обеспечивающий формирование упорядоченного потока транзакций, и
  • установил клиентскую часть с UI, обеспечивающую функциональность оператора сделки.
  • Мегафон и Райффайзен установили клиентские части с UI, обеспечивающие функциональность участника сделки.


В сети были созданы реестры, доступ к которым разграничивался внутренним механизмом каналов Hyperledger:

  • Реестр ценных бумаг (доступен всем участникам сети). Здесь был создан единственный смарт-контракт SecurityMaster, в контексте которого вёлся перечень ценных бумаг.
  • Сводный реестр балансов счетов всех участников (доступен только НРД). Здесь был создан единственный смарт-контракт Book, в контексте которого отражались остатки по счетам всех участников.
  • Реестр балансов счетов Райффайзенбанка (доступен только НРД и Райффайзенбанку).
  • Реестр балансов счетов Мегафона (доступен только НРД и Мегафону).
  • Реестр сделок между Райффайзенбанком и Мегафоном (доступен только НРД, Райффайзенбанку и Мегафону). Здесь был создан единственный смарт-контракт Instruction, в контексте которого регистрировались и обрабатывались все сделки данной пары участников.

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

Если бы сделка проводилась и легализовалась только через блокчейн, то всё происходило бы так:

  1. В Реестре сделок оба участника создают транзакции инструкций покупки и продажи, которые сохраняются в контексте смарт-контракта Instruction.
  2. При поступлении второй инструкции из пары «покупка-продажа» они сопоставляются друг с другом в смарт-контракте Instruction и получают статус «matched».
  3. Когда клиент НРД получает уведомление о сопоставлении, то по Сводному реестру балансов проверяет балансы на счетах участников сделки.
  4. Если проверка балансов прошла успешно, то клиент НРД:
    • Создаёт в смарт-контракте Instruction транзакции, которые меняют статус соответствующих инструкций на «execute».
    • А затем создаёт транзакции по изменению балансов счетов для смарт-контракта Position.

Подготовка и проведения сделки


Есть утверждённый порядок регулирования торговли ценными бумагами, при котором сделка считается юридически значимой, если она проведена через штатную систему учета ценных бумаг НРД «Аламеда». Чтобы соблюсти это условие, в процесс проведения сделки добавили специальные стадии формирования, подписания и обработки поручений действующего формата, с использованием «боевых» ЭЦП участников сделки. Кроме того, чтобы передача поручений через блокчейн считалась легитимной, НРД подписало с участниками сделки лицензионное соглашение и дополнительное соглашение к Договору по электронному документообороту.

В результате процесс заключения сделки стал выглядеть так:

  1. Мегафон и Райффайзенбанк, каждый на своем узле, создают встречные инструкции на продажу и покупку соответственно, и передают их в смарт-контракт Instruction.
  2. В смарт-контракте Instruction инструкции сопоставляются друг с другом.
  3. Если сопоставление прошло успешно, то:
    • НРД на своём узле создаёт и «прикрепляет» к инструкции каждого из участников соответствующий файл поручения для последующей загрузки в «Аламеду».
    • В Реестры балансов участников сделки (смарт-контракт Position) отправляются соответствующие транзакции об изменении учета бумаг на счетах.
  4. Участники сделки:
    • Извлекают из блокчейна файлы поручений для «Аламеды».
    • Подписывают их своими «боевыми» ЭЦП на соответствующих рабочих местах.
    • Помещают обратно в блокчейн.
  5. НРД извлекает подписанные участниками файлы поручений и загружает в «Аламеду».
  6. «Аламеда» обрабатывает сделку и создаёт файлы отчетности, которые затем отправляет участникам сделки.

Как всё было


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

Мы столкнулись с первыми трудностями еще до начала развертывания платформы: оказалось, что Райффайзенбанк и Мегафон не готовы дать прямой доступ к своим действующим ключам ЭЦП «чужому загадочному» ПО. Так что пришлось разработать специальную утилиту по выгрузке/загрузке файлов поручений, чтобы их можно было подписывать вне ПО платформы.

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

К счастью, реализация платформы предполагала использование Docker-контейнеров, поэтому различия, связанные с использованием участниками разных ОС (RHEL и Ubuntu) не повлияли на работу узлов сети.

Основные проблемы были связаны с внутренними особенностями Hyperledger Fabric и тем, что в обеих компаниях по-разному построена сетевая инфраструктура:

  • Из-за особенностей смарт-контрактов Hyperledger Fabric пришлось полностью «выравнивать» узлы как по релизу (потому что хэш коммита использовался внутренними алгоритмам), так и по пользователю ОС, под которым запускались компонены платформы (он тоже участвовал в идентификации смарт-контракта).
  • Узел Райффайзенбанка не видел самого себя по своему внешнему адресу, поэтому некоторые стадии скриптов установки и настройки приходилось пропускать по <Ctrl+C>.
  • Возникали загадочные «залипания» сервиса, отвечавшего за выгрузку/загрузку файлов, от которых удавалось избавиться только перезапуском сервиса.

На развёртывание и настройку платформы ушло примерно три дня (27-29 сентября) и 20 часов в Webex. Как водится в IT-среде, не обошлось и без шаманских бубнов — «… теперь ждем ровно семь минут...»

Но в итоге первая сделка прошла без единого сбоя и зависания.

Ниже приведены исторические скриншоты — поручение Райффайзенбанка на покупку облигаций Мегафона и итоговый баланс по результатам сделки.



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


  1. Conung_ViC
    14.11.2017 17:21

    Извините, я не в теме, и может тупой вопрос задам, но если необходимо участие 3-го участника (НРД) как оператора системы, то чем это всё отличается от обычного электронного документооборота с ЭЦП и интеграцией с внешними системами (Аламеда)?

    В чем преимущество использования блокчейна?


    1. ebragim
      14.11.2017 17:47

      Не имею отношения к данному проекту, но позвольте выразить своё мнение:
      Когда в системе будет несколько сотен/тысяч участников рынка + НРД, то проверка и валидация событий в блокчейне может производиться любыми участниками. НРД же остаётся для работы по закону, для регистрации сделок в «Аламеде».


    1. ggo
      15.11.2017 09:51

      Для меня тоже неясно в чем плюсы/минусы по сравнению с существующими подходами.
      Что я услышал: есть некие компоненты, которые разворачиваются у участников, эти компоненты общаются между собой, есть эцп и прочее, чтобы в случае чего, можно было в суде решать спорные ситуации.
      И чем это принципиально отличается от существующих подходов?
      Ниже упоминают, что если участников будет несколько сот тысяч. Но новое решение не предназначено для сотен тысяч. Там участники обмениваются публичными ключами, и контрактами.
      Опять же ниже упоминают про ускорение. Но за счет чего происходит ускорение? И почему этого ускорения нет при традиционных подходах?


    1. shuguroff
      15.11.2017 10:14

      Еще интересно были ли отправлены в 30 дневный срок оригиналы бумажных документов с подписью руководителя, главного бухгалтера и юриста предприятия скрепленные печатью?


      1. MadJackal Автор
        16.11.2017 14:07
        +1

        Нет.


        1. shuguroff
          16.11.2017 14:17

          Вот это уже прогресс


  1. Psychosynthesis
    14.11.2017 18:23

    А будут ли достигнутые решения использоваться в дальнейшем?

    Если будут и это уже прототипы рабочих моделей, то по моему это максимально круто!


    1. kozyabka
      14.11.2017 20:04

      это максимально круто
      круто продавать и пилить фонды! Блокчейн никуда не вылезет и не заберёт то что кто-то кому-то должен, вообще, никак. По этому если сделка не выполнена то не важно записана она в блокчейне или нет, будут «выяснения обстоятельств» уже самими участниками. Участники и так сами знают условия сделки и кто что кому должен, по этому в блокчейне в этом плане нет никакого смысла.


      1. Psychosynthesis
        14.11.2017 20:50

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


  1. redmanmale
    15.11.2017 11:49

    Видимо, если поскрести любую модную блокчейн-платформу, внутри будут всякие СКЗИ и НРД.


    1. MadJackal Автор
      15.11.2017 17:49

      1. СКЗИ — это средства криптозащиты информации, то есть хэш и цифровые подписи. Без них блокчейн пока построить не удалось. В данном случае выделены именно сертифицированные СКЗИ, обеспечивающие легетимность сделки по Российскому законодательству — они были за пределами блокчейн-платформы.
      2. Если прочитать отчет Японской фондовой биржи, ссылка на который приведена в статье, то обнаружится, что немалая его часть посвящена роли "доверенных третьих сторон". На текущий момент построение КОРПОРАТИВНЫХ блокчейн-платформ без "доверенных третьих сторон" видится крайне затруднительным. Здесь следует учитывать различие в условиях применения публичных и приватных децентрализованных реестров.


  1. Canapsis
    16.11.2017 14:07

    НРД это цензор, а в блокчейне не должно быть цензоров. Это уже не блокчейн а централизованная система, которая будет решать что подписывать а что нет. НЕГОДИТСЯ!


    1. MadJackal Автор
      16.11.2017 14:15

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


  1. andreykour
    16.11.2017 14:15

    а криптография по ГОСТу? сертификация ФСТЭК? лицензия ФСБ?


    1. MadJackal Автор
      16.11.2017 14:22

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


  1. MadJackal Автор
    16.11.2017 14:21

    --