Hyperledger Fabric 使用测试网络

1、先决条件

安装git、curl、wget

//ubuntu
sudo apt-get install git curl wget

安装go语言

获取离线包 wget -c https://golang.google.cn/dl/go1.16.6.linux-amd64.tar.gz
解压到指定目录 tar -zxvf go1.16.6.linux-amd64.tar -C /usr/local
配置系统变量 echo 'export PATH=$PATH:/usr/local/go/bin'>>/etc/profile 
创建GOPATH变量 mkdir -p /opt/gopath ;  echo 'export GOPATH=/opt/gopath'>>/etc/profile
使环境变量生效 source /etc/profile 
查看版本 go version

安装JDK

获取离线包:手动下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html,上传到/tmp
			或者使用wget -c https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.tar.gz获取离线包
解压到指定目录 sudo tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/local/
修改环境变量sudo vim ~/.profile
    #set oracle jdk environment
    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162  ## 这里要注意目录要换成自己解压的jdk 目录
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH  
使环境变量生效 source /etc/profile 

安装docker

sudo apt-get remove docker docker-engine docker.io containerd runc  ###卸载旧版本
sudo apt-get update  ###更新 apt 包索引
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common  ###安装依赖包
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  ###添加 Docker 的官方 GPG 密钥 https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  ###添加官方软件源 https://mirrors.aliyun.com/docker-ce/linux/ubuntu
sudo apt update  ###更新 apt 包索引
sudo apt install docker-ce
sudo docker run hello-world
sudo usermod -aG docker $USER   ###以非 Root 用户身份执行 Docker

安装docker-compose

要安装不同版本的 Compose,请将 1.29.2 替换为您要使用的 Compose 版本    
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
对可执行权限   sudo chmod +x /usr/local/bin/docker-compose
验证版本   docker-compose --version

2、使用测试网络

2.1下载fabric源码

进入$GOPATH,下载fabric源码
git clone https://github.com/hyperledger/fabric.git 
进入目录 cd fabric/scripts
执行 ./bootstrap.sh
    功能:
        -b:加上此参数,则不下载二进制文件
        -d:加上此参数则不拉取docker镜像
        -s:加上此参数则不下载fabric-samples

2.2 启动网络

启动网络
    cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network
    ./network.sh up 启动网络
    ./network.sh down  关闭网络
        报错Peer binary and configuration files not found.  解决办法:bin和config目录复制到fabric-samples下


测试网络的组成部分
    docker ps -a  
    网络有两个联盟成员,Org1和Org2。 还包括一个维护网络排序服务的排序组织。

创建一个通道
    创建一个默认名称为“ mychannel”的通道 ./network.sh createChannel
    创建一个名为channel1的通道(通道标志允许创建多个不同名称的多个通道)./network.sh createChannel -c channel1
    一步建立网络并创建频道  ./network.sh up createChannel


2.3 与网络交互

在通道启动一个链码
    deployCC子命令将在peer0.org1.example.com和peer0.org2.example.com上安装 asset-transfer (basic) 链码。 然后在使用通道标志(或mychannel如果未指定通道)的通道上部署指定的通道的链码。(可以使用语言便签 -l,用于安装 Java 或 javascript 版本的链码)
    ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
        报错:Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/golang/protobuf@v1.3.2: Get "https://proxy.golang.org/github.com/golang/protobuf/@v/v1.3.2.mod": dial tcp 172.217.160.113:443: i/o timeout: exit status 1
        解决(访问golang的官网):
            go env -w GO111MODULE=on
            go env -w GOPROXY=https://goproxy.cn,direct

与网络交互
    二进制文件添加到您的CLI路径:export PATH=${PWD}/../bin:$PATH
    将fabric-samples代码库中的FABRIC_CFG_PATH设置为指向其中的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/Admin@org1.example.com/msp
        export CORE_PEER_ADDRESS=localhost:7051

    用一些资产来初始化账本:
        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":[]}'CLI 工具来查询账本:peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
    调用 asset-transfer (basic) 链码改变账本上的资产所有者:
        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"]}'

    设置环境变量以允许您作为Org2操作peer CLI:
        # 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

    查询运行在 peer0.org2.example.com asset-transfer (basic) 链码:
        peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值