热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

区块链HyperledgerComposer环境安装一(整理版)

HyperledgerComposer环境安装1.安装基本软件包**如果使用Linux安装HyperledgerComposer,请注意以下建议:以

Hyperledger Composer 环境安装


1. 安装基本软件包


**如果使用Linux安装Hyperledger Composer,请注意以下建议:


  • 以普通用户身份登录,而不是root用户。否则后续有很多问题
  • 不要su根。
  • 安装先决条件时,使用curl,然后使用sudo进行解压缩。
  • 以普通用户身份运行prereqs-ubuntu.sh。它可能会提示输入root密码,因为它的某些操作需要以root身份运行。
  • 不要使用npm sudosuroot来使用它。
  • 避免以root身份全局安装节点。**

如果您在Ubuntu上运行,则可以使用以下命令下载先决条件:

如果您在Ubuntu上运行,则可以使用以下命令下载先决条件:


Copy复制

curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.shchmod u+x prereqs-ubuntu.sh

接下来运行脚本 - 因为这个脚本在执行过程中使用了sudo,所以会提示您输入密码。


Copy复制

./prereqs-ubuntu.sh



2.安装组件



第1步:安装CLI工具

Composer开发人员有几个有用的CLI工具。最重要的是composer-cli,它包含了所有必要的操作,所以我们会先安装它。接下来,我们也会拿起generator-hyperledger-composer,composer-rest-serverYeoman加上generator-hyperledger-composer最后3个不是开发环境的核心部分,但如果您遵循教程或开发与您的商业网络交互的应用程序,它们将非常有用,因此我们现在会安装它们。

请注意,您不应该使用susudo为以下npm命令。


  1. 基本的CLI工具:

    Copy复制

    npm install -g composer-cli

  2. 在您的计算机上运行REST服务器以将您的业务网络公开为RESTful API的实用程序:

    Copy复制

    npm install -g composer-rest-server

  3. 生成应用程序资产的有用工具:

    Copy复制

    npm install -g generator-hyperledger-composer

  4. Yeoman是一种产生应用程序的工具,它利用generator-hyperledger-composer:

    Copy复制

    npm install -g yo


第2步:安装游乐场

如果您已经在线尝试了Composer,则会看到浏览器应用程序“Playground”。您也可以在您的开发机器上本地运行此功能,为您提供查看和演示业务网络的用户界面。


  1. 用于简单编辑和测试的浏览器应用商业网络:

    Copy复制

    npm install -g composer-playground


第3步:设置您的IDE

虽然浏览器应用程序用于处理商业网络代码,但大多数用户更喜欢在IDE中工作。我们最喜欢的是VSCode,因为Composer扩展可用。


  1. 从此URL安装VSCode:https://code.visualstudio.com/download

  2. 打开VSCode,进入扩展,然后Hyperledger Composer从市场中搜索并安装扩展。


步骤4:安装超级结构结构

此步骤为您提供本地Hyperledger Fabric运行时来部署您的业务网络。


  1. 在您选择的目录中(我们将假设~/fabric-dev-servers),获取.tar.gz包含安装Hyperledger Fabric的工具文件:

    Copy复制

    mkdir ~/fabric-dev-servers && cd ~/fabric-dev-serverscurl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
    tar -xvf fabric-dev-servers.tar.gz

    zip如果您愿意,也可以使用A :只需使用上面的代码片段中命令替换.tar.gz文件fabric-dev-servers.ziptar -xvf使用该unzip命令即可。

  2. 使用刚刚下载并解压缩的脚本下载本地Hyperledger Fabric运行时:

    Copy复制

    cd ~/fabric-dev-servers
    ./downloadFabric.sh


恭喜,您现在已经安装了典型开发环境所需的一切。请继续阅读以了解您在此环境中开展并测试区块链商业网络时最常见的一些事情。



控制你的开发环境


启动和停止Hyperledger结构

您可以使用一组脚本来控制运行时间,~/fabric-dev-servers如果您遵循了建议的默认值,那么您将在其中找到这些脚本

第一次启动一个新的运行时,您需要运行启动脚本,然后生成一个PeerAdmin卡:


Copy复制

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

您可以使用启动和停止运行时~/fabric-dev-servers/stopFabric.sh,然后再次启动它~/fabric-dev-servers/startFabric.sh

在开发阶段结束时,你运行~/fabric-dev-servers/stopFabric.sh然后~/fabric-dev-servers/teardownFabric.sh请注意,如果您已经运行了拆卸脚本,那么下次启动运行时,就需要像第一次启动时那样创建一个新的PeerAdmin卡。


