В этом руководстве рассказывается, как построить простую сеть Hyperledger Fabric с Hyperledger Composer и React.js в качестве интерфейсного веб-приложения.

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

  • В части 1 рассматривается реализация сети блокчейн.
  • Во второй части рассматривается подключение его к интерфейсному веб-приложению React.js. Его можно найти здесь.

Композитор Hyperledger

Hyperledger composer - это инструмент для построения бизнес-сетей с блокчейном на Hyperledger Fabric. Он абстрагирует множество сложностей, связанных с построением сети блокчейн.

Чтобы установить Hyperledger Composer, следуйте инструкциям здесь.

Обзор

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

В системе два участника:

  • Страхователи
  • Страховщики

Страхователи системы хотят сделать следующее:

  • Добавить активы
  • Принять / отклонить предложения по страхованию
  • Предъявлять претензии

Страховщики хотят иметь возможность выполнять следующее:

  • Посмотреть активы, открытые для страхования
  • Делайте страховые предложения
  • Утвердить / отклонить претензии

Страхователи - это люди, которые ищут страховку или уже застрахованы на такие активы, как дом или автомобиль.

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

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

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

Реализация

Если вы еще не установили Hyperledger Composer и его требования, следуйте инструкциям здесь.

Вы можете найти весь код здесь, на GitHub.

Начнем с создания папки, в которой будет храниться наше приложение:

mkdir insurance-application && cd insurance-application

Теперь давайте создадим каркас нашей бизнес-сети с помощью yeoman

yo hyperledger-composer:businessnetwork

Название бизнес-сети: руководство по анализу рисков
Описание: руководство по анализу рисков
Имя автора: ваше имя
Адрес электронной почты автора: ваш адрес электронной почты
Лицензия: Apache-2.0
Пространство имен: org.acme.riskanalysis
Вы хотите создать пустой шаблон сети? Да

cd risk-analysis-tutorial

Выполнение команды ls должно выявить следующие папки и файлы:
- модели
- package.json
- permissions.acl
- README.md

Итак, сначала мы хотим определить участников нашей сети, которые, как мы знаем, являются страхователями и страховщиками. Для этого мы открываем файл org.acme.riskanalysis.cto, который находится в папке моделей.

Страхователи также хотят иметь возможность добавлять активы, такие как дом или автомобиль, поэтому давайте определим актив с именем PrivateAsset, а также перечисление с именем AssetType. PrivateAsset зависит от держателя полиса, который будет лицом, создающим актив. В систему можно добавить только 3 типа активов, которые определяются перечислением AssetType.

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

Затем нам нужно определить наши транзакции для сети.

Вот как должен выглядеть ваш файл полной модели:

Далее нам нужно реализовать наши транзакции, и это будет сделано как цепной код.

Во-первых, вам нужно создать новый каталог с именем lib в домашнем каталоге для нашего проекта композитора Hyperledger, где вы увидите такие файлы, как package.json, или если вы находитесь в каталоге моделей при запуске терминала. следующая команда:

mkdir ../lib/ && cd ../lib/

Теперь внутри каталога lib мы собираемся создать новый файл с именем logic.js, который будет нашим файлом цепного кода.

Давайте сначала реализуем CreateNewAsset. Вы заметите, что мы используем декораторы для предоставления метаданных нашим функциям.

Теперь, когда мы это сделали, давайте проверим, работает ли это.

Во-первых, нам нужно запустить Hyperledger Fabric. Найдите каталог, который вы тоже загрузили, и запустите сценарии следующим образом:

cd ~/fabric-dev-servers
./startFabric.sh
./createPeerAdminCard.sh

Обратите внимание, что вам нужно запускать ./createPeerAdminCard.sh только в том случае, если вы ранее не запускали Hyperledger Fabric или ранее запускали ./teardownFabric.sh.

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

nvm use 8

Теперь вернитесь в каталог руководства по анализу рисков, и мы начнем развертывание версии 0.0.1 нашей сети.

Выполнение этой команды сгенерирует архивный файл бизнес-сети с именем [email protected].

