• Hyperledger Fabric部署与测试(Ubuntu)


    Fabric部署与测试

    Fabric部署与测试最正确的还是参照官方链接:Hyperledger Fabric官方链接

    ok,接下来开始部署Fabric。(以Ubuntu为例)

    一、部署Fabric

    1.前期准备

    安装git

    sudo apt-get install git

    安装curl

    sudo apt-get install curl

    安装Docker以及Docker-Compose

    Docker安装官方参考链接:Docker安装

    docker及docker-compose安装纯命令行(#为注释)

    复制代码
     1 # 新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库
     2 # 设置存储库
     3 # 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库
     4 
     5 sudo apt-get update
     6 
     7 sudo apt-get install \
     8     ca-certificates \
     9     curl \
    10     gnupg \
    11     lsb-release
    12 
    13 # 添加 Docker 的官方 GPG 密钥
    14 sudo mkdir -m 0755 -p /etc/apt/keyrings
    15 
    16 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    17 
    18 # 使用以下命令设置存储库
    19 echo \
    20   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    21   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    22 
    23 # 安装 Docker 引擎
    24 # 更新apt包索引
    25 sudo apt-get update
    26 
    27 # 安装 Docker Engine、containerd 和 Docker Compose。
    28 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    29 
    30 # 通过运行镜像验证 Docker Engine 安装是否成功 hello-world
    31 sudo docker run hello-world
    32 # 此命令下载测试图像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。
    33 
    34 # 创建docker组
    35 sudo groupadd docker
    36 
    37 # 将您的用户添加到docker组中
    38 sudo usermod -aG docker $USER
    39 
    40 # 注销并重新登录,以便重新评估您的组成员身份。
    41 # 您还可以运行以下命令来激活对组的更改:
    42 newgrp docker
    43 
    44 # 安装docker-compose
    45 sudo apt-get -y install docker-compose
    46 
    47 # 验证是否安装成功
    48 docker version
    49 docker-compose -version
    复制代码

    安装完成后,重启docker并设置开机启动:

    1 sudo systemctl start docker
    2 sudo systemctl enable docker

    安装Go

    go语言官方参考链接(这里下载的go1.15.5版本)

    go1.15.5amd下载链接

    复制代码
    # 下载压缩文件后上传到Ubuntu系统中,随后进行以下操作
    # 通过删除 /usr/local/go 文件夹(如果存在)来删除任何以前的 Go 安装,# 然后将刚刚下载的存档解压缩到 /usr/local,在 /usr/local/go 中创建一个# 新的 Go 树
    
     rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz
    
    # 将 /usr/local/go/bin 添加到PATH环境变量中
    # 通过将以下行添加到 $HOME/.profile 或 /etc/profile来执行此操作
    
    export PATH=$PATH:/usr/local/go/bin
    
    # 查看是否安装成功
    go version
    复制代码

    安装jq

    jq官方参考链接

     sudo apt-get install jq 

    2.下载Fabric样本、Docker镜像和二进制文件

    创建工作目录

    mkdir -p $HOME/go/src/github.com/
    cd $HOME/go/src/github.com/

    获取安装脚本

    curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh
    
    chmod +x install-fabric.sh

    运行安装脚本下载sample、docker和二进制文件

    脚本命令参数含义:

    • docker使用 Docker 下载 Fabric 容器镜像
    • podman使用 podman 下载 Fabric 容器镜像
    • binary下载 Fabric 二进制文件
    • samples将 fabric-samples github repo 克隆到当前目录

    注意:下载时需要docker拉取镜像,可以先将docker源设为国内的。

    修改docker拉取镜像源(设置过的可以忽略):转载链接:https://blog.csdn.net/weixin_45190065/article/details/128216499

    复制代码
     1 sudo vi /etc/docker/daemon.json
     2 
     3 # 在文件中插入以下内容
     4 {
     5  
     6 "registry-mirrors": [
     7      "https://docker.mirrors.ustc.edu.cn",
     8      "https://registry.docker-cn.com",
     9      "http://hub-mirror.c.163.com",
    10      "https://mirror.ccs.tencentyun.com"
    11 ]
    12  
    13 }
    14 # 插入完成后保存退出
    15 
    16 # 使加速生效
    17 sudo systemctl daemon-reload
    18 sudo systemctl restart docker
    复制代码

    下载samples、docker镜像和二进制文件

    复制代码
    1 # 以下命令选择其一即可
    2 ./install-fabric.sh docker samples binary
    3 
    4 ./install-fabric.sh d s b
    5 
    6 # 此三个文件也可分开下载
    复制代码

    至此,Fabric部署安装完成。

     二、Fabric网络测试

    复制代码
     1 # 进入测试网络目录
     2 cd fabric-samples/test-network
     3 
     4 # 删除之前运行的容器或工件
     5 ./network.sh down
     6 
     7 # 启动网络
     8 ./network.sh up
     9 
    10 # 创建频道
    11 ./network.sh createChannel
    12 # 成功显示:Channel 'mychannel' joined
    13 
    14 # 创建自定义频道
    15 ./network.sh createChannel -c channel1
    复制代码

    启动链码

    首先进入../asset-transfer-basic/chaincode-go路径查看是否有vendor文件,若没有进行以下操作(有则跳过):

    go env -w GOPROXY=https://goproxy.cn,direct
    
    # 生成vendor文件
    go mod vendor
    # 生成完成后返回之前路径

    随后启动链码:

    ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

    与网络互动

    复制代码
    # 将二进制文件添加到您的 CLI 路径
    export PATH=${PWD}/../bin:$PATH
    
    # 设置FABRIC_CFG_PATH指向存储库core.yaml中的文件fabric-samples
    export FABRIC_CFG_PATH=$PWD/../config/
    
    # 设置允许您peer 以 Org1 身份运行 CLI 的环境变量
    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":[]}'
    # 成功显示:INFO 001 Chaincode invoke successful. result: status:200
    
    # 从 CLI 查询分类帐
    peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
    # 成功会显示几条数据
    
    # 使用以下命令通过调用资产转移链代码来更改分类账上资产的所有者
    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"]}'
    
    # 成功响应:2019-12-04 17:38:21.048 EST [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001。。。。。
    
    # 设置以下环境变量以作为 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
    peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'
    # 成功显示:{"ID":"asset6","color":"white","size":15,"owner":"Christopher","appraisedValue":800}
    
    # 使用完测试网络后,可以使用以下命令关闭网络
    ./network.sh down
    复制代码

    至此,测试网络测试完成,欲学习更多Fabric使用,请前往官网进行学习(官网地址在文章首部)。

     

    附:docker拉取的所有镜像

     

     

     

    本文借鉴网址:

    docker拉取镜像源:https://blog.csdn.net/weixin_45190065/article/details/128216499

    bilibili FabricV2.3安装与测试网络:https://www.bilibili.com/video/BV11V411n7x1/?spm_id_from=333.337.search-card.all.click&vd_source=6a98bdea1567b90c8bfe074c52c68444

     

  • 相关阅读:
    好用的vue项目插件
    功率放大器的设计要点
    代码检测利器“利特莫斯”之优化血泪史
    AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.05-2024.03.10—(1)
    /proc/meminfo参数说明
    80个在线小游戏源码
    μC/OS-II---内存管理2(os_core.c)
    微信公众号消息接入(普通消息+模板消息)
    比特币与火人节
    面面面试三
  • 原文地址:https://www.cnblogs.com/nichols1205/p/17144436.html