Fabric环境搭建及Demo演示
Mac OS Fabric环境搭建
一、环境准备
1.1、docker环境安装
这里采用官方脚本自动安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后,使用一下命令启动docker服务
sudo systemctl start docker
1.2、Docker Compose环境安装
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose --version
二、安装fabric
2.1、下载fabric源码
下载fabric源码到本地/Users/XXX/GolandProjects
目录下
1cd /Users/wanghongjie/GolandProjects2git clone "https://github.com/hyperledger/fabric.git"
下载完成后,进入到fabric/scripts/目录中,并运行bootstrap.sh文件
1cd fabric/scripts/2./bootstrap.sh
这里hyperledger-fabric-ca-darwin-amd64-1.5.2.tar.gz
和hyperledger-fabric-darwin-amd64-2.4.0.tar.gz
下载非常慢。我们可以提前下载好,放到和bootstrap.sh同级目录下,解压到当前目录。解压后bin和config文件。
修改bootstrap.sh文件,将
1 download() { 2 local BINARY_FILE=$1 3 local URL=$2 4 echo "===> Downloading: " "${URL}" 5 curl -L --retry 5 --retry-delay 3 "${URL}" | tar xz || rc=$? 6 if [ -n "$rc" ]; then 7 echo "==> There was an error downloading the binary file." 8 return 22 9 else10 echo "==> Done."11 fi12 }
改为
1 download() {2 echo "==> Done."3 }
执行./bootstrap.sh,此时会下载镜像该过程较慢。
如出现以上内容,则安装完成。
安装完成后,我们将解压后得到的bin、config目录复制到fabric-samples
文件夹中。
2.2、运行测试案例
我们运行官方提供的一个案例test-network-nano-bash
。
首先进入test-network-nano-bash目录中,我们可以看到一下文件内容。
image1、首先运行./generate_artifacts.sh
。
2、开始3个控制台页面,分别运行./orderer1.sh
, ./orderer2.sh
, ./orderer3.sh
。
3、开启4个控制台,分别运行``./peer1.sh,
./peer2.sh,
./peer3.sh,
./peer4.sh`
4、再次运行source peer1admin.sh
, source peer2admin.sh
, source peer3admin.sh
, source peer4admin.sh
5、打包默认go代码。
1peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go --lang golang --label basic_1
6、安装打包好的智能合约
1peer lifecycle chaincode install basic.tar.gz
image
我这里之前执行过该命令,它提示chaincode already successfully。记录下package ID basic_1:d54015a12fa19e018a12c0bd69e3392c3abe89f0ff8972d38a8b8991ddd10550
7、将PackageID 设置到环境变量中
1export CC_PACKAGE_ID=basic_1:d54015a12fa19e018a12c0bd69e3392c3abe89f0ff8972d38a8b8991ddd10550
8、chaincode的审批和提交
1peer lifecycle chaincode approveformyorg -o 127.0.0.1:6050 --channelID mychannel --name basic --version 1 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt23peer lifecycle chaincode commit -o 127.0.0.1:6050 --channelID mychannel --name basic --version 1 --sequence 1 --tls --cafile "${PWD}"/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt
9、调用链代码来创建一个资产(根据任何组织的默认背书策略,只需要一个背书人)。然后查询资产,更新它,并再次查询,以查看总账上产生的资产更改。
创建
1peer chaincode invoke -o 127.0.0.1:6050 -C mychannel -n basic -c '{"Args":["CreateAsset","2","blue","50","julywhj","2000"]}' --tls --cafile "${PWD}"/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt
image
查询
1peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","2"]}'
image
修改
1peer chaincode invoke -o 127.0.0.1:6050 -C mychannel -n basic -c '{"Args":["UpdateAsset","2","blue","100","julywhj","1000"]}' --tls --cafile "${PWD}"/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt
image
祝贺您,您已经部署了一个最小的Fabric网络!如果希望查看部署网络所需的最小命令集,请检查脚本。