HyperLedger Fabric — это бизнес-проект Blockchain, поддерживаемый Linux Foundation. Это платформа для распределенных реестров, основанная на модульной архитектуре, обеспечивающая высокий уровень конфиденциальности, отказоустойчивости, гибкости и масштабируемости. Он предназначен для поддержки подключаемых реализаций различных компонентов и учета сложности и запутанности, существующих в экономической экосистеме.

Мы собираемся создать цифровой банк с помощью Hyperledger Composer. У него будут клиенты и счета. В конце вы сможете переводить средства и записывать все транзакции в блокчейне. Мы предоставим RESTful API для того же, чтобы даже человек, который понятия не имеет, что такое блокчейн, мог создать вокруг него красивый пользовательский интерфейс (UI). Мы также создадим пользовательский интерфейс этого приложения в Angular.

Давайте начнем:

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

Установите предварительные условия: https://hyperledger.github.io/composer/installing/installing-prereqs.html

Установите среду разработки:https://hyperledger.github.io/composer/installing/development-tools.html

теперь перейдите в папку Fabric-tools и запустите ./downloadFabric.sh это займет некоторое время после загрузки этого запуска ./startFabric.sh это также займет некоторое время после этого запуска ./createPeerAdminCard.sh создаст визитную карточку.

Теперь, когда ваша машина настроена, мы можем начать программировать.

Шаг 1: Опишите свою бизнес-сеть

Наше определение бизнес-сети (BND) состоит из модели данных, логики транзакций и правил контроля доступа. Модель данных и правила контроля доступа закодированы на предметно-ориентированном языке (что очень просто понять). Логика транзакций будет написана на JavaScript.

Чтобы создать BND, нам нужно создать подходящую структуру проекта на диске. Мы создадим каркас бизнес-сети с помощью Yeoman. Чтобы создать структуру проекта, откройте терминал и выполните следующую команду:

$ yo hyperledger-composer

Это вызовет серию вопросов следующим образом. Вам нужно будет использовать клавиши со стрелками для навигации по ответам.

Откройте этот проект в вашем любимом текстовом редакторе. Я использую визуальный код. Вот как будет выглядеть файловая структура:

Удалите содержимое файла test/logic.js. Мы не будем использовать его в данный момент.

Шаг 2.1: Кодирование нашей бизнес-сети (models/test.cto)

Сначала мы определим models/test.cto. Он содержит определения классов для всех активов, участников и транзакций в бизнес-сети. Этот файл написан на https://hyperledger.github.io/composer/reference/cto_language.html.

namespace test
asset Account identified by accountId {
o String accountId
--> Customer owner
o Double balance
}
participant Customer identified by customerId {
o String customerId
o String firstName
o String lastName
}
transaction AccountTransfer {
--> Account from
--> Account to
o Double amount
}

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

Клиент – это участник, который однозначно идентифицируется с помощью customerId. У каждого Клиента есть имя и фамилия.

Передача аккаунта – это транзакция, которая может происходить в и из аккаунта. А сколько денег нужно перевести, хранится в сумме.

Шаг 2.2: Кодирование бизнес-сети (lib/logic.js)

В этом файле мы добавим логику транзакций в JavaScript.

/**
* Sample transaction
* @param {test.AccountTransfer} accountTransfer
* @transaction
*/
function accountTransfer(accountTransfer) {
if (accountTransfer.from.balance < accountTransfer.to.balance) {
throw new Error ("Insufficient funds");
}
accountTransfer.from.balance -= accountTransfer.amount;
accountTransfer.to.balance += accountTransfer.amount;
return getAssetRegistry('test.Account')
.then (function (assetRegistry) {
return assetRegistry.update(accountTransfer.from);
})
.then (function () {
return getAssetRegistry('test.Account');
})
.then(function (assetRegistry) {
return assetRegistry.update(accountTransfer.to);
});
}

@param {test.AccountTransfer} accountTransfer — это декоратор, который мы поместили в начало файла, чтобы связать транзакцию с нашей функцией JavaScript. Затем мы проверяем, достаточно ли денег на счету, где находятся средства. В противном случае будет выброшена ошибка. Затем мы выполняем базовое сложение и вычитание на балансе счета.

На данный момент наиболее важным шагом является обновление этого в блокчейне. Для этого мы вызываем getAssetRegistry API наших активов, которым является Account. Затем мы обновляем полученный assetRegistry как для учетной записи, распределяющей средства, так и для учетной записи, получающей средства.

Шаг 3. Создание архива бизнес-сети (BNA)

Теперь, когда бизнес-сеть определена, ее необходимо упаковать в развертываемый файл архива бизнес-сети (.bna).

Шаг 3.1: Перейдите в приложение банка тестов в своем терминале.

Шаг 3.2: Запустите следующую команду:

$ composer archive create -t dir -n . 

Это создает файл .bna в папке test-bank.

Шаг 4.1. Установите среду выполнения composer

$ composer runtime install --card PeerAdmin@hlfv1 --businessNetworkName test-bank

Шаг 4.2. Разверните бизнес-сеть

$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile [email protected] --file networkadmin.card

Шаг 4.3. Импортируйте удостоверение сетевого администратора в качестве пригодной для использования корпоративной сетевой карты

$ composer card import --file networkadmin.card

Шаг 4.4.Чтобы убедиться, что бизнес-сеть успешно развернута,запустите следующую команду, чтобы проверить связь с сетью:

$ composer network ping --card admin@test-bank

ШАГ 5. Предоставьте доступ к RESTful API

Чтобы создать RESTful API из командной строки, выполните следующую команду:

$ composer-rest-server

Это вызовет массу вопросов.

Теперь укажите в браузере http://localhost:3000/explorer. Вы увидите свой красивый блокчейн API.

Во-первых, давайте добавим клиента по имени Абхишек Кумар:

Получаем код ответа 200.

Теперь аналогичным образом добавим клиента по имени Сатиш Кумар.

Чтобы проверить, правильно ли вы их добавили, ПОЛУЧИТЕ их. Теперь давайте добавим двух клиентов.

затем добавьте данные тестовой учетной записи:

Получаем код ответа 200.

Давайте проверим, обновляется ли баланс, получив информацию об учетной записи.

Шаг 6: Угловой передний конец

Для автоматического создания скаффолдинга Angular выполните следующую команду в папке test-bank:

$ yo

файлы будут выглядеть

теперь запустите npm, он откроется на http://localhost:4200

вы увидите ниже экран

Теперь перейдите в раздел Активы в правом верхнем углу и нажмите Учетная запись.

Это именно те учетные записи, которые мы создали.

Итак, теперь вы можете поиграть с этим.

У вас есть ваш интерфейс и ваш сервер готовы!

Все транзакции, происходящие на локальном хосте: 3000, отражаются на локальном хосте: 4200 и наоборот. И все это на блокчейне.