一、介绍
如果您想学习Hyperledger Fabric或开发智能合约,或者只是想了解 Hyperledger Fabric,Mini Fabric是让您快速开始的良好工具。Mini Fabric可以用来在配置很低的电脑像VirtualBox上的一个虚机上为 您搭建Fabric网络,但也可以在多个大型机器上部署多节点Fabric网络。
二、功能特性
Mini Fabric虽然轻量,但它可以让您体验Hyperledger Fabric的全部 功能
- 通道创建和更新
- 节点加入通道
- 链码安装,审批,提交定义,初始化
- 链码调用,查询
- [可选项] 私有数据集
- 区块查询
三、运行环境
3.1 docker(windows版)
- docker(18.03或更高版本) 下载安装。 官网 : https://www.docker.com/
- 安装完成后,启动docker桌面程序,然后执行
docker version
- 如下图所示,表示docker成功安装并启动。
- 如果缺失 Server: Docker Desktop 4.12.0 (85629) 部分,则docker启动存在问题,解决方案:https://blog.csdn.net/qq_42102911/article/details/127028097
3.2 curl 工具
- 安装教程:https://blog.csdn.net/qq_42102911/article/details/127172463
四、搭建mini fabric
4.1 下载工具
- 新建一个空的文件夹:mywork,进入该目录后,鼠标点击红色标记部分,然后键盘输入 cmd,按enter键,进入dos界面(命令行界面)。
- 执行命令,下载 minifab.cmd 脚本
curl -o minifab.cmd -sL https://tinyurl.com/y3gupzby
4.2 启动mini fabric
- 前提条件:已经启动了docker桌面软件。
1. 配置 spec.yaml 文件
- 可以在gitee上下载该文件,但需要修改如下:去掉 goproxy 注释。或者直接复制以下内容;
- gitee链接: https://gitee.com/shuang112/minifabric
- 文件所在位置:
fabric:
cas:
- "ca1.org0.example.com"
- "ca1.org1.example.com"
peers:
- "peer1.org0.example.com"
- "peer2.org0.example.com"
- "peer1.org1.example.com"
- "peer2.org1.example.com"
orderers:
- "orderer1.example.com"
- "orderer2.example.com"
- "orderer3.example.com"
settings:
ca:
FABRIC_LOGGING_SPEC: DEBUG
peer:
FABRIC_LOGGING_SPEC: DEBUG
orderer:
FABRIC_LOGGING_SPEC: DEBUG
### use go proxy when default go proxy is restricted in some of the regions.
### the default goproxy
# goproxy: "https://proxy.golang.org,direct"
### the goproxy in China area
goproxy: "https://goproxy.cn,direct"
### set the endpoint address to override the automatically detected IP address
# endpoint_address: 104.196.45.144
### set the docker network name to override the automatically generated name.
netname: "mysite"
### set the extra optins for docker run command
# container_options: "--restart=always --log-opt max-size=10m --log-opt max-file=3"
2. 搭建fabric网络
minifab up
- 如果不报错,则表示启动成功。(出现报错,可以在文末查看问题及解决方法)
- 进行链码测试:
minifab invoke -n simple -p \"invoke\",\"a\",\"b\",\"24\"
- 结果如下:
- 查询账户的世界状态资产
minifab invoke -p \"query\",\"b\"
- 查询结果如下
3.关闭fabric 网络,并不会删除节点和运行时的文件
minifab down
4. 关闭网络后,重新开启网络(用于minifab down关闭的网络)
minifab netup
5. 删除所有节点并清理运行时文件(再次启动mini fabric时,需要执行minifab up 命令)
minifab cleanup
6. 其他功能命令
Usage:
minifab <mode> [options]
<mode> - one of operations or combination of operations separated by comma
- 'up' - 打开网络并执行所有默认的通道和链码操作
- 'netup' - 仅启动网络
- 'down' - 关闭网络
- 'restart' - 重启网络
- 'generate' - 生成所需的证书和创生块
- 'profilegen' - 生成基于通道的配置文件
- 'install' - 安装链码
- 'approve' - 批准链码
- 'instantiate' - 实例化链码 fabric release < 2.0
- 'initialize' - 实例化链码 fabric release >= 2.0
- 'commit' - 提交链码 fabric releases greater or equal to 2.0
- 'invoke' - 运行链码调用方法
- 'query' - 运行链码的查询方法
- 'create' - 创建应用程序通道
- 'join' - 将当前网络中的所有对等点连接到一个通道
- 'blockquery' - 执行通道块查询并生成通道 tx json 文件
- 'channelquery' - 执行通道查询并生成通道configuration json 文件
- 'channelsign' - 执行通道配置更新签核
- 'channelupdate' - 通道更新与给定新的通道 configuration json 文件
- 'anchorupdate' - 进行通道更新,使所有对等节点成为所有组织的锚点。
- 'nodeimport' - 导入外部节点证书和端点
- 'discover' - 发现通道背书策略
- 'cleanup' - 删除所有节点并清理运行时文件
- 'stats' - 列出所有节点和状态
- 'explorerup' - 启动超级账本浏览器
- 'explorerdown' - 关闭超级账本浏览器
- 'portainerup' - 启动容器网络管理
- 'portainerdown' - 关闭容器网络管理
- 'ccup' - 更新或强制重新安装指定版本的Chaincode (即install,approve,commit,instantiate/initialize).
- 'apprun' - (experimental) 运行Chaincode应用程序
- 'caliperrun' - (experimental) 运行 caliper 测试
- 'orgjoin' - (experimental) 加入一个组织到当前通道
- 'update' - (experimental) 更新minifabric到最新版本
options:
-c|--channel-name - 要使用的频道名称 (默认 "mychannel")
-s|--database-type - 要使用的数据库后端: goleveldb (默认) or couchdb
-l|--chaincode-language - 编码的语言: go (default), node, or java
-i|--fabric-release - 用来启动网络的fabric版本 (defaults to "2.1")
-n|--chaincode-name - 要installed/instantiated/approved 链码名称
-b|--block-number - 要查询的区块号码
-v|--chaincode-version - 要安装的Chaincode版本
-p|--chaincode-parameters - Chaincode的实例化和调用参数
-t|--transient-parameters - Chaincode实例化和调用瞬态参数
-r|--chaincode-private - Chaincode处理私人数据的flag, 默认 false
-e|--expose-endpoints - 节点的端点应该被暴露出来的flag,默认 false
-o|--organization - 用于组织特定业务的组织
-y|--chaincode-policy - 链码策略
-d|--init-required - Chaincode初始化标志, 默认 true
-f|--run-output - minifabric运行时输出回调,可以是'minifab'(默认), 'default', 'dense'
-h|--help - print this message
五、问题解决
在执行 minifab up 命令时,如果报错,显示无法连接order节点时,这表示无法从远程下载docker镜像,可以通过以下方式解决:
- 你可以从 https://share.weiyun.com/5Updupi 下载(需要登录你自己在微云上的账户)压缩的docker镜像,然后使用下列命令在本地生成docker镜像
docker load < fabric_2.1.tar.gz
docker load < minifab.tar.gz
- 然后再次执行 minifab up 命令。