composer archive create -t dir -n .

Затем мы установим нашу бизнес-сеть Composer на одноранговом узле Hyperledger Fabric, который мы настроили.

composer network install --card PeerAdmin@hlfv1 --archiveFile [email protected]

Теперь мы можем запустить нашу бизнес-сеть, что может занять несколько минут.

composer network start --networkName risk-analysis-tutorial --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card

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

composer card import --file networkadmin.card

Чтобы проверить, все ли прошло успешно, просто пингуйте сеть

composer network ping --card admin@risk-analysis-tutorial

Чтобы проверить текущую версию развернутой сети, запустите

composer network ping -c admin@risk-analysis-tutorial | grep Business

Hyperledger Composer может сгенерировать индивидуальный REST API на основе бизнес-сети. Что касается нашей сети, мы просто хотим пока упростить ее, поэтому просто выполните следующую команду, чтобы создать наш REST API.

composer-rest-server -c admin@risk-analysis-tutorial -n never -u true -w true

Теперь вы можете протестировать REST API, перейдя на

http://localhost:3000/explorer

Вам должен быть представлен следующий экран

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

{
  "$class": "org.acme.riskanalysis.Policyholder",
  "id": "joe",
  "name": "Joe",
  "balance": "50000",
  "noClaimsYears": "2"
}

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

{
  "$class": "org.acme.riskanalysis.Policyholder",
  "id": "mary",
  "name": "Mary",
  "balance": "50000",
  "noClaimsYears": "5"
}

Ответ на оба ответа должен был быть 200, если не проверить это сообщение об ошибке и просмотреть свой код на предмет возможных ошибок.

Теперь мы готовы протестировать функцию CreateNewAsset. Для этого перейдите CreateNewAsset ›Post. Давайте создадим для Джо машину стоимостью 2000 и застрахуем ее на 12 месяцев.

{
  "$class": "org.acme.riskanalysis.CreateNewAsset",
  "policyholder": "resource:org.acme.riskanalysis.Policyholder#joe",
  "assetType": "CAR",
  "value": 2000,
  "durationInMonths": 12
}

Код ответа должен быть 200, если все работало правильно. Если нет, проверьте, что все работает, и обратите внимание, что это чувствительно к регистру.

Теперь, если вы перейдете в PrivateAssets ›Get, затем нажмите« Try it out », вы должны увидеть только что созданный актив.

Теперь давайте просто выключим сервер REST, нажав ctrl-c в вашем терминале, и мы закончим писать остальные наши транзакции.

Логика транзакции RiskAnalysis просто проверяет тип актива и количество лет, в течение которых страхователь не имеет требований, а также стоимость актива.

Чтобы проверить это, перейдите в файл package.json и измените номер версии с 0.0.1 на 0.0.2, а затем создайте новый архивный файл бизнес-сети.

composer archive create --sourceType dir --sourceName . -a [email protected]

установите новый файл

composer network install --card PeerAdmin@hlfv1 --archiveFile [email protected]

обновить сеть

composer network upgrade -c PeerAdmin@hlfv1 -n risk-analysis-tutorial -V 0.0.2

Убедитесь, что сеть обновлена ​​до версии: 0.0.2

composer network ping -c admin@risk-analysis-tutorial | grep Business

Затем снова запустите REST-сервер Composer.

composer-rest-server -c admin@risk-analysis-tutorial -n never -u true -w true

Все ваши страхователи и активы, которые вы создали ранее, по-прежнему будут здесь, поэтому нет необходимости настраивать их снова. Давайте получим идентификатор машины, которую мы добавили ранее для Джо. Затем перейдите в RiskAnalysis ›Опубликовать и введите следующую замену ASSETID идентификатором вашего актива.

{
  "$class": "org.acme.riskanalysis.RiskAnalysis",
  "privateAsset": "resource:org.acme.riskanalysis.PrivateAsset#ASSETID"
}

Теперь вернитесь к PrivateAsset ›Get, и вы увидите, что оценка анализа рисков изменилась с 0 на 3.

