Hyperledger fabric安装指南
先切换到root用户
一、安装前的准备工作
参考这篇文章https://blog.csdn.net/shengsikandan/article/details/107656060
首先安装一些必要的依赖:
sudo apt install libtool libltdl-dev
去https://studygolang.com/dl下载go的安装包
wget https://studygolang.com/dl/golang/go1.16.linux-amd64.tar.gz
tar -zxvf go1.16.linux-amd64.tar.gz -C /usr/local
#打开环境变量
vi ~/.bashrc
#添加
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
#保存退出后刷新
source ~/.bashrc
#查看版本
go version
#go代理进行更换
go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
安装docker-ce
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2:安装GPG证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# step 3:写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# step 4:更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
#将当前用户添加到docker用户组
# step 1: 创建docker用户组
sudo groupadd docker
# step 2:将当前用户添加到docker用户组
sudo usermod -aG docker $USER
#退出当前终端
exit
如果不行的话离线安装docker-ce
https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
按序安装docker-ce-cli、containerd、docker-ce
sudo dpkg -i docker-ce-cli
然后安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.28.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#完成后查看版本
docker-compose -v
二、安装fabric
参考这篇文章https://blog.csdn.net/qq_43681877/article/details/110896678
官方测试文档可参考https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/test_network.html
cd
mkdir -p go/src/github.com/hyperledger/
#进入刚刚创建的文件夹内
cd go/src/github.com/hyperledger/
#下载文件,然后修改名称
git clone "https://github.com/hyperledger/fabric.git"
#查看版本
cd fabric/
git branch -a
#切换版本
git checkout release-2.3
#进入脚本执行命令,此环境最好有外网环境,要不然就根据上面那篇文章的方法来
cd scripts/
./bootstrap.sh
#然后去测试
cd fabric-samples/test-network
#先关闭一遍网络
./network.sh down
#用启动脚本打开网络
./network.sh up
#查看当前使用的镜像
docker ps -a
#创建通道
./network.sh createChannel # 默认名称为mychannel
./network.sh createChannel -c channel1 #自定义名称
#也可以启动的时候同时创建通道
./network.sh up createChannel
#在通道上启动链码
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
./network.sh deployCC -ccn basics -ccp ../asset-transfer-basic/chaincode-javascript -ccl javascript
./network.sh deployCC -ccn basic -ccp ../commercial-paper/chaincode-token -ccl javascript
三、将fabcar智能合约部署到通道
参考文档:
1、启动网络
./network.sh down
./network.sh up createChannel
打包智能合约略过
2、创建chaincode包(js版本)
peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/javascript/ --lang node --label fabcar_1
3、安装chaincode包
需要在两个组织上安装
#先装org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
peer lifecycle chaincode install fabcar.tar.gz
#然后安装org2
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
peer lifecycle chaincode install fabcar.tar.gz
4、批准链码定义
找到链码的程序包ID
peer lifecycle chaincode queryinstalled
复制ID,进行输出
export CC_PACKAGE_ID=fabcar_1:babcdc7acdf9048793efac15bd4a7128c8d33f7da33d9e5bc86e95d86565ebdf
进行批准
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
再对org1进行批准
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
5、将链码定义提交给通道
#检查通道成员是否已经批准相同的链码定义
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json
将链码定义提交给通道
peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
查看是否已经被提交了peerAddresses
peer lifecycle chaincode querycommitted --channelID mychannel --name fabcar --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
6、调用链码
使用以下命令在分类账上创建一组初始汽车
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"initLedger","Args":[]}'
查询功能来读取由链码创建的汽车的集合
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'





