美文网首页
Fabric环境搭建及Demo演示

Fabric环境搭建及Demo演示

作者: July_whj | 来源:发表于2021-12-22 18:29 被阅读0次

    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.gzhyperledger-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目录中,我们可以看到一下文件内容。

    image

    1、首先运行./generate_artifacts.sh

    image

    2、开始3个控制台页面,分别运行./orderer1.sh, ./orderer2.sh, ./orderer3.sh

    image

    3、开启4个控制台,分别运行``./peer1.sh,./peer2.sh,./peer3.sh,./peer4.sh`

    image

    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网络!如果希望查看部署网络所需的最小命令集,请检查脚本。

    相关文章

      网友评论

          本文标题:Fabric环境搭建及Demo演示

          本文链接:https://www.haomeiwen.com/subject/krtcqrtx.html