一、基础环境整理(可参照:https://blog.csdn.net/tianshuhao521/article/details/83892178
https://blog.csdn.net/tianshuhao521/article/details/83894142)
1、安装curl:
# yum install curl
安装成功后查看版本:
# curl --version
2、安装wget。
3、安装docker和docker compose。安装成功后查看版本:# docker -version
4、go语言环境。安装后查看版本:# go version
5、node.js运行环境以及npm。安装完后查看版本:
--------------------------------------------------------------------------------------------------------
二、fabric 2.0源码安装:
1、创建放置fabric的文件夹:
# mkdir -p $GOPATH/src/github.com/hyperledger
2、下载fabric源码:
# cd $GOPATH/src/github.com/hyperledger
# git clone https://github.com/hyperledger/fabric.git
# cd fabric/scripts
查看bootstrap.sh: # bootstrap.sh
能看到version为2.0.0,ca_version为1.4.6,thirdparty_image_version为0.4.18
执行bootstrap.sh下载镜像和二进制文件:
# ./bootstrap.sh
执行完如图,另外在scripts目录下会多出来一个fabric-samples目录:
3、启动test-network测试网络:
# cd /opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network
# ./network.sh up
如图,表示启动成功,已启动一个orderer节点和两个peer节点。
查看docker容器:
# docker ps
如图:
至此,fabric测试网络test-network部署成功。
---------------------------------------------------------------------------------------------------------------------------------
三、使用测试网络
1、创建channel,使用network.sh脚本创建来创建一个连接org1和org2组织并加入他们peer的通道,命令如下:
# ./network.sh createChannel
如图,创建成功(默认通道名为mychannel)。
也可以带上channel标签,命令如下(-c channelName):
# ./network.sh createChannel -c channel1
如果要在一个步骤中启动网络并创建频道,可以同时使用up和create channel模式:
# ./network.sh up createChannel
2、在通道上启动链码。
(1)使用network.sh创建通道之后,可以使用以下命令在通道上启动链码(默认使用go语言):
# ./network.sh deployCC
可以指定语言,加-l ,比如我用java,命令如下:
# ./network.sh deployCC -l java
如图,启动成功:
3、与网络互动
网络启动之后,可以使用peer cli客户端去操作网络,可以通过cli客户端去调用部署智能合约,更新通道,或者安装和部署新的智能合约。
首先确保操作目录为test-network目录,比如我的目录是:
/opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network
使用以下命令将二进制文件添加到cli路径:
# export PATH=${PWD}/../bin:${PWD}:$PATH
还需要设置FABRIC_CFG_PATH路径指向fabric-samples中的core.yaml文件,命令如下:
# export FABRIC_CFG_PATH=$PWD/../config/
设置允许org1操作peer cli的环境变量:
# 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/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
如上,CORE_PEER_TLS_ROOTCERT_FILE和CORE_PEER_MSPCONFIGPATH环境变量指向organizations文件夹中的org1的加密文件。
使用以下命令获取汽车资产列表:
# peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
如图:
同理,设置org2的环境变量:
# 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/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051
在peer0.org2.example.com上调用链码查询fabcar列表:
关闭网络:
# ./network.sh down
------------------------------------------------------------------------------------------------------------------
四、使用证书颁发机构启动网络
1、执行以下命令确保关闭其他fabric网络:
# ./network.sh down
2、标志并启动网络(ca为网络的标志):
# ./network.sh up -ca
如图,启动成功: