1.Fabric源码及镜像文件处理:fabric源码,fabric-samples源码的下载
下载 fabric 源码是因为要用到源码中的例子和工具,工具编译需要用到 go 语言环境
(1)fabric源码下载
可以使用 Git 命令下载源码(耗时会比较长)
进入指定目录:cd /home/lijiangtao/go/src/github.com/hyperledger/2.2.0
下载fabric版本:git clone https://github.com/hyperledger/fabric.git
,若是报错可以使用git clone git://github.com/hyperledger/fabric.git
查看fabric分支版本:git branch
切换到fabric2.2.0分支版本:git checkout v2.2.0
注:如果没有 git 命令,需要先执行如下命令,构建 git 环境:yum install git
(2)fabric-samples源码下载
复制/home/lijiangtao/go/src/github.com/hyperledger/2.2.0/fabric/scripts中的bootstrap.sh文件到/home/lijiangtao/go/src/github.com/hyperledger/2.2.0,执行./bootstrap.sh
,等待下载完成即可。
注:
*这一步会下载官方的例子以及所需要的Docker镜像
*下载是比较慢的,如果出现错误或者长时间没有速度只需要重新运行就可以了
至此,Fabric源码,fabric-samples 源码、fabric 镜像的工作已经完成
【参考】Hyperledger fabric 2.2.0 环境搭建
2.config文件和bin文件的下载
(1)config文件夹
进入fabric文件夹,会发现sampleconfig,其实就是fabric-samples的config文件夹
将sampleconfig文件夹移动到fabric-samples中,并且重命名为config:mv sampleconfig config
(2)生成bin文件夹(编译生成二进制文件)
回到fabric目录下,使用命令make all
进行源码编译,请耐心等待很长一段时间。
在fabric文件夹下会生成build文件夹,里面含有bin和images(images镜像通过docker images
能看到)。
在bin目录中有如下二进制文件:configtxgen,configtxlator,cryptogen,discover,idemixgen,orderer,peer。
在config目录中有镜像文件:baseos,ccenv,orderer,peer,tools。
【参考】Fabric(二)部署Fabric2.2.0
3.将bin目录复制到fabric-sample 文件夹中
4.设置环境变量
使用命令:sudo vim /etc/profile
#fabric 2.2.0 export PATH= P A T H : PATH: PATH:HOME/go/src/github.com/hyperledger/fabric-samples/2.2.0/bin:$HOME/go/src/github.com/hyperledger/fabric-samples/2.2.0/config
生效source /etc/profile
5.运行test-work网络进行测试
*启动网络:./network.sh up
*建立通道:./network.sh createChannel
(默认通道名为mychannel), [指定通道名称创建: ./network.sh createChannel -c channel1
]
*在通道上启动链码(下面链码三选一):
basic链码:
./network.sh deployCC -ccn basic -ccv 1 -cci initLedger -ccp ../asset-transfer-basic/chaincode-go -ccl go
fabcar链码:
#未设置背书策略
./network.sh deployCC -ccn fabcar -ccv 1 -cci initLedger -ccp ../chaincode/fabcar/go -ccl go
#设置背书策略
./network.sh deployCC -ccn fabcar -ccv 1 -cci initLedger -ccep "OR('Org1MSP.peer','Org2MSP.peer')" -ccp ../chaincode/fabcar/go -ccl go
sacc链码:
./network.sh deployCC -ccn sacc -ccv 1 -cci init -ccp ../chaincode/sacc22 -ccl go
./network.sh deployCC参数说明
-c <channel name> - Name of channel to deploy chaincode to
-ccn <name> - Chaincode name.
-ccl <language> - Programming language of the chaincode to deploy: go, java, javascript, typescript
-ccv <version> - Chaincode version. 1.0 (default), v2, version3.x, etc
-ccs <sequence> - Chaincode definition sequence. Must be an integer, 1 (default), 2, 3, etc
-ccp <path> - File path to the chaincode.
-ccep <policy> - (Optional) Chaincode endorsement policy using signature policy syntax. The default policy requires an endorsement from Org1 and Org2
-cccg <collection-config> - (Optional) File path to private data collections configuration file
-cci <fcn name> - (Optional) Name of chaincode initialization function. When a function is provided, the execution of init will be requested and the function will be invoked.
*关闭网络:./network.sh down
6.终端直接执行peer等命令的配置
由于在我搭建环境中,fabric和fabric-ca编译的时候,已经安装可执行的二进制文件,fabric-samples底下有个bin目录,比如peer、orderer、configtxgen、fabric-server、fabric-client等等都复制到了/usr/local/bin
目录底下,并授权权限,如下图所示,可以执行peer等相关命令:
7.设置临时
环境变量关掉终端命令窗口便失效)
export FABRIC_CFG_PATH=$PWD/../config/
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
如:export FABRIC_CFG_PATH=$PWD/../config/
指向fabric-samples目录中config配置的core.yaml
注意:
PWD必须是 /home/lijiangtao2/go/src/github.com/hyperledger/2.2.0/fabric-samples/test-network
,
然后echo $FABRIC_CFG_PATH
,可以查看到:
/home/lijiangtao2/go/src/github.com/hyperledger/2.2.0/fabric-samples/test-network/../config/
执行命令:
cd /home/lijiangtao2/go/src/github.com/hyperledger/2.2.0/fabric-samples/test-network/../config/
进入到config目录下
【参考】fabric2.2.0内部链码安装及调用(生产环境)
8.query链码信息
临时环境变量设置完成后,在linux终端执行如下命令,查询链码
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
9.invoke链码信息
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":[]}'
10.其他命令
#查看已安装的链码的 ID
peer lifecycle chaincode queryinstalled
【参考】
1.fabric2.2安装使用文档
2.Fabric开发(三)ubuntu下启动Fabric2.2.0网络,并测试一个Fabcar的demo
3.使用Fabric的测试网络
4.Fabric命令手册