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

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

由于官方文档跟新很快,本文部分步骤已经过时,最新部署方式请移步这里:部署到单组织的区块链上部署到多组织的区块链上先确保满足下列环境要求OperatingSys

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

先确保满足下列环境要求

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,那么我们的业务网络更新成功了。


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • 【云计算】Dockerfile、镜像、容器快速入门 ... [详细]
  • mysql5.6 多实例 主从安装_MySQL5.6一主多从的半同步复制实例
    半同步简介:在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新 ... [详细]
author-avatar
php送
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有