Hyperledger Fabric для Чайников
A Blockchain Platform for the Enterprise
Добрый день, дорогие читатели, меня зовут Николай Нефедов, я технический консультант компании IBM, в этой статье я хотел бы познакомить вас с блокчейн платформой – Hyperledger Fabric. Платформа предназначена для построения бизнес приложений уровня предприятия (Enterprise class). Уровень статьи – для неподготовленных читателей, имеющих базовые знания IT технологий.
Hyperledger Fabric это open-source проект, одна из ветвей открытого проекта Hyperledger, консорциума Linux Foundation. Hyperledger Fabric был изначально стартован Digital Assets и IBM. Основной особенностью платформы Hyperledger Fabric является направленность на корпоративное применение. Поэтому платформа разрабатывалась с учетом обеспечения высокой скорости проведения транзакций и их низкой стоимости, а также идентификации всех участников. Данные преимущества достигаются за счет разделения службы проверки транзакций и формирования новых блоков распределенного реестра, а также применения центра сертификации и авторизации участников.
Моя cтатья это часть цикла статей о Hyperledger Fabric в рамках которой мы описываем проект системы по учету студентов, поступающих в ВУЗ.
Общая архитектура Hyperledger Fabric
Hyperledger Fabric — это распределенная блокчейн сеть, состоящая из различных функциональных компонентов, которые устанавливаются на узлы сети. Компоненты Hyperledger Fabric представляют из себя Docker контейнеры, которые можно свободно скачать из DockerHub. Hyperledger Fabric также можно запустить в Kubernetes среде.
Для написания смарт-контрактов (chaincode в контексте Hyperledger Fabric) мы использовали Golang (хотя Hyperledger Fabric позволяет использовать и другие языки). Для разработки пользовательского приложения в нашем случае использовался Node.js с соответствующим Hyperledger Fabric SDK.
На узлах выполняется бизнес логика (смарт-контракт) – chaincode, хранится состояние распределенного реестра (ledger data) и исполняются другие системные службы платформы. Узел – это только логическая единица, разные узлы могут существовать на одном физическом сервере. Гораздо важнее – это как узлы сгруппированы (Trusted domain) и с какими функциями блокчейн сети они ассоциированы.
Общая архитектура выглядит следующим образом:
Picture 1. Общая Архитектура Hyperledger Fabric
Пользовательское приложение (Submitting Client) — приложение, с помощью которого пользователи работают с блокчейн сетью. Для работы необходимо пройти авторизацию и обладать соответствующими правами на разного рода действия в сети.
Peers (Узлы) бывают нескольких ролей:
Endorsement Policy – это политика проверки транзакции на валидность. Данные политики определяют необходимый набор узлов, на которых должен быть выполнен смарт-контракт для того, чтобы транзакция была признана валидной.
Распределенный Реестр — Lerger — состоит из двух частей: WolrldState (также называется — State DataBase) и BlockChain.
BlockChain — это цепочка блоков, которая хранит записи о всех изменениях, произошедших с объектами распределенного реестра.
WolrldState — это компонент распределенного реестра, который хранит текущие (крайние) значения всех объектов распределенного реестра.
WorldState представляет собой базу данных, в базовом варианте — LevelDB или более сложная – CouchDB, которая содержит пары ключ — значение, например: Имя – Иван, Фамилия — Иванов, дата регистрации в системе – 12.12.21, дата рождения — 17.12.1961, и т.д. WorldState и распределенный реестр должны быть консистентны у всех участников данного канала.
Поскольку Hyperledger Fabric это сеть, в которой все участники известны и аутентифицированы, здесь используется выделенный центр сертификации — CA (Certification Authority). CA работает на основе X.509 стандарта и инфраструктуры публичных ключей – PKI.
Membership Service – это служба, через которую участники осуществляют проверку принадлежности объекта к той или иной организации или каналу.
Транзакция – в большинстве случаев, это запись новых данных в распределенный реестр.
Также транзакции бывают на создание каналов или смарт-контрактов. Транзакция инициируется пользовательским приложением и заканчивается записью в распределенный реестр.
Канал (Channel) – это закрытая подсеть, состоящая из двух или более участников блокчейн сети, предназначенная для проведения конфиденциальных транзакций внутри ограниченного, но известного, круга участников. Канал определяется участниками, своим распределённым реестром, смарт-контрактами, Ordering Service, WorldState. Каждый участник канала должен быть авторизован на доступ к каналу и иметь право выполнять разного рода транзакции. Авторизация выполняется с помощью Membership Service.
Типовой сценарий исполнения транзакции
Далее я хотел бы рассказать о типовом сценарии выполнения транзакции на примере нашего проекта.
В рамках нашего внутреннего проекта мы создали Hyperledger Fabric сеть, которая предназначена для регистрации и учета студентов, поступающих в ВУЗы. Наша сеть состоит из двух организаций, принадлежащим ВУЗу A и ВУЗу B. Каждая организация содержит клиентское приложение, а также свои Committing и Endorsing Peer. Также мы используем общие сервисы Ordering Service, Memebership Service и Certification Authority.
1) Инициация Транзакции
Пользовательское приложение, используя Hyperledger Fabric SDK, инициирует запрос на транзакцию и отправляет запрос на узлы со смарт-контрактами. Запрос может быть на изменение или чтение из распределенного реестра (Ledger). Если рассматривать пример нашей тестовой конфигурации системы для учета студентов ВУЗов, то клиентское приложение посылает запрос на транзакцию на узлы вузов A и B, которые включены в Endorsement policy вызываемого смарт-контракта. Узел A — это узел, который находится в ВУЗе, который регистрирует поступающего студента, а узел B — это узел, который находится в другом ВУЗе. Для того чтобы транзакция была сохранена в распределенный реестр, необходимо, чтобы все узлы, которые согласно бизнес логике должны одобрить транзакцию, успешно выполнили смарт-контракты с одинаковым результатом. Пользовательское приложение узла A, используя инструменты Hyperledger Fabric SDK, получает Endorsement policy (политика одобрения) и узнает, на какие узлы нужно отправить запрос на транзакцию. Это запрос на вызов (invoke) определенного смарт-контракта (chaincode function), чтобы прочитать или записать определённые данные в распределенный реестр. Технически, клиентское SDK использует соответствующую функцию, API которой передается некий объект с параметрами транзакции, а также добавляет клиентскую подпись и отправляет эти данные по протоколу protocol buffer over gRPC на соответствующие узлы (endorsing peers).
Picture 2. Инициация Транзакции
2) Выполнение смарт-контракта
Узлы (Endorsing Peers), получив запрос на проведение транзакции, проверяют клиентскую подпись и если все в порядке, то берут объект с данными запроса и запускают симуляцию исполнения смарт-контракта (chaincode function) с этими данными. Смарт-контракт — это бизнес логика транзакции, определённый набор условий и инструкций (в нашем случае это проверка студента, новый это студент, или он уже зарегистрирован, проверка возраста и т.д.). Для исполнения смарт-контракта также понадобятся данные из WorldState. В результате симуляции смарт-контракта на Endorsing peer получается два набора данных – Read Set и Write Set. Read Set и Write Set — это исходные и новые значения WorldState. (новые – в смысле полученные при симуляции смарт-контракта).
Picture 3. Выполнение смарт-контракта
3) Возврат данных клиентскому приложению
После проведения симуляции смарт-контракта Endorsing Peers возвращают клиентскому приложению исходные данные и результат симуляции, а также RW Set, подписанные своим сертификатом. На данном этапе никаких изменений в распределенном реестре не происходит. Клиентское приложение проверяет подпись Endorsing Peer, а также сравнивает исходные данные транзакции, которые были отправлены, и данные, которые вернулись (то есть проверяет не исказились ли исходные данные над которыми проводилась симуляция транзакции). Если транзакция была только на чтение данных из реестра, то клиентское приложение соответственно получает необходимый Read Set и на этом обычно транзакция успешно завершается без изменения распределенного реестра. В случае транзакции, которая должна изменить данные в реестре, клиентское приложение дополнительно проводит проверку выполнения Endorsing policy. Возможна ситуация, когда клиентское приложение не проверяет результат выполнения Endorsement Policy, но платформа Hyperledger Fabric в данном случае предусматривает проверку политик на узлах (Comitting Peers) на стадии добавления транзакции в реестр.
Picture 4. Возврат данных клиентскому приложению
4) Отправка RW sets на Ordering Peers
Клиентское приложение отправляет транзакцию вместе с сопутствующими данными на Ordering service. Сюда включаются RW Set, подписи Endorsing peers, а также идентификатор канала (Channel ID).
Ordering service – исходя из названия, основная функция этого сервиса — построение поступающих транзакций в правильном порядке. А также формирование нового блока распределенного реестра и гарантированную доставку новых сформированных блоков всем Commiting узлам, таким образом обеспечивая консистентность данных на всех узлах содержащих распределенный реестр (Commiting peers). При этом сам Ordering service никак не меняет реестр. Ordering Service это жизненно важный компонент системы, поэтому он представляет из себя кластер из нескольких узлов. Ordering Service не проверяет транзакцию на валидность, он просто принимает транзакцию с определенным идентификатором канала, выстраивает поступающие транзакции в определенном порядке и формирует из них новые блоки распределенного реестра. Один Ordering Service может обслуживать несколько каналов одновременно. В состав Ordering Service входит Kafka кластер, который и поддерживает правильную (неизменную) очередь транзакций (см. Пункт 7).
Picture 5. Отправка RW sets на Ordering Peers
5) Отправка сформированных блоков на Committing Peer
Сформированные в Ordering Service блоки передаются (broadcast) всем узлам сети. Каждый узел, получив новый блок, проверяет его на соответствие Endorsing Policy, проверяет, что все Endorsing Peers получили одинаковый результат (Write Set) в результате симуляции смарт-контракта, а также проверяет, не изменились ли исходные значения (то есть — Read Set — данные прочитанные смарт-контрактом из WorldState) с момента инициации транзакции. Если все условия выполнены – транзакция помечается валидной, в противном случае, транзакция получает статус не валидной.
Picture 6. Отправка сформированных блоков на Committing Peer
6) Добавления блока в реестр
Каждый узел добавляет транзакцию в свою локальную копию распределенного реестра, при этом, если транзакция валидна, то Write Set применяется к WorldState (текущему состоянию), соответственно, записываются новые значения объектов, которые затрагивались транзакцией. В случае если транзакция получила маркер – не валидной (например, произошло две транзакции с одними и теми же объектами в рамках одного блока, то одна из транзакций получится не валидной, поскольку исходные величины уже изменены другой транзакцией). Эта транзакция также добавляется в распределенный реестр с маркером не валидной, но Write Set этой транзакции не применяется к текущему состоянию WorldState и, соответственно, не изменяет объекты, учавствующие в транзакции. После этого пользовательскому приложению отправляется нотификация, что транзакция на веки вечные добавлена в распределенный реестр, а также статус транзакции, то есть валидна она или нет…
Picture 7. Добавления блока в реестр
ORDERING SERVICE
Ordering Service состоит из Kafka кластера с соответсвующими ZooKeeper нодами и Ordering Service Nodes (OSN), которые стоят между клиентами Ordering service и Kafka Кластером. Kafka кластер — это распределенная, отказоустойчивая платформа управления потоками (сообщениями). Каждый канал (топик) в Kafka — это неизменяемая последовательность записей, которая поддерживает только добавление новой записи (удаление существующей невозможно). Иллюстрация структуры топика приведена ниже. Именно это свойство Kafka и используется для построения блокчейн платформы.
взято с сайта kafka.apache.org
Picture 8. Ordering Service Topic Structure
Полезны ссылки
Благодарности
Выражаю огромную благодарность за помощь в подготовке статьи моим коллегам:
Николаю Марину
Игорю Хапову
Дмитрию Горбачеву
Александру Земцову
Екатерине Курденковой
Екатерине Гусевой
Что такое Hyperledger? Полное руководство по Hyperledger Fabric, Sawtooth и другим проектам
Дата обновления: 06.09.2021 в 11:06
Фонд Linux запустил блокчейн проект с открытым исходным кодом «Hyperledger» еще в 2015 году. Проект имеет важное значение в мире блокчейна.
Благодаря множеству различных модулей, небольшие компании имеют много возможностей для интеграции приложений блокчейна.
Несмотря на то, что понять, что такое криптовалюты, такие как Биткоин и даже Эфириум, относительно просто, гораздо сложнее разобраться в инициативе Hyperledger.
Далее в статье мы расскажем, что такое Hyperledger, как он работает и для чего он нужен!
Что такое Hyperledger? Краткое руководство по Hyperledger
Hyperledger не поддерживает Биткойн или любую другую криптовалюту. Но разработчики платформы заинтересованы технологией блокчейна.
Веб-сайт утверждает, что со времени создания сети «технология Hyperledger обещала более широкую и фундаментальную революцию, чем технология блокчейна». Блокчейн обладает потенциалом для «создания нового поколения транзакционных приложений, которые устанавливают доверие, подотчетность и прозрачность в своей основе, оптимизируя бизнес-процессы и правовые ограничения».
С помощью Hyperledger Linux Foundation стремится создать среду, в которой сообщества разработчиков программного обеспечения и компаний встречаются и координируют свои действия для создания блокчейн-фреймворков.
Фонд Linux Foundation основал эту платформу в декабре 2015 года. В феврале 2016 года она объявила о первых членах-учредителях, а в марте 2016 года к ней присоединились еще десять участников.
Сегодня Hyperledger имеет внушительный список из более чем 100 участников. Этот список охватывает широкий круг хорошо известных лидеров отрасли.
В него входят такие гиганты мобильных технологий, как Airbus и Daimler, IT-компании, такие как IBM, Fujitsu, SAP, Huawei, Nokia, Intel и Samsung, финансовые учреждения, такие как Deutsche Börse, American Express, JP Morgan, BBVA, BNP Paribas и Well Fargo, а также как блокчейн стартапы, такие как Blockstream, Netki, Lykke, Factom, bloq и Consensys.
Среди лидеров можно найти следующих: Apache Foundation и W3C, а также разработчиков из IBM и многих других компаний.
Некоторые члены Hyperledgers, такие как Ричард Браун и Тамас Блюмер, уже много лет работают с блокчейном. Для своих участников Hyperledger предоставляет не только технические знания и программные платформы, но и различные контакты с отраслями промышленности и разработчиками.
У исполнительного директора Брайана Белендорфа спросили: «появится ли в будущем Hyperledger Coin, денежная единица, работающая на блокчейнах Hyperledger?». Белендорф ответил, что сам проект Hyperledger никогда не будет создавать свою собственную криптовалюту.
«Вы никогда не увидите монету Hyperledger. Мы избегаем политических проблем, связанных с необходимостью поддерживать цифровую валюту»
Это решение сильно повлияло на стратегические цели Hyperledger по созданию промышленных приложений технологии блокчейн и резко отделило ее от схем привлечения денег, в отличие от других проектов, которые развиваются на основе создания криптовалюты.
Кроме того, в «Уставе» изложены цели Hyperledger, как в руководстве к миссии. В соответствии с этим, платформа нацелена на «создание корпоративной инфраструктуры распределенной бухгалтерской книги с открытым исходным кодом и кодовой базы», а также на создание, продвижение и поддержку открытой инфраструктуры.
Вроде мы видим цели, но они какие-то расплывчатые. Проект описывает какую-то программу, но не отвечает на главные вопросы: что делают все эти ведущие мировые компании и лидеры в Hyperledger? Какие проекты они продвигают? Кто участвует?
Проекты Hyperledger
Hyperledger инкубирует и продвигает целый ряд бизнес-блокчейн-технологий, фреймворков, библиотек, интерфейсов и приложений. В настоящее время Hyperledger разрабатывает следующие проекты.
Hyperledger Sawtooth
Hyperledger Iroha
Hyperledger Fabric (Hyperledger IBM)
Hyperledger Burrow
Hyperledger Composer
Hyperledger Explorer
Разработанный для создания удобного веб-приложения, Hyperledger Explorer может просматривать, вызывать, развертывать или запрашивать блоки, транзакции и связанные с ними данные, сетевую информацию (имя, статус, список узлов), коды цепочек и семейства транзакций, а также любую другую соответствующую информацию, хранящуюся в главной книге.
Hyperledger Indy
Hyperledger Cello
Hyperledger Cello – это модель развертывания блокчейна как сервиса.
Помимо этих проектов, Hyperledger имеет несколько инструментальных проектов, направленных на упрощение и повышение эффективности доступа к блокчейнам и их разработки.
Итак, мы более подробно рассмотрим два самых известных проекта: Sawtooth и Fabric.
Hyperledger Sawtooth (Intel)
PoET использует новую безопасную инструкцию процессора, которая все больше и больше доступна в новых процессорах, таких как Intel build.
С помощью этих инструкций PoET обеспечивает безопасный и случайный выбор так называемого «лидера». Это можно сравнить с майнингом Биткоина, в котором майнеры борются за единовременный доступ для записи блокчейна. Также PoET не нуждается в специализированном оборудовании для майнинга.
Еще одним новшеством Sawtooth Lake является построение и распространение сделок. Клиент создает транзакции и передает их валидаторам. Валидаторы пакетно группируют транзакции.
Это похожий, но не идентичный процесс, как когда майнеры криптовалюты группируют транзакции в блок. С помощью этой пакетной группировки обработка Sawtooth решает проблему надежной проверки транзакций, которые зависят друг от друга.
Приложения Sawtooth
На сегодняшний день Sawtooth протестирован в нескольких приложениях. Одно из таких приложений – это регистрация перемещения морепродуктов «от океана к столу» с использованием IoT и отслеживания параметров по всей цепочке поставок, от рыбака до супермаркета.
Покупатель может получить доступ к полной и достоверной записи всей живой цепочки. Этот пример использования в цепочке поставок и истории продуктов все чаще обсуждается для блокчейнов.
Sawtooth также протестирован, чтобы упростить процесс передачи облигаций. Разработчики создали пользовательский интерфейс для отслеживания и передачи облигаций. Благодаря этому, пользователи могут управлять целым портфелем облигаций на блокчейне.
Разработчики построили платформу для управления владением цифровыми активами на блокчейне Sawtooth, которая могла бы управлять широким спектром цифровых активов.
Связующим звеном между этим приложением Sawtooth, по-видимому, является рынок цифровых активов любого рода, который встроен в блокчейн и уже имеет графический интерфейс для пользователей.
Несмотря на то, что эти тесты продолжаются, а Sawtooth пользуется широким интересом в отрасли, проект, похоже, набирает меньше популярности, чем вклад IBM в Hyperledger.
Hyperledger Fabric
Fabric разработан для предоставления структуры, с помощью которой предприятия могут создавать свою собственную, индивидуальную сеть блокчейнов, которая может быстро масштабироваться до более чем 1000 транзакций в секунду.
Что такое Fabric и как она работает?
Фреймворк реализован в Go. Он создан для включения консорциумных блокчейнов с различными степенями разрешений. Fabric в значительной степени полагается на смарт контрактную систему Chaincode, которую каждый одноранговый узел сети запускает в контейнерах Docker.
Fabric позволяет предприятиям создавать части блокчейна, если не весь блокчейн, разрешенными. Участники обычно должны зарегистрироваться, чтобы получить разрешение на присоединение и выпуск транзакций на блокчейне на основе Fabric.
Чтобы использовать ресурсы более эффективно, Fabric имеет меньше узлов, чем публичная цепочка, и вычисляет данные массово параллельно, что делает масштабирование Fabric намного лучше, чем публичные блокчейны.
Кроме того, его базовая архитектура поддерживает конфиденциальные данные, предоставляя своим членам больше конфиденциальности, чем они получат в публичном блокчейне.
Возможно, наиболее важным является разделение между так называемыми «Endorsers» и «узлами консенсуса». Если вы знакомы с криптовалютами, такими как Биткойн, вы заметите разделение между майнерами и узлами.
Endorsers имеет состояние и создает, проверяет и распространяет транзакции и код цепочки, в то время как узлы консенсуса заказывают уже проверенные транзакции.
Хотя это разделение не было концепцией первой блокчейн-концепции Сатоши Накамото, но оно стало нежелательной реальностью в большинстве криптовалют, Fabric является одним из первых, кто сделал это разделение принципом конструкции.
Это позволяет Fabric, например, реализовать лучшее разделение труда, так что не каждый одноранговый узел сети должен выполнять ту же самую работу.
Несмотря на отсутствие собственной валюты, Fabric позволяет пользователю определять активы со стороны клиента и использовать их с помощью Fabric Composer.
Структура смарт-контрактов Chaincode Fabric похожа на Ethereum: Chaincode определяет бизнес-логику активов, правила считывания и изменения так называемого состояния активов.
Подобно Ethereum, Fabric поддерживает не набор неизрасходованных выходных данных, как это делает Биткойн, а состояние блокчейна, которое не ограничивается транзакционными данными.
Кроме общедоступных блокчейнов криптовалюты, Fabric позволяет участникам создавать отдельный канал для своих активов и, следовательно, изолировать и сегрегировать транзакции и бухгалтерскую книгу.
Fabric использует инфраструктуру открытых ключей для создания криптографических сертификатов, связанных с организациями и пользователями. Таким образом, можно ограничить доступ к данным и каналам для определенных участников.
Сильной стороной структуры, по-видимому, является высокая степень гибкости в отношении разрешений и конфиденциальности при одновременном обеспечении высокой масштабируемости за счет более сложного разделения труда участников сети.
Для IBM, Fabric служит флагманским проектом по разработке блокчейнов. IT-гигант использует Fabric для различных собственных проектов и для сотрудничества с несколькими деловыми партнерами.
В марте 2017 года IBM запустила IBM Blockchain – сервис, который позволяет разработчикам «быстро создавать и размещать сети с высокой степенью безопасности в блоке IBM Cloud». Этим шагом IBM догоняет Microsoft, которая давно интегрировала блокчейны в свое облако Azure.
Основа неденежной, промышленной технологии блокчейна?
Хотя по Sawtooth и Fabric доступно много информации, о других проектах известно меньше.
Возможно, эти проекты сначала должны развиваться и становиться предметом медиа-релизов, тестов и реальных приложений. Но самые известные проекты, Sawtooth и Fabric, интересны и, похоже, поддерживаются сильными IT-компаниями.
Будет интересно посмотреть, удастся ли Hyperledger соединить эти блокчейны, например, разработав инструменты, которые можно использовать со всеми инфраструктурами блокчейнов Hyperledger.
Вывод
В то время, как большинство других блокчейн проектов ориентированы на криптовалюты и токены, проекты вокруг Hyperledger демонстрируют большой потенциал для создания основы не денежных, масштабируемых промышленных приложений технологии блокчейн.















