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

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

Когда я впервые это кодировал, я столкнулся с ошибками. Их очень много. Но я думаю, что это хорошо, потому что благодаря этому я многому научился. Ошибки существенны. Я дошел до того момента, когда почувствовал, что включение и выключение сделает все лучше. Я чуть не потерял рассудок, но это неотъемлемая часть жизни каждого хакера.

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

Сначала установите Hyperledger composer. Затем установите среду разработки.

Во время установки среды не нужно запускать Playground.

Убедитесь, что докер запущен, и когда вы запустите ./startFabric.sh, это займет пару минут. Так что наберитесь терпения.

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

Шаг 1. Обозначьте свою бизнес-сеть

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

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

$ yo hyperledger-composer

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

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

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

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

Сначала мы определим models / test.cto. Он содержит определения классов для всех активов, участников и транзакций в бизнес-сети. Этот файл написан на языке моделирования Hyperledger Composer Modeling Language.

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. У каждого клиента есть firstName и lastName.

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

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

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

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

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

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

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

$ composer archive create -t dir -n .

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

Шаг 4. Разверните файл архива бизнес-сети на Fabric

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

$ 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.

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

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

В теле ответа вы увидите двух клиентов.

Теперь давайте добавим 2 аккаунта, связанных с этими двумя клиентами.

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

Теперь переведем 75 из Нихарика в Твешу.

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

Альт! Оно работает. У Нихарики сейчас 25, а у Твеши 125.

Шаг 6: угловая передняя часть

Чтобы автоматически создать каркас Angular, выполните следующую команду в папке test-bank:

$ yo

Это задаст несколько вопросов.

И это займет пару минут.

Перейдите в приложение банка.

$ npm start

Это запускает сервер Angular.

Файловая структура Angular создается следующим образом:

В браузере укажите http: // localhost: 4200. Вот где творится волшебство! Вы увидите этот экран:

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

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

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

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

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

Недавно я написал статью о вариантах использования блокчейна. Я перечислил и объяснил около 20 идей. Их можно найти здесь:



Если у вас есть бизнес-идея и вы хотите конкретизировать ее с помощью технологий и архитектурных деталей, не стесняйтесь обращаться ко мне по адресу [email protected]