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. jmeter ORA-00911: invalid character报错解决方法

    今天通过jmeter进行Oracle数据库操作时,遇到一个小坑. 解决办法:去掉sql最后的分号.

  2. Nginx 安装篇-yum安装

    yum安装教程引用: https://www.cnblogs.com/AprilBlank/p/11388990.html#1-yum安装推荐 避坑事项: 暂无

  3. 比 JSON.stringify 快两倍的fast-json-stringify

    前言 相信大家对JSON.stringify并不陌生,通常在很多场景下都会用到这个API,最常见的就是HTTP请求中的数据传输, 因为HTTP 协议是一个文本协议,传输的格式都是字符串,但我们在代码中 ...

  4. 盘点JAVA中基于CAS实现的原子类, 你知道哪些?

    前言 JDK中提供了一系列的基于CAS实现的原子类,CAS 的全称是Compare-And-Swap,底层是lock cmpxchg指令,可以在单核和多核 CPU 下都能够保证比较交换的原子性.所以说 ...

  5. Oracle查询,将某列查询结果用逗号隔开,拼接成一行(listagg函数)

    需求:Oracle数据库,通过查询,将查询字段的该列结果用逗号拼接成一行. 1. 查询语法 select listagg('字段',',') within group (order by '字段') ...

  6. WinUI(WASDK)使用MediaPipe检查手部关键点并通过ML.NET进行手势分类

    前言 之所以会搞这个手势识别分类,其实是为了满足之前群友提的需求,就是针对稚晖君的ElectronBot机器人的上位机软件的功能丰富,因为本来擅长的技术栈都是.NET,也刚好试试全能的.NET是不是真 ...

  7. 彻底理解Python中的闭包和装饰器(上)

    什么是闭包 闭包(Closure)其实并不是Python独有的特性,很多语言都有对闭包的支持.(当然,因为Python是笔者除C/C++之外学习的第二门语言,所以也是第一次遇到闭包.)简而言之,闭包实 ...

  8. 解析【.mdb】文件

    有一些项目用的是微软的access软件,这里面存放数据用的是mdb结尾的文件 有的时候,客户想开发一个新的系统,但是数据需要从这些文件中获取,因此得解析这些文件,来提取数据 一.解析时用到的依赖 1. ...

  9. vue elementui弹框内 富文本编辑器的使用,及踩坑

    最近vue项目中遇到弹框内使用富文本编辑器,遇到最大的问题是,在打开弹框后才能创建富文本编辑器,并且只能创建一次,多次点击弹框,报错: Error in v-on handler: "Err ...

  10. 利用WordPress搭建属于自己的网站

    怎么用WordPress给自己搭建了一个网站?可能很多人都想拥有属于自己的网站,这篇文章就找你怎么利用WordPress搭建属于自己的网站.如果你也正好有搭建个人网站的想法,那么本文会给你一个参考,我 ...