**如果使用Linux安装Hyperledger Composer,请注意以下建议:
su
根。sudo
或su
root来使用它。如果您在Ubuntu上运行,则可以使用以下命令下载先决条件:
如果您在Ubuntu上运行,则可以使用以下命令下载先决条件:
curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.shchmod u+x prereqs-ubuntu.sh
接下来运行脚本 - 因为这个脚本在执行过程中使用了sudo,所以会提示您输入密码。
./prereqs-ubuntu.sh
Composer开发人员有几个有用的CLI工具。最重要的是composer-cli
,它包含了所有必要的操作,所以我们会先安装它。接下来,我们也会拿起generator-hyperledger-composer
,composer-rest-server
并Yeoman
加上generator-hyperledger-composer
。最后3个不是开发环境的核心部分,但如果您遵循教程或开发与您的商业网络交互的应用程序,它们将非常有用,因此我们现在会安装它们。
请注意,您不应该使用su
或sudo
为以下npm命令。
基本的CLI工具:
npm install -g composer-cli
在您的计算机上运行REST服务器以将您的业务网络公开为RESTful API的实用程序:
npm install -g composer-rest-server
生成应用程序资产的有用工具:
npm install -g generator-hyperledger-composer
Yeoman是一种产生应用程序的工具,它利用generator-hyperledger-composer
:
npm install -g yo
如果您已经在线尝试了Composer,则会看到浏览器应用程序“Playground”。您也可以在您的开发机器上本地运行此功能,为您提供查看和演示业务网络的用户界面。
用于简单编辑和测试的浏览器应用商业网络:
npm install -g composer-playground
虽然浏览器应用程序可用于处理商业网络代码,但大多数用户更喜欢在IDE中工作。我们最喜欢的是VSCode
,因为Composer扩展可用。
从此URL安装VSCode:https://code.visualstudio.com/download
打开VSCode,进入扩展,然后Hyperledger Composer
从市场中搜索并安装扩展。
此步骤为您提供本地Hyperledger Fabric运行时来部署您的业务网络。
在您选择的目录中(我们将假设~/fabric-dev-servers
),获取.tar.gz
包含安装Hyperledger Fabric的工具的文件:
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.zip
并tar -xvf
使用该unzip
命令即可。
使用刚刚下载并解压缩的脚本下载本地Hyperledger Fabric运行时:
cd ~/fabric-dev-servers
./downloadFabric.sh
恭喜,您现在已经安装了典型开发环境所需的一切。请继续阅读以了解您在此环境中开展并测试区块链商业网络时最常见的一些事情。
您可以使用一组脚本来控制运行时间,~/fabric-dev-servers
如果您遵循了建议的默认值,那么您将在其中找到这些脚本。
第一次启动一个新的运行时,您需要运行启动脚本,然后生成一个PeerAdmin卡:
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之类的托管平台上运行它。
要启动Web应用程序,请运行:
composer-playground
它通常会自动打开您的浏览器,地址如下:http:// localhost:8080 / login
您应该在Web应用程序的“我的商业网络”屏幕上看到PeerAdmin@hlfv1
您使用该createPeerAdminCard
脚本创建的卡片:如果您没有看到该卡片,则可能没有正确启动您的运行时间!
恭喜你,所有组件都在运行,并且在完成开发会话时,你也知道如何停下来并拆除它们。
如果您已经安装了Hyperledger Composer开发工具,并且希望将安装更新到最新版本的Hyperledger Composer,请按照这些说明进行操作。
任何正在运行的CLI工具实例都应该在继续之前停止。如果您有任何正在运行的Composer REST服务器实例,请确保这些实例在继续之前停止。composer-rest-server
如果您不确定是否有任何正在运行的实例,则可以查找该进程。
卸载所有CLI工具的当前安装版本:
npm uninstall -g composer-cli composer-rest-server generator-hyperledger-composer
安装所有CLI工具的最新版本:
npm install -g composer-cli composer-rest-server generator-hyperledger-composer
如果您在开发机器上安装了浏览器应用程序“Playground”,则还需要进行更新。如果您有任何正在运行的浏览器应用程序实例,请确保在继续之前停止这些实例。composer-playground
如果您不确定是否有任何正在运行的实例,则可以查找该进程。
卸载当前安装的浏览器应用程序版本:
npm uninstall -g composer-playground
安装最新版本的浏览器应用程序:
npm install -g composer-playground
恭喜,您已经使用最新版本的开发工具更新了您的开发环境。您现在可以继续使用最新功能和错误修复来开发您的区块链应用程序!
任何正在运行的CLI工具实例都应该在继续之前停止。如果您有任何正在运行的Composer REST服务器实例,请确保这些实例在继续之前停止。composer-rest-server
如果您不确定是否有任何正在运行的实例,则可以查找该进程。
卸载所有CLI工具的当前安装版本:
npm uninstall -g composer-cli composer-rest-server generator-hyperledger-composer
如果您在开发计算机上安装了浏览器应用程序“Playground”,则还需要卸载此应用程序。如果您有任何正在运行的浏览器应用程序实例,请确保在继续之前停止这些实例。composer-playground
如果您不确定是否有任何正在运行的实例,则可以查找该进程。
卸载当前安装的浏览器应用程序版本:
npm uninstall -g composer-playground
商业网卡存储在商业网络卡商店中,默认情况下它是当前用户主目录中的一个目录。删除此目录以删除所有业务网卡。要注意的是,这也将删除存储在商业网络存储卡中的所有身份(公共证书和私钥),因此您可能希望在继续之前对其进行备份!
删除商业网络卡商店:
rm -rf ~/.composer
您可以使用一组脚本来控制本地Hyperledger Fabric运行时,~/fabric-dev-servers
如果您遵循了建议的默认值,您将在其中找到这些脚本。
停止本地Hyperledger Fabric运行时并删除任何运行时Docker容器或映像:
~/fabric-dev-servers/stopFabric.sh
~/fabric-dev-servers/teardownFabric.sh
卸载本地Hyperledger Fabric运行时:
rm -rf ~/fabric-dev-servers
恭喜,你已经卸载了你的开发环境。要继续开发区块链应用程序,您需要从头开始安装开发工具。
Hyperledger Composer的关键概念是商业网络定义(BND)。它为您的区块链解决方案定义了数据模型,事务逻辑和访问控制规则。要创建一个BND,我们需要在磁盘上创建一个合适的项目结构。
最简单的入门方法是使用Yeoman生成器创建骨架业务网络。这将创建一个包含业务网络的所有组件的目录。
使用Yeoman创建一个骨架业务网络。此命令将需要业务网络名称,说明,作者姓名,作者电子邮件地址,许可证选择和命名空间。
yo hyperledger-composer:businessnetwork
如果为root用户安装,此处可能会报错,设置如下
sed -i -e '/rootCheck/d' "${NPM_CONFIG_PREFIX}/lib/node_modules/yo/lib/cli.js"
export NPM_CONFIG_PREFIX=$(npm config get prefix)
输入 tutorial-network
网络名称以及所需的描述信息,作者姓名和作者电子邮件。
选择 Apache-2.0
作为许可证。
选择 org.example.mynetwork
作为命名空间。
选择 No
当被问及是否生成一个空网络时。
业务网络由资产,参与者,交易,访问控制规则以及可选的事件和查询组成。在前面步骤中创建的骨架业务网络中,有一个model(.cto
)文件,其中将包含业务网络中所有资产,参与者和事务的类定义。骨架业务网络还包含permissions.acl
具有基本访问控制规则的访问控制()文档,logic.js
包含事务处理器功能的脚本()文件以及package.json
包含业务网络元数据的文件。
第一个要更新的文档是model(.cto
)文件。该文件使用Hyperledger Composer建模语言编写。模型文件包含每类资产,交易,参与者和事件的定义。它隐含地扩展了建模语言文档中描述的Hyperledger Composer系统模型。
打开 org.example.mynetwork.cto
模型文件。
用以下内容替换内容:
/*** 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
}
保存您的更改org.example.mynetwork.cto
。
在模型文件中,Trade
定义了事务,指定与资产和参与者的关系。事务处理函数文件包含执行模型文件中定义的事务的Javascript逻辑。
该Trade
交易旨在简单地接受Commodity
正在交易的资产的标识符以及Trader
要设置为新所有者的参与者的标识符。
打开 logic.js
脚本文件。
用以下内容替换内容:
/*** 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);
}
保存您的更改logic.js
。
替换文件中的以下访问控制规则 permissions.acl
:
/*** 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
}
保存您的更改permissions.acl
。
现在已经定义了业务网络,它必须打包到可部署的业务网络存档(.bna
)文件中。
使用命令行,导航到 tutorial-network
目录。
从tutorial-network
目录中运行以下命令:
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通网络以检查它是否正在响应。
要从目录安装业务网络tutorial-network
,请运行以下命令:
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
该composer network install
命令需要一个PeerAdmin业务网卡(在这种情况下,预先创建并导入一个网卡)以及.bna
定义业务网络的文件路径。
要启动业务网络,请运行以下命令:
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
该composer network start
命令需要企业网卡,以及业务网络的管理员身份名称,业务网络的名称和版本以及要创建的文件的名称,以准备将其导入为业务网卡。
要将网络管理员标识导入为可用的业务网卡,请运行以下命令:
composer card import --file networkadmin.card
该composer card import
命令需要指定的文件名composer network start
来创建卡片。
要检查业务网络是否已成功部署,请运行以下命令以ping网络:
composer network ping --card admin@tutorial-network
该composer network ping
命令需要使用企业网卡来识别要ping的网络。
Hyperledger Composer可以基于业务网络生成定制的REST API。为了开发Web应用程序,REST API提供了一个有用的语言无关抽象层。
要创建REST API,请导航到 tutorial-network
目录并运行以下命令:
composer-rest-server
输入 admin@tutorial-network
作为名片。
选择 决不询问是否在生成的API中使用名称空间时使用名称空间。
选择 没有 当被问及是否保护生成的API。
选择 是 当被问及是否启用事件发布时。
选择 没有 当被问及是否启用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应用程序。
要创建您的Angular 4应用程序,请导航至 tutorial-network
目录并运行以下命令:
yo hyperledger-composer:angular
选择 是 当被要求连接到运行业务网络时。
输入标准package.json
问题(项目名称,说明,作者姓名,作者电子邮件,许可证)
输入 admin@tutorial-network
为商业网卡。
选择连接到现有的REST API
输入 http://localhost
为REST服务器地址。
输入 3000
用于服务器端口。
选择名称空间不被使用
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
。
启动浏览器并转到给定的URL(http://0.0.0.0:3000/explorer)。你会看到类似这样的屏幕。