准备工作
(严格按照官网安装步骤安装这4个工具)
-
安装docker-compose官网https://docs.docker.com/compose/install/
-
安装git 官网:https://git-scm.com/download/linux
(这个我没用官网的安装步骤更新,可以看我的blog:
https://blog.csdn.net/baidu_40245966/article/details/108607880)
拉取github上hyperledger fabric源代码
mkdir -p ~/go/src/github.com/hyperledger
cd go/src/github.com/hyperledger/
git clone "https://github.com/hyperledger/fabric.git"
cd fabric/
cd scripts/
sudo ./bootstrap.sh(输完这个命令会下载很多东西)
测试网络命令在fabric-samples/test-network运行
,下面,命令解释和运行都在官网测试网络界面:https://hyperledger-fabric.readthedocs.io/en/latest/test_network.html
第一步
su
cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network
//记得测试的时候,进入管理员界面,不管用sudo测试环境会出现各种错误
./network.sh up
结果出现2个peer容器和一个orderer容器,如图
第二步:建立频道(管理员界面下)
//系统给的名字
./network.sh createChannel
//or`./network.sh createChannel -c频道名字`直接给通道起名字
结果参照官网
第三步启动链码
./network.sh deployCC
这里我查了网上很多blog,发现都出现了错误,此时我们可以换个网络(ps:校园网真的很慢,报错timeout)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
之后再次运行(网速快可以成功)
./network.sh deployCC
第四步:与网络互动
//test-netork下
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
配置环境
//.profile里
//不同版本.profile路径不同
#Environment variables for 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
//刷新.profile
. 路径/.profile
第5步: 使用资产初始化分类帐
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 basic --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":[]}'
结果
这里看不起楚,我们可以参照官网
第6步
查询分类帐。运行以下命令以获取已添加到渠道分类帐的资产列表:
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
结果:
这里看不清楚,我们可以参照官网
第7步
当网络成员要转移或更改分类帐上的资产时,将调用链码。使用以下命令通过调用资产转移(基本)链码来更改分类帐上资产的所有者:
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 basic --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":"TransferAsset","Args":["asset6","Christopher"]}'
结果
这里看不清楚,我们可以看官网:
第8步
调用链代码后,我们可以使用另一个查询来查看该调用如何更改了区块链分类账上的资产。由于我们已经查询过Org1对等体,因此我们可以借此机会查询Org2对等体上运行的链码。设置以下环境变量以作为Org2进行操作
gedit 路径/.profile
#Environment variables for Org2
export CORE_PEER_TLS_ENABLED=true
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
. 路径/.profile
您现在可以查询运行在的资产转移(基本)链码
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'
结果
这里看不清楚,我们可以查看官网
停止网络
./network.sh down