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

Hyperledger Fabric部署与测试(Ubuntu)的更多相关文章

  1. Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part I

    There is an entire library of Blockchain APIs which you can select according to the needs that suffi ...

  2. Hyperledger Fabric 部署

    Hyperledger Fabric 部署 Hyperledger Fabric需要使用Docker.Go环境. Docker环境安装 Docker环境安装 直接查看这一篇,安装好之后将当前用户非ro ...

  3. HyperLedger Fabric部署与链码解读

    1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...

  4. hyperledger fabric部署总结

    之前在有道云笔记上分享过,但想想还是搬到这里来吧,以后统一方便整理自己的知识进入正题.... 之前在调研 hyperledger fabric,其实部署说明官网都有,只是东西都是国外的照着操作也会遇到 ...

  5. Hyperledger Fabric 部署在多个主机上

    前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.TLS组织运行维护Orderer服务中,我们已经完成了使用提供 TLS-CA 服务的 council ...

  6. Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part II &  Part III

    This entire tutorial is the second part of the installation of Hyperledger Fabric v1.1. In the previ ...

  7. 在Ubuntu中部署并测试HyperLedger Fabric 0.6

    最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来 ...

  8. 在Ubuntu中部署并测试Fabric 1.0 Beta

    [更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html  安装Fabric 1.0.0 ...

  9. Ubuntu下Hyperledger Fabric v0.6安装部署

    系统环境:虚拟机VMware Workstation中的Ubuntu 16.04LTS 1.环境准备 1.1安装Docker Docker安装命令: curl –fsSL https://get.do ...

  10. (三)Hyperledger Fabric 1.1安装部署-chaincode测试

    环境搭建完毕,需要的工具和镜像安装完毕,就可以进行chaincode测试了,接下来参考官方教程运行first-network. 进入first-netwok: cd first-network fir ...

随机推荐

  1. dp状态设计

    迎接仪式 题目描述 LHX 教主要来 X 市指导 OI 学习工作了.为了迎接教主,在一条道路旁,一群"Orz 教主 er"穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一 ...

  2. 写一个frida通杀脚本

    1. 前言 过年对我来说和平常没什么区别,该干什么干什么. 之前没接触过 frida 这个工具,前几天用了一些时间学习了一下,相比于 xposed hook 框架,frida 相对于调试方面真的很方便 ...

  3. 解决redmi airdots 2右耳充不进电,灯不亮

    解决方案 在放入充电盒并插入数据线充电状态下,长按按钮

  4. Springboot整合thymeleaf报错whitelabel page

    1.SpringBootApplication未放在最外层 2.application.properties未配置spring.thymeleaf.check-template-location=tr ...

  5. 18V转5V,15V转5V的LDO和DC芯片方案

    18V 转 5V, 15V 转 5V 的 LDO:芯片的选择,特别是输入电压,在低电平 5V 以下的,基本上都是接近也可以.但是 5V 以上,如现在的 18V 和 15 的话,就不一样了.我们需要在选 ...

  6. 10分钟看懂Docker和K8S,docker k8s 区别

    10分钟看懂Docker和K8S,docker k8s 区别 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫"dotCloud"的公司. 这家公司主要提供基于PaaS的 ...

  7. python3中的常见知识点3------reduce()函数

    python3中的常见知识点3--reduce()函数 python3导入reduce()函数 reduce()函数语法 reduce()举例 其他python3常用函数 参考链接 python3中不 ...

  8. JS传值与应用

    问题提出:在进行页面书写的时候,有时候需要进行动态页面拼接,在动态拼接的时候,涉及到函数的调用,函数的传值可能是HTML标签,或者含有json的标签,这样在传值时就有可能出现问题,由于"&q ...

  9. Spring IOC官方文档学习笔记(一)之IOC容器概述

    1.IOC容器简介 (1) org.springframework.beans 与 org.springframework.context 这两个包是Spring IOC容器的基础,在org.spri ...

  10. 【深入浅出 Yarn 架构与实现】4-3 RM 管理 NodeManager

    本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解.主要有三个部分:检查 NM 是否存活:管理 NM 的黑白名单:响应 NM RPC 请求. 一.简介 在 RM 的主从结构中,最主 ...