本地运行时旨在频繁启动,停止和拆除,以供开发使用。如果您正在寻找具有更持久状态的运行时,则需要在开发环境外部运行一个运行时环境,并将业务网络部署到该环境。这方面的例子包括通过Kubernetes运行它,或者在诸如IBM Cloud之类的托管平台上运行它。



启动网络应用程序(“Playground”)

要启动Web应用程序,请运行:


Copy复制

composer-playground

它通常会自动打开您的浏览器,地址如下:http:// localhost:8080 / login

您应该在Web应用程序的“我的商业网络”屏幕上看到PeerAdmin@hlfv1您使用该createPeerAdminCard脚本创建卡片:如果您没有看到该卡片,则可能没有正确启动您的运行时间!


恭喜你,所有组件都在运行,并且在完成开发会话时,你也知道如何停下来并拆除它们。




3.更新开发环境

如果您已经安装了Hyperledger Composer开发工具,并且希望将安装更新到最新版本的Hyperledger Composer,请按照这些说明进行操作。


更新组件


第1步:更新CLI工具

任何正在运行的CLI工具实例都应该在继续之前停止。如果您有任何正在运行的Composer REST服务器实例,请确保这些实例在继续之前停止。composer-rest-server如果您不确定是否有任何正在运行的实例,则可以查找该进程


  1. 卸载所有CLI工具的当前安装版本:

    Copy复制

    npm uninstall -g composer-cli composer-rest-server generator-hyperledger-composer

  2. 安装所有CLI工具的最新版本:

    Copy复制

    npm install -g composer-cli composer-rest-server generator-hyperledger-composer


第2步:更新Playground

如果您在开发机器上安装了浏览器应用程序“Playground”,则还需要进行更新。如果您有任何正在运行的浏览器应用程序实例,请确保在继续之前停止这些实例。composer-playground如果您不确定是否有任何正在运行的实例,则可以查找该进程


  1. 卸载当前安装的浏览器应用程序版本:

    Copy复制

    npm uninstall -g composer-playground

  2. 安装最新版本的浏览器应用程序:

    Copy复制

    npm install -g composer-playground


恭喜,您已经使用最新版本的开发工具更新了您的开发环境。您现在可以继续使用最新功能和错误修复来开发您的区块链应用程序!












4. 卸载组件(不需要重新安装跳过这一步)


第1步:卸载CLI工具

任何正在运行的CLI工具实例都应该在继续之前停止。如果您有任何正在运行的Composer REST服务器实例,请确保这些实例在继续之前停止。composer-rest-server如果您不确定是否有任何正在运行的实例,则可以查找该进程


  1. 卸载所有CLI工具的当前安装版本:

    Copy复制

    npm uninstall -g composer-cli composer-rest-server generator-hyperledger-composer


第2步:卸载Playground

如果您在开发计算机上安装了浏览器应用程序“Playground”,则还需要卸载此应用程序。如果您有任何正在运行的浏览器应用程序实例,请确保在继续之前停止这些实例。composer-playground如果您不确定是否有任何正在运行的实例,则可以查找该进程


  1. 卸载当前安装的浏览器应用程序版本:

    Copy复制

    npm uninstall -g composer-playground


第3步:删除业务网卡存储

商业网卡存储在商业网络卡商店中,默认情况下它是当前用户主目录中的一个目录。删除此目录以删除所有业务网卡。要注意的是,这也将删除存储在商业网络存储卡中的所有身份(公共证书和私钥),因此您可能希望在继续之前对其进行备份!


  1. 删除商业网络卡商店:

    Copy复制

    rm -rf ~/.composer


步骤4:卸载Hyperledger Fabric

您可以使用一组脚本来控制本地Hyperledger Fabric运行时,~/fabric-dev-servers如果您遵循了建议的默认值,您将在其中找到这些脚本


  1. 停止本地Hyperledger Fabric运行时并删除任何运行时Docker容器或映像:

    Copy复制

    ~/fabric-dev-servers/stopFabric.sh
    ~/fabric-dev-servers/teardownFabric.sh

  2. 卸载本地Hyperledger Fabric运行时:

    Copy复制

    rm -rf ~/fabric-dev-servers


恭喜,你已经卸载了你的开发环境。要继续开发区块链应用程序,您需要从头开始安装开发工具。




5. 开发教程


第一步:创建业务网络结构

