Hyperledger Fabric——balance transfer(一)启动示例
Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作。
先决条件
- Docker - v1.12 or higher
- Docker Compose - v1.8 or higher
- Git - needed for clone commands
- Node.js - v8.4.0 or higher
- Docker images
- jq - needed for execute the test script
下载示例
需要注意的是 balance transfer 示例不同版本间差别很大,从v1.0.6到v1.1.0就存在很大改动,这里使用的是最新版本release-1.1。
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples/balance-transfer
运行示例
与之前运行的Fabric项目中的samples相比,e2e和first-network这两个例子是通过一个cli容器来模拟客户端与网络进行交互。而balance-transfer则会监听一个端口,用户可以通过curl命令、浏览器等工具根据URL来进行相应操作。
示例可通过脚本运行,构建一个本地的Fabric网络,所有节点包括:
- 2 CAs
- 1 SOLO orderer
- 4 peers (2 peers per Org)
方法一
在终端1执行脚本:
./runApp.sh
- 启动本地fabric网络
- 下载fabric-client 和 fabric-ca-client 模块
- 监听4000端口
在终端2测试网络,执行测试脚本前需下载jq:
sudo apt-get install jq
./testAPIs.sh
- 创建channel并加入节点
- 安装和实例化chaincode
- 执行(invoke)chaincode
- 进行各种查询(query)
方法二
在终端1执行:
docker-compose -f artifacts/docker-compose.yaml up
在终端2执行命令,下载fabric-client 和 fabric-ca-client 模块:
npm install
运行node app,监听4000端口:
PORT=4000 node app
在终端3通过curl命令进行测试。
报错解决
注意:balance transfer 的版本应该与镜像文件的版本相匹配,否则会出现错误。
比如我的镜像文件下载的是v1.0.0,而fabric-samples项目没有此版本(使用git tag查看),则在注册用户的第一步就出现错误No identity type provided:
No identity type provided. Please provide identity type
则需要重新下载相应版本的镜像,并切换fabric-samples的版本使两者保持一致 ( git checkout v1.1.0 )。
关闭网络
# 清除所有容器
docker rm -f $(docker ps -aq)
# 删除chaincode镜像
docker rmi -f $(docker images | grep dev | awk '{print $3}')
# 删除用户注册和登录的数据,如私钥和证书
rm -rf fabric-client-kv-org[1-2]
参考:http://www.cnblogs.com/studyzy/p/7437157.html
Hyperledger Fabric——balance transfer(一)启动示例的更多相关文章
- Hyperledger Fabric——balance transfer(六)查询
balance transfer 提供了很多查询接口,包括链码查询,根据区块号查询区块数据,根据交易ID查询交易信息,查询链上的区块数,查询已安装或已实例化的链码,查询通道. 源码解析 1.调用链码查 ...
- Hyperledger Fabric——balance transfer(四)安装和实例化chaincode
详细解析blance transfer示例的安装(install)和实例化(Instantiate)链码(chaincode)的过程.安装chaincode会根据本地的链码文件生成chaincode镜 ...
- Hyperledger Fabric——balance transfer(三)创建和加入Channel
详细解析blance transfer示例的创建通道(Channel)和加入节点到通道的过程. 创建Channel 1.首先看app.js的路由函数 var createChannel = requi ...
- Hyperledger Fabric——balance transfer(二)注册用户
详细分析blance transfer示例的用户注册(register)与登录(enroll)功能. 源码分析 1.首先分析项目根目录的app.js文件中关于用户注册和登录的路由函数.注意这里的tok ...
- Hyperledger Fabric——balance transfer(五)执行交易
链码安装和实例化之后就可以调用chaincode执行交易,下面分析简单的账户转账操作是如何完成的. 源码分析 1.首先看app.js的路由函数 app.post('/channels/:channel ...
- Hyperledger Fabric无系统通道启动及通道的创建和删除
前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织,但目前为止,我们启动 orderer 节点的方式都是通过系统通道的方式,这样自带系 ...
- Hyperledger Fabric 本地运行的简单示例
环境: Ubuntu 16.04 go 1.7.4 版本: Fabric v1.0.0-alpha 本文主要目的就是让大家体验以下Fabric网络环境搭建的具体过程,不基于集成化脚本手动搭建. 一.编 ...
- 深入解析Hyperledger Fabric启动的全过程
在这篇文章中,使用fabric-samples/first-network中的文件进行fabric网络(solo类型的网络)启动全过程的解析.如有错误欢迎批评指正. 至于Fabric网络的搭建这里不再 ...
- Hyperledger Fabric无排序组织以Raft共识算法启动多个Orderer服务、多组织共同运行维护Orderer服务
前言 在Hyperledger Fabric无系统通道启动及通道的创建和删除中,我们已经完成了以无系统通道的方式启动 Hyperledger Fabric 网络,并将链码安装到指定通道.但目前为止,实 ...
随机推荐
- apollo 项目配置中心开源框架部署
apollo 于我带来的好处 1. 项目之前的配置信息全部都在 resources 目录下,当然这里我使用的是 Spring Boot 搭建的项目.使用 apollo 后,配置信息全部转移到 apol ...
- 工程师泄露5G核心技术文档 被判有期徒刑三年缓刑四年
2002 年至 2017 年 1 月,黄某瑜就职于中兴通讯公司,担任过射频工程师.无线架构师等职务.2008 年 4 月至 2016 年 10 月,王某就职于中兴通讯公司西安研究所,担任过 RRU 部 ...
- 《名侦探柯南》动画登陆bilibili
不管你看没看过.喜不喜欢,也一定听说过<名侦探柯南>这部动画,它和<火影>.<海贼王>几部动画陪伴了一代人成长的道路,而且<名侦探柯南>还是这几部动画中 ...
- 动态调用webSerivce-简易方法
大家对webservice已经不再陌生了,涉及到的通信大部分都是用webservice.不过我还是看好wcf,因为毕竟是微软推出的新技术,各个方面还是蛮不错的,特别是你可以利用多种通信方式, ...
- C++ FAQ
空类 class A { }; // sizeof(A) = 1 空类的大小之所以为1,因为标准规定完整对象的大小>0,否则两个不同对象可能拥有相同的地址,故编译器会生成1B占位符. 那么两个对 ...
- INTERVIEW #0
一.造成网络延迟的可能原因 1,WiFi所有用户上下行流量共用一个信道,当用户太多或者有人在下载大的资源时带宽不够,丢包: 2,线路质量不佳导致信噪比太低,比如光纤损耗太大等. 二.IPv6优势 1, ...
- String(字符串) 比较大小 如果有A+B>B+A 则A>B
题目引入: 给定N个整数,那任意顺序排列连成一个数,得到的最大的数是多少? 分析:贪心,字典序排序,都不对大小比较也不对,今天我跟别人想了很久绞尽脑汁,各种模拟都失败了.最后才发现对于俩个数a=313 ...
- bzoj4318 OSU!和bzoj 3450 Tyvj1952 Easy
这俩题太像了 bzoj 3450 Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点 ...
- python(递归函数)
1.描述: 递归函数:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 2.递归函数特性: 必须有一个明确的结束条件: 每次进入更深一层递归时,问题规模相比上次递归 ...
- python(读取 excel 操作 xlrd 模块)
一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口 pip ...