Hyperledger Composer之开发部署业务网络(方式一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27818541/article/details/77479600

由于官方文档跟新很快,本文部分步骤已经过时,最新部署方式请移步这里
部署到单组织的区块链上
部署到多组织的区块链上

先确保满足下列环境要求

Operating Systems: Ubuntu Linux 14.04 / 16.04 LTS (both 64-bit), or Mac OS 10.12
Docker Engine: Version 17.03 or higher
Docker-Compose: Version 1.8 or higher
Node: 8.9 or higher (note version 9 is not supported)
npm: v5.x
git: 2.9.x or higher
Python: 2.7.x
A code editor of your choice, we recommend VSCode.推荐 VSCode. 

安装Hyperledger Composer开发工具

just copy and paste:

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

启动Hyperledger Fabric网络

下载fabric 工具(默认地址: ~/fabric-tools, 可以自定义):

mkdir ~/fabric-tools && cd ~/fabric-tools

curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
unzip fabric-dev-servers.zip

声明使用1.0版本的fabric(默认hlfv1):

export FABRIC_VERSION=hlfv1

生成composer连接配置文件:

cd ~/fabric-tools
./downloadFabric.sh
./startFabric.sh

此时fabric网络已经开启了,配置文件也生成了。网络由1个ca+1个order+1个peer+1个couchdb组成:

CONTAINER ID        IMAGE                                                    COMMAND                  CREATED             STATUS              PORTS                                            NAMES
51453364229e        hyperledger/fabric-peer:x86_64-1.0.0                     "peer node start -..."   2 hours ago         Up 2 hours          0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer0.org1.example.com
c769742bb485        hyperledger/fabric-couchdb:x86_64-1.0.0                  "tini -- /docker-e..."   2 hours ago         Up 2 hours          4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp       couchdb
85a3c96fffd3        hyperledger/fabric-orderer:x86_64-1.0.0                  "orderer"                2 hours ago         Up 2 hours          0.0.0.0:7050->7050/tcp                           orderer.example.com
c8b231dd31ee        hyperledger/fabric-ca:x86_64-1.0.0                       "sh -c 'fabric-ca-..."   2 hours ago         Up 2 hours          0.0.0.0:7054->7054/tcp                           ca.org1.example.com

创建一个Business Network Definition,并生成.bna文件

这里借用下官方示例。

在你的工作目录下,clone官方示例:

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

复制其中一个demo到工作目录下:

cp -r ./composer-sample-networks/packages/basic-sample-network/  ./

对于.cto .js .acl等文件,你可以按照自己的业务逻辑来修改。这里作为演示,就没修改。

生成bna文件:

cd basic-sample-network
npm install

运行结果:

 ......

Creating Business Network Archive


Looking for package.json of Business Network Definition
    Input directory: /work/project/hyper/ttt

Found:
    Description: The Hello World of Hyperledger Composer samples
    Name: basic-sample-network
    Identifier: basic-sample-network@0.1.6

Written Business Network Definition Archive file to 
    //***  bna路径
    Output file: ./dist/basic-sample-network.bna

Command succeeded

部署.bna文件

cd dist/
composer network deploy -a basic-sample-network.bna -p hlfv1 -i PeerAdmin -s randomString

(等待一段时间)运行结果:

这里写图片描述

检测部署

composer network ping -n basic-sample-network -p hlfv1 -i admin -s adminpw

运行结果:

这里写图片描述

此时查看网络:

CONTAINER ID        IMAGE                                                    COMMAND                  CREATED             STATUS              PORTS                                            NAMES
8727288aa912        dev-peer0.org1.example.com-basic-sample-network-0.11.2   "chaincode -peer.a..."   About an hour ago   Up About an hour                                                     dev-peer0.org1.example.com-basic-sample-network-0.11.2
51453364229e        hyperledger/fabric-peer:x86_64-1.0.0                     "peer node start -..."   2 hours ago         Up 2 hours          0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer0.org1.example.com
c769742bb485        hyperledger/fabric-couchdb:x86_64-1.0.0                  "tini -- /docker-e..."   2 hours ago         Up 2 hours          4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp       couchdb
85a3c96fffd3        hyperledger/fabric-orderer:x86_64-1.0.0                  "orderer"                2 hours ago         Up 2 hours          0.0.0.0:7050->7050/tcp                           orderer.example.com
c8b231dd31ee        hyperledger/fabric-ca:x86_64-1.0.0                       "sh -c 'fabric-ca-..."   2 hours ago         Up 2 hours          0.0.0.0:7054->7054/tcp                           ca.org1.example.com

注意:此时多了一个chaincode容器dev-peer0.org1.example.com-basic-sample-network-0.11.2,可以推测composer在底层会把lib文件夹下的.js文件编译成chaincode来部署。

生成 REST API

进入到basic-sample-network目录下:

composer-rest-server

运行效果(部分参数是由我们来指定的):

这里写图片描述

进入http://localhost:3000/explorer,查看效果:

这里写图片描述

接下来你可以愉悦对进行下面操作:

Assent:   增删改查
Participant:增删改查
Transaction: 提交交易
System:  身份管理以及历史交易记录查询

提示: 在移动端,web端 使用RESR API是比较好的选择,同时官方还提供了Composer Node SDK适用于Node.js应用。

更新.bna 文件

1.变更业务逻辑

业务需求会经常变更,因此我们需要修改现有的逻辑以及版本号。比如我们修改以下两个地方:

models/sample.cto:

// 新增一个参与者
participant Teacher  extends SampleParticipant{

}

package.json

// 修改版本号
 "version": "1.0.0",

2.重新生成.bna文件

定位到项目根目录,执行npm run prepublish :

这里写图片描述

3.更新现有的业务网络

cd dist/
composer network update -a basic-sample-network.bna -p hlfv1 -i PeerAdmin -s randomString

运行结果:

这里写图片描述

4.生成新的REST API来验证

这里写图片描述

这里写图片描述

可以看到 多了一个 Teacher相关的api,那么我们的业务网络更新成功了。

猜你喜欢

转载自blog.csdn.net/qq_27818541/article/details/77479600
今日推荐