Hyperledger Composer的关键概念是商业网络定义(BND)它为您的区块链解决方案定义了数据模型,事务逻辑和访问控制规则。要创建一个BND,我们需要在磁盘上创建一个合适的项目结构。

最简单的入门方法是使用Yeoman生成器创建骨架业务网络。这将创建一个包含业务网络的所有组件的目录。


  1. 使用Yeoman创建一个骨架业务网络。此命令将需要业务网络名称,说明,作者姓名,作者电子邮件地址,许可证选择和命名空间。

    Copy复制

    yo hyperledger-composer:businessnetwork

  2. 如果为root用户安装,此处可能会报错,设置如下

  3. sed -i -e '/rootCheck/d' "${NPM_CONFIG_PREFIX}/lib/node_modules/yo/lib/cli.js"
    export NPM_CONFIG_PREFIX=$(npm config get prefix) 

  4. 输入 tutorial-network 网络名称以及所需的描述信息,作者姓名和作者电子邮件。

  5. 选择 Apache-2.0 作为许可证。

  6. 选择 org.example.mynetwork 作为命名空间。

  7. 选择 No 当被问及是否生成一个空网络时。


第二步:定义一个商业网络

业务网络由资产,参与者,交易,访问控制规则以及可选的事件和查询组成。在前面步骤中创建的骨架业务网络中,有一个model(.cto)文件,其中将包含业务网络中所有资产,参与者和事务的类定义。骨架业务网络还包含permissions.acl具有基本访问控制规则的访问控制()文档,logic.js包含事务处理器功能的脚本()文件以及package.json包含业务网络元数据文件。


建模资产,参与者和交易

第一个要更新的文档是model(.cto)文件。该文件使用Hyperledger Composer建模语言编写模型文件包含每类资产,交易,参与者和事件的定义。它隐含地扩展了建模语言文档中描述的Hyperledger Composer系统模型。


  1. 打开 org.example.mynetwork.cto 模型文件。

  2. 用以下内容替换内容:

    Copy复制

    /*** My commodity trading network*/
    namespace org.example.mynetwork
    asset Commodity identified by tradingSymbol {o String tradingSymbolo String descriptiono String mainExchangeo Double quantity--> Trader owner
    }
    participant Trader identified by tradeId {o String tradeIdo String firstNameo String lastName
    }
    transaction Trade {--> Commodity commodity--> Trader newOwner
    }

  3. 保存您的更改org.example.mynetwork.cto


添加Javascript事务逻辑

在模型文件中,Trade定义事务,指定与资产和参与者的关系。事务处理函数文件包含执行模型文件中定义的事务的Javascript逻辑。

Trade交易旨在简单地接受Commodity正在交易资产的标识符以及Trader要设置为新所有者参与者的标识符


  1. 打开 logic.js 脚本文件。

  2. 用以下内容替换内容:

    Copy复制

    /*** Track the trade of a commodity from one trader to another* @param {org.example.mynetwork.Trade} trade - the trade to be processed* @transaction*/
    async function tradeCommodity(trade) {trade.commodity.owner = trade.newOwner;let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');await assetRegistry.update(trade.commodity);
    }

  3. 保存您的更改logic.js


添加访问控制


  1. 替换文件中的以下访问控制规则 permissions.acl :

    Copy复制

    /*** Access control rules for tutorial-network*/
    rule Default {description: "Allow all participants access to all resources"participant: "ANY"operation: ALLresource: "org.example.mynetwork.*"action: ALLOW
    }rule SystemACL {description: "System ACL to permit all access"participant: "ANY"operation: ALLresource: "org.hyperledger.composer.system.**"action: ALLOW
    }

  2. 保存您的更改permissions.acl


第三步:生成业务网络存档

现在已经定义了业务网络,它必须打包到可部署的业务网络存档(.bna)文件中。


  1. 使用命令行,导航到 tutorial-network 目录。

  2. tutorial-network目录中运行以下命令:

    Copy复制

    composer archive create -t dir -n .

该命令运行后,tutorial-network@0.0.1.bna在该tutorial-network目录中创建了一个调用的业务网络存档文件


第四步:部署业务网络

创建.bna文件后,业务网络可以部署到Hyperledger Fabric实例。通常情况下,来自Fabric管理员的信息需要创建一个PeerAdmin身份,具有将链接代码安装到对等体的权限以及在composerchannel通道上启动链接代码的权限但是,作为开发环境安装的一部分,PeerAdmin已经创建了一个身份。