Затем давайте реализуем MakeInsuranceOffer.

Теперь давайте добавим возможность AcceptInsuranceOffer

Давайте реализуем CreateClaim

Обратите внимание, как эта функция использует запрос. Этот запрос еще не определен, и он просто ищет предложение страхования для этого актива.

Итак, чтобы реализовать этот запрос, создайте новый файл с именем query.qry в каталоге руководства по анализу рисков и добавьте в файл следующие строки.

Нам просто нужна еще одна функция, и это возможность обработки претензии.

Теперь давайте все это протестируем, но сначала давайте обновим файл package.json до версии 0.0.3. Затем выполните следующий набор команд.

composer archive create --sourceType dir --sourceName . -a [email protected]
composer network install --card PeerAdmin@hlfv1 --archiveFile [email protected]
composer network upgrade -c PeerAdmin@hlfv1 -n risk-analysis-tutorial -V 0.0.3

Теперь давайте снова запустим сервер REST API композитора.

composer-rest-server -c admin@risk-analysis-tutorial -n never -u true -w true

Итак, давайте начнем с создания страховой компании.

{
  "$class": "org.acme.riskanalysis.InsuranceCompany",
  "id": "awesomeInsurance",
  "name": "The Awesome Insurance Company",
  "balance": "0.0",
  "insuranceContracts": "0"
}

Теперь вы можете сделать свое первое страховое предложение. Обязательно замените идентификатор актива.

{
  "$class": "org.acme.riskanalysis.MakeInsuranceOffer",
  "policyholder": "resource:org.acme.riskanalysis.Policyholder#joe",
  "insuranceCompany": "resource:org.acme.riskanalysis.InsuranceCompany#awesomeInsurance",
  "privateAsset": "resource:org.acme.riskanalysis.PrivateAsset#joe549963",
"monthlyCost": 100
}

Теперь перейдите в Страховое предложение ›ПОЛУЧИТЬ, и вы должны увидеть свое недавно созданное страховое предложение со статусом« Ожидает рассмотрения ». Запишите идентификатор для следующего шага.

Теперь, используя идентификатор страхового предложения, давайте протестируем принятие этого страхового предложения. Перейдите к AcceptInsuranceOffer ›POST и используйте следующий код, заменив идентификатор предложения своим.

{
  "$class": "org.acme.riskanalysis.AcceptInsuranceOffer",
  "offer": "resource:org.acme.riskanalysis.InsuranceOffer#OFFERID"
}

Теперь вы должны заметить, если перейдете в Страховое предложение ›ПОЛУЧИТЬ и нажмете« Попробовать »! вы должны заметить, что статус предложения по страхованию теперь принят, если все сработало, как показано ниже.

Теперь, когда актив Джо застрахован, давайте проверим, как подать иск. CreateClaim ›POST и введите следующее, заменив идентификатор частного актива своим.

{
  "$class": "org.acme.riskanalysis.CreateClaim",
  "privateAsset": "resource:org.acme.riskanalysis.PrivateAsset#PRIVATEASSETID",
  "policyholder": "resource:org.acme.riskanalysis.Policyholder#joe",
  "description": "Cracked Window",
  "claimValue": 800
}

Если все сработало, теперь вы сможете ПОЛУЧИТЬ это заявление.

Наконец, мы можем проверить возможность обработки этой заявки. Перейдите к ProcessClaim ›POST и не забудьте изменить идентификатор претензии.

{
  "$class": "org.acme.riskanalysis.ProcessClaim",
  "claim": "resource:org.acme.riskanalysis.Claim#CLAIMID",
  "status": "approved"
}

Теперь, когда вы перейдете на Претензия ›ПОЛУЧИТЬ, вы увидите, что ваша заявка одобрена, как показано ниже.

В следующей части мы рассмотрим интеграцию нашей сети Hyperledger Fabric с интерфейсным веб-приложением React.js.

Часть 2 можно найти здесь.

Получайте лучшие предложения по программному обеспечению прямо в свой почтовый ящик