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 网络,并将链码安装到指定通道.但目前为止,实 ...
随机推荐
- Maven+Jmeter+Jenkins的持续集成的新尝试
前言: 这又是一篇迟到很久的文章,四月身体欠佳,根本不在状态. 好了,回到正题,相信大家也在很多博客,看过很多类似乎的文章,那么大家来看看我是如何实现的? 准备工作: 创建一个maven工程 创建一个 ...
- optparse--强大的命令行参数处理包
optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. optparse的简单示例: from optparse import OptionPa ...
- P1468 派对灯 Party Lamps(BIG 模拟)
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...
- 一个简单的wed服务器SHTTPD(5)————服务器SHTTPD请求方法解析
//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...
- php接口开发经验总结
接口开发采用jwt方式验证: 接口开发最好留多几个返回方式,方便本地调用: 待更新.............
- ssm(spring,spring mvc,mybatis)框架
ssm框架各个技术的职责 spring :spring是一个IOC DI AOP的 容器类框架 spring mvc:spring mvc 是一个mvc框架 mybatis:是一个orm的持久层框架 ...
- 设计模式之GOF23代理模式03
动态代理 public class StarHandler implements InvocationHandler{ Star realStar; public StarHandler(Star ...
- screen命令两种用法
screen命令用法举例 screen命令,故名思议于屏幕有关. 1. screen用于关闭shell应用不退出 思路:创建一个单独的shell窗口,在此窗口中启动应用,然后把这个shell放置于后台 ...
- js代码中引入其他js文件
/***引入 js 文件 @example: import('js/aui.picker.js') @example: import(['js/aui.picker.js', 'css/aui.pic ...
- JUC之CountDownLatch源码分析
CountDownLatch是AbstractQueuedSynchronizer中共享锁模式的一个的实现,是一个同步工具类,用来协调多个线程之间的同步.CountDownLatch能够使一个或多个线 ...