Hyperledger-composer的使用逻辑

本文重要描述使用hyperledger-composer开发基于fabric的商业网络(chaincode)的逻辑,对于fabric网络的搭建只进行简略的描述

架构图

Hyperledger-composer的架构图

1. 创建business network


 导入business network的参考实例,在其上进行定制化的改写。

.通过下面的命令引入基本的样板,其中包含了model,participant,transaction,ACL,以及附加于transaction之上的回调函数

git clone https://github.com/hyperledger/composer-sample-networks.git

解压后进入下面的目录

➜  composer-sample-networks git:(master) ls

LICENSE      README.md    lerna.json  node_modules package.json packages    scripts

➜  composer-sample-networks git:(master) cd packages

➜  packages git:(master) ls

animaltracking-network    bond-network              digitalproperty-network  perishable-network

basic-sample-network      carauction-network        marbles-network          vehicle-lifecycle-network

以basic-sample-network为例查看如何定制化自身的商业网络

➜  basic-sample-network git:(master) ls

README.md      dist            header.txt      jsdoc.conf              logs            node_modules    permissions.acl  config          features        index.js        lib            models          package.json    test

其中我们需要修改的文件主要有package.json(项目的启动测试命令,名称,依赖环境等),permissions.acl(CURD权限的限定),models/sample.cto(asset定义,asset操作者的定义,asset操作动作的定义(如交易)),lib/sample.js(asset操作动作执行之后需要执行的操作,类似回调函数)。

单元测试3中生成,修改后的商业网络逻辑

首先下载依赖库

➜  basic-sample-network git:(master) cnpm install

执行测试逻辑

➜  basic-sample-network git:(master) npm test

得到全部passing则为测试成功

打包上文中构建的商业网络

basic-sample-networkgit:(mastercomposer archive create -a dist/simple-network.bna--sourceType dir --sourceName .

distgit:(masterls

basic-sample-network.bna 

此文件即为生成的商业网络文件,包含了上述的各种配置

2. 构建测试环境


此时有两种选择,一种选择本地化部署local-play-ground,另一种选择为使用online-play-ground来进行部署测试. 具体的部署请参考蓝色的链接。

如下图所示,点击左下角的红圈,将上一步骤产生的bna文件进行导入。

play-ground示意图

导入后的结果如下图所示,可以看到我们之前主要定义的文件都在左侧有所显示。如果要进行测试,请点击Test按钮,可以进行模拟的测试。

导入模板后的play-ground示意图

最后需要说明的是,如果使用online-play-ground的话,所有的运行默认是跑在浏览器的内存中。在local-play-ground中,可以选择跑在浏览器的内存之中,也可以实际链接到某个区块链网络之中。如下图所示,通过点击右上角圆圈所示的按钮,进入到配置链接网络界面,左边方形按钮中列举了所有可用的fabric网络(web browser为在浏览器中模拟运行,hlfabric为导入的本地区块链网络),现在我们选择的是hlfabric的网络。在中间菱形的部分即为我们现在链接fabric网络的属性,包含order地址,MSPID,ca地址等等的信息。 如果要导入新的网络,左侧红色方框下方进行操作即可(导入什么?请看这里connection profile

3. 启动本Fabric网络以及composer相关工具的安装

如何启动本地fabric网络,不是本文的重点,请参见下面的链接

https://hyperledger.github.io/composer/installing/development-tools.html

在部署之前,我们需要安装composer给我们提供的一些依赖包,从而方便的通过SDK与fabric网络进行交互

安装composer-cli

cnpm install -g composer-cli

包含了所有通过命令行进行商业网络构建的指令

安装generator-hyperledger-composer

cnpm install -g generator-hyperleger-composer

其实一个yoeman的插件,通过这个插件可以快速构造基于Rest的调用

安装composer-rest-server

cnpm install -g composer-rest-server

基于loopback的插件,基于其可以快速构建对于商业网络中model的rest格式调用,并以web页面的形式呈现

安装yoeman文件

cnpm install -g yo

其是一个能够快速生成application的工具(如angular),和generator-hyperledger-composer进行结合使用能够使得生成的application和商业网络进行交互。

4. 部署到Fabric网络之中


部署

测试完毕,Fabric网络搭建完毕以后,我们接下来要做的就是将我们的商业网络部署到其之上。

distgit:(mastercomposer network deploy -a my-network.bna -p hlfv1 -i admin -s adminpw

其中my-network.bna是我们在步骤1中创建的商业网络定义文件,hlfv1为我们在步骤3中创建的fabric本地网络,利用其生成的connection profile连接。

部署完毕后出现以下的内容表示成功

✔ Deploying business network definition. This may take a minute...

Command succeeded

5. 与部署到Fabric网络之中的商业逻辑(Chaincode)进行交互


在进行这一步之前,我们再来看一个逻辑图

hyperledger-composer项目示意图

通过这图我们可以看出,我们利用前端的restAPI接口调用中间层(play grouand等),然后中间层利用SDK与后端真实的Fabric网络进行交互。我们接下来解决的就是建立Restful接口,SDK会在相应的程序中自动加载。

1.  方案1建立angular前端应用以及Rest Server进行连接

basic-sample-networkgit:(masteryo hyperledger-composer


2.  只利用Rest-server

basic-sample-networkgit:(mastercomposer-rest-server

basic-sample-networkgit:(master

composer-rest-server

参考:https://hyperledger.github.io/composer/tutorials/developer-guide.html

推荐阅读更多精彩内容