一、配置
1.0.环境说明
- 操作系统 :macOS Catalina/10.15.3
- Docker : 19.03.5
- Fabric :v1.4.4
1.1.网络拓扑
- 一个
orederer
节点 - 两个组织,一节点/组织
solo
共识机制- 关闭
TLS
类型/组织 | 域名 | IP/端口 | 组织名 |
---|---|---|---|
Orderer | orderer.yzm.com | 172.22.0.1:7050 | OrdererOrg |
Peer/OrgA | peer0.orga.com | 172.22.0.2:7051 | OrgAMSP |
Peer/OrgB | peer0.orgb.com | 172.22.0.3:8051 | OrgBMSP |
1.2.文件说明
base/peer-base.yaml 节点环境变量/基础镜像设置
base/docker-compose-base.yaml 节点磁盘映射/端口设置
docker-compose-cli.yaml cli容器启动设置,节点网络设置
crypto-config.yaml 组织证书等生成配置
configtx.yaml 创世区块/通道交易配置
script/gen.sh 证书生成脚本
script/utils.sh docker启动脚本
script/env.sh 节点配置脚本
安装 Fabric 1.4.6 版本
$ curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.6 1.4.6 0.4.18
下载脚本和配置,地址,详细配置请参考文件注释、官方文档、博主其他博文
$ git clone https://github.com/Pipapa/fabric-sample
二、搭建
注意:修改cryptogen
和configtxgen
程序到环境变量。
脚本使用为:
# 生成区块/配置
$ scripts/gen.sh
# 启动网络并安装链码测试
$ scripts/utils.sh up
# 关闭网络/清理文件
$ scripts/utils.sh down
2.1.生成证书/区块配置文件
脚本生成配置:
$ scripts/gen.sh
手动生成配置:
1.生成证书文件
$ cryptogen generate \
--config <config-file>
2.生成创世块(环境变量FABRIC_CFG_PATH
)
$ configtxgen \
-profile <p> \
-channelID <channel> \
-outputBlock <block-file>
3.生成通道配置
$ configtxgen \
-profile <p> \
-channelID <channel> \
-outputCreateChannelTx <tx>
4.生成锚节点配置
$ configtxgen \
-profile <p> \
-channelID <channel> \
-outputAnchorPeersUpdate <tx> \
-asOrg <orgName>
2.2.网络启动
脚本启动网络:
$ ./scripts/utils.sh up
手动启动网络:
1.启动网络
$ docker-compose -f docker-compose-cli.yaml up -d
2.进入CLI
$ docker exec -ti cli /bin/bash
2.3.网络测试
脚本测试:
$ ./scripts/env.sh all
手动测试:
1.创建通道
$ peer channel create \
-o <orderer:port> \
-c <channel> \
-f <channeltx-file> \
--tls --cafile <tls>
2.加入通道
$ peer channel join -b <channel>.block
3.更新锚节点
$ peer channel update \
-o <orderer> \
-c <channel-name> \
-f <channel-file> \
--tls --cafile <orderer-tls>
4.安装链码
$ peer chaincode install \
-n <name> \
-v <version> \
-p <path> \
-l <language>
5.实例化链码
$ peer chaincode instantiate \
-o <orderer:port> \
--tls --cafile <tls> \
-C <channel> \
-n <name> \
-v <version> \
-c <args>
6.查询操作
$ peer chaincode query \
-C <channel-name> \
-n <name> \
-c <args>
7.调用操作
$ peer chaincode invoke \
-C <channel-name> \
-o <orderer:port> \
--tls --cafile <tls> \
--peerAddresses <node> --tlsRootCertFIles <cert> \
-c <args>