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相比,e2efirst-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(一)启动示例的更多相关文章

  1. Hyperledger Fabric——balance transfer(六)查询

    balance transfer 提供了很多查询接口,包括链码查询,根据区块号查询区块数据,根据交易ID查询交易信息,查询链上的区块数,查询已安装或已实例化的链码,查询通道. 源码解析 1.调用链码查 ...

  2. Hyperledger Fabric——balance transfer(四)安装和实例化chaincode

    详细解析blance transfer示例的安装(install)和实例化(Instantiate)链码(chaincode)的过程.安装chaincode会根据本地的链码文件生成chaincode镜 ...

  3. Hyperledger Fabric——balance transfer(三)创建和加入Channel

    详细解析blance transfer示例的创建通道(Channel)和加入节点到通道的过程. 创建Channel 1.首先看app.js的路由函数 var createChannel = requi ...

  4. Hyperledger Fabric——balance transfer(二)注册用户

    详细分析blance transfer示例的用户注册(register)与登录(enroll)功能. 源码分析 1.首先分析项目根目录的app.js文件中关于用户注册和登录的路由函数.注意这里的tok ...

  5. Hyperledger Fabric——balance transfer(五)执行交易

    链码安装和实例化之后就可以调用chaincode执行交易,下面分析简单的账户转账操作是如何完成的. 源码分析 1.首先看app.js的路由函数 app.post('/channels/:channel ...

  6. Hyperledger Fabric无系统通道启动及通道的创建和删除

    前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织,但目前为止,我们启动 orderer 节点的方式都是通过系统通道的方式,这样自带系 ...

  7. Hyperledger Fabric 本地运行的简单示例

    环境: Ubuntu 16.04 go 1.7.4 版本: Fabric v1.0.0-alpha 本文主要目的就是让大家体验以下Fabric网络环境搭建的具体过程,不基于集成化脚本手动搭建. 一.编 ...

  8. 深入解析Hyperledger Fabric启动的全过程

    在这篇文章中,使用fabric-samples/first-network中的文件进行fabric网络(solo类型的网络)启动全过程的解析.如有错误欢迎批评指正. 至于Fabric网络的搭建这里不再 ...

  9. Hyperledger Fabric无排序组织以Raft共识算法启动多个Orderer服务、多组织共同运行维护Orderer服务

    前言 在Hyperledger Fabric无系统通道启动及通道的创建和删除中,我们已经完成了以无系统通道的方式启动 Hyperledger Fabric 网络,并将链码安装到指定通道.但目前为止,实 ...

随机推荐

  1. Maven+Jmeter+Jenkins的持续集成的新尝试

    前言: 这又是一篇迟到很久的文章,四月身体欠佳,根本不在状态. 好了,回到正题,相信大家也在很多博客,看过很多类似乎的文章,那么大家来看看我是如何实现的? 准备工作: 创建一个maven工程 创建一个 ...

  2. optparse--强大的命令行参数处理包

    optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. optparse的简单示例: from optparse import OptionPa ...

  3. P1468 派对灯 Party Lamps(BIG 模拟)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  4. 一个简单的wed服务器SHTTPD(5)————服务器SHTTPD请求方法解析

    //start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...

  5. php接口开发经验总结

    接口开发采用jwt方式验证: 接口开发最好留多几个返回方式,方便本地调用: 待更新.............

  6. ssm(spring,spring mvc,mybatis)框架

    ssm框架各个技术的职责 spring :spring是一个IOC DI AOP的 容器类框架 spring mvc:spring mvc 是一个mvc框架 mybatis:是一个orm的持久层框架 ...

  7. 设计模式之GOF23代理模式03

    动态代理 public class StarHandler implements InvocationHandler{  Star realStar; public StarHandler(Star ...

  8. screen命令两种用法

    screen命令用法举例 screen命令,故名思议于屏幕有关. 1. screen用于关闭shell应用不退出 思路:创建一个单独的shell窗口,在此窗口中启动应用,然后把这个shell放置于后台 ...

  9. js代码中引入其他js文件

    /***引入 js 文件 @example: import('js/aui.picker.js') @example: import(['js/aui.picker.js', 'css/aui.pic ...

  10. JUC之CountDownLatch源码分析

    CountDownLatch是AbstractQueuedSynchronizer中共享锁模式的一个的实现,是一个同步工具类,用来协调多个线程之间的同步.CountDownLatch能够使一个或多个线 ...