852 字
4 分钟
遇到问题?

通过上一篇文章我们已经将fabric的基本环境搭建成功,接下来我们开始运行使用并初步认识fabric。

创建项目目录 mkdir -p ~/go/src/github.com/hyperledger

cd ~/go/src/github.com/hyperledger

拉取fabric项目 git clone https://github.com/hyperledger/fabric.git

切换fabric版本 cd fabric

git checkout v2.0.0

拉取fabric镜像 先进入到scripts目录

cd ~/go/src/github.com/hyperledger/fabric/scripts

注意: 此处我们需要修改当前目录下的bootstrap.sh脚本

通过阅读bootstrap脚本我们可以知道,此脚本先会拉去fabric-samples脚本,再切换分支,但由于官方切换的分支为2.0.0,可实际上现在官方提供的版本库中没有这个分支,所以会导致无法切换,而且回去拉取环境所用的二进制文件,但国内网络是无法访问的,从而导致后面的操作失败,所以我们选择手动拉取fabric-samples脚本再切换到v2.0.0-beta分支,在这之前此脚本仅仅作为拉取镜像的操作,操作如下:

进入编辑页面

vim ~/go/src/github.com/hyperledger/fabric/scripts/bootstrap.sh

修改脚本

#DOCKER=true #SAMPLES=true #BINARIES=true

DOCKER=true SAMPLES=false BINARIES=false

此出我们修改脚本之后,bootstrap.sh只进行拉取镜像的操作

开始运行脚本 ./bootstrap.sh

拉去的镜像如下

拉去镜像之后下面我们进入目录 cd ~/go/src/github.com/hyperledger

然后开始拉取fabric-samples git clone https://github.com/hyperledger/fabric-samples.git

拉取成功后切换到v2.0.0-beta分支 git checkout v2.0.0-beta

进入目录 cd ~/go/src/github.com/hyperledger/fabric-samples

紧接着我们需要下所需要的二进制文件 wget https://github.com/hyperledger/fabric/releases/download/v2.0.1/hyperledger-fabric-linux-amd64-2.0.1.tar.gz

然后在当前目录解压包 tar -xzvf hyperledger-fabric-linux-amd64-2.0.1.tar.gz

然后进入目录 cd ~/go/src/github.com/hyperledger/fabric-samples/first-network

然后运行命令 ./byfn.sh up

出现end之后就代表我们运行成功了!!

我们查看一下启动的服务 docker ps

查看镜像完全正常,说明我们已经部署成功一个单机多节点的fabric-samples的简单例子了

接下来我们开始在这个基础上加一个组织进去,通过手动加入一个新的组织,来更清楚的认识fabric的机制

遇到问题?#

中间可能会遇到链码无法打包的问题#

在以下代码中报错,原因是链码依赖找不到,需要到链码所在的文件夹下下载依赖

peer lifecycle chaincode package mycc.tar.gz --path
github.com/hyperledger/fabric-samples/chaincode/abstore/go/ --lang golang --label mycc_1

在github.com/hyperledger/fabric-samples/chaincode/abstore/go/ 目录执行以下代码进行修复

cd fabric-samples/chaincode/abac/go
go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
go mod vendor

部分docker无法运行#

请检查配置是否按以上要求运行

本地测试安装链码查询链码操作上链#

#查询已安装的链码
docker exec cli peer lifecycle chaincode queryinstalled
#安装链码
docker exec cli peer lifecycle chaincode package mycc.tar.gz --path \
github.com/hyperledger/fabric-samples/chaincode/abstore/go/ --lang golang --label mycc_1
#查询已安装链码的组织
docker exec cli peer lifecycle chaincode approveformyorg --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --version 1 --init-required --package-id mycc_1:4622fb602aa60c6368716a70474dc9d9ba2776200f70eccca07a4df4360eaff3 --sequence 1 --waitForEvent
docker exec cli peer lifecycle chaincode approveformyorg --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --version 1 --init-required --package-id mycc_1:4622fb602aa60c6368716a70474dc9d9ba2776200f70eccca07a4df4360eaff3 --sequence 1 --waitForEvent
#上链
docker exec cli peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --isInit -c '{"Args":["Init","a","100","b","100"]}'
#上链赋值
docker exec cli peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --isInit -c '{"Args":["Init","b","999999","b","999999999999"]}'
docker exec cli peer chaincode invoke -o orderer.finebaas.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/finebaas.com/orderers/orderer.finebaas.com/msp/tlscacerts/tlsca.finebaas.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.finebaas.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.finebaas.com/peers/peer0.org1.finebaas.com/tls/ca.crt --peerAddresses peer0.org2.finebaas.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.finebaas.com/peers/peer0.org2.finebaas.com/tls/ca.crt --isInit -c '{"Args":["Init","b","999999","b","999999999999"]}'
#查询
docker exec cli peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
#安装
docker exec cli peer lifecycle chaincode install mycc.tar.gz
#查询
docker exec cli peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
遇到问题?
https://blog.zhequtao.com/posts/golang/go-block/fabric2x/01快速上手/
作者
阿俊
发布于
2021-01-27
许可协议
CC BY-NC-SA 4.0

相关阅读