业务网络安装完成后,网络就可以启动。为了最佳实践,应该创建一个新的标识以在部署后管理业务网络。这个身份被称为网络管理员。


检索正确的凭证

一个PeerAdmin有正确的凭据业务网络卡已为开发环境安装的一部分创建的。


部署业务网络

将业务网络部署到Hyperledger Fabric需要在对等设备上安装Hyperledger Composer业务网络,然后才能启动业务网络,并且必须创建新参与者,身份和关联卡才能成为网络管理员。最后,必须导入网络管理员业务网卡才能使用,然后可以ping通网络以检查它是否正在响应。


  1. 要从目录安装业务网络tutorial-network,请运行以下命令:

    Copy复制

    composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna

    composer network install命令需要一个PeerAdmin业务网卡(在这种情况下,预先创建并导入一个网卡)以及.bna定义业务网络的文件路径

  2. 要启动业务网络,请运行以下命令:

    Copy复制

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

    composer network start命令需要企业网卡,以及业务网络的管理员身份名称,业务网络的名称和版本以及要创建的文件的名称,以准备将其导入为业务网卡。

  3. 要将网络管理员标识导入为可用的业务网卡,请运行以下命令:

    Copy复制

    composer card import --file networkadmin.card

    composer card import命令需要指定的文件名composer network start来创建卡片。

  4. 要检查业务网络是否已成功部署,请运行以下命令以ping网络:

    Copy复制

    composer network ping --card admin@tutorial-network

composer network ping命令需要使用企业网卡来识别要ping的网络。


第五步:生成REST服务器

Hyperledger Composer可以基于业务网络生成定制的REST API。为了开发Web应用程序,REST API提供了一个有用的语言无关抽象层。


  1. 要创建REST API,请导航到 tutorial-network 目录并运行以下命令:

    Copy复制

    composer-rest-server

  2. 输入 admin@tutorial-network 作为名片。

  3. 选择 决不询问是否在生成的API中使用名称空间时使用名称空间。

  4. 选择 没有 当被问及是否保护生成的API。

  5. 选择 当被问及是否启用事件发布时。

  6. 选择 没有 当被问及是否启用TLS安全。

Enter the name of the business network card to use: admin@tutorial-network
Specify if you want namespaces in the generated REST API: never use namespaces
Specify if you want to use an API key to secure the REST API: No
Specify if you want to enable authentication for the REST API using Passport: No
Specify if you want to enable event publication over WebSockets: Yes
Specify if you want to enable TLS security for the REST API: No

生成的API连接到部署的区块链和业务网络。


第六步:生成一个应用程序

Hyperledger Composer还可以生成针对REST API运行的Angular 4应用程序。


  1. 要创建您的Angular 4应用程序,请导航至 tutorial-network 目录并运行以下命令:

    Copy复制

    yo hyperledger-composer:angular

  2. 选择 当被要求连接到运行业务网络时。

  3. 输入标准package.json问题(项目名称,说明,作者姓名,作者电子邮件,许可证)

  4. 输入 admin@tutorial-network 为商业网卡。

  5. 选择连接到现有的REST API

  6. 输入 http://localhost 为REST服务器地址。

  7. 输入 3000 用于服务器端口。

  8. 选择名称空间不被使用


npm install 可能会报错

npm ERR! Unexpected end of JSON input while parsing near '...m":">=3"},"_hasShrink'

设置淘宝镜像
npm config set registry https://registry.npm.taobao.org
npm cache clear --force
再npm install

然后,Angular generator将为该项目创建脚手架并安装所有依赖项。要运行该应用程序,请导航到您的角度项目目录并运行 npm start 这将引发一个针对您的REST API运行的Angular 4应用程序 http://localhost:4200




查看生成的API

启动浏览器并转到给定的URL(http://0.0.0.0:3000/explorer)。你会看到类似这样的屏幕。






推荐阅读
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上安装和配置 MySQL、Tomcat 和 JDK 的步骤。通过本文,您将了解如何顺利安装这些组件,并确保它们能够正常协同工作。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 在Ubuntu 16.10 (x86) 上安装 WordPress 4.7.115
    本文介绍如何在Ubuntu 16.10 (x86) 系统上安装WordPress 4.7.115,包括下载、解压、配置等步骤,确保安装过程顺利进行。 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
    湖上湖返回与带有给定字符串名的类或接口相关联的Class对象。调用此方法等效于:Class.forName(className,true,currentLoader) ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
author-avatar
江游弈一个
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有