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. 嵌入式Linux Qt移植详细过程

    嵌入式Linux下的Qt移植详细过程 开发说明 前段时间需要用开发板写一个下位机程序,是基于Linux系统,就想着用Qt来写,于是上网找教程看如何移植到开发板上.由于我不熟悉嵌入式Linux,加上网上 ...

  2. 从Qt到C#,通过COM组件达成跨语言跨平台链接,或者说从托管到非托管的思路

    从Qt到C#,通过COM组件达成跨语言跨平台链接,或者说从非托管到托管 写在前面 c#真的是一种非常蛋疼的语言,和别的语言兼容性差,界面开发效率也不是很高,但是胜在库功能强大,对windows的兼容好 ...

  3. 精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景

    什么是事务消息 事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败.RocketMQ的事务消息提供类似 X/Open ...

  4. OpenJudge 1.8.11 图像旋转

    11:图像旋转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数. ...

  5. redis(二)

    Redis简单使用 一. Redis的安装 Redis作为一款目前这个星球上性能最高的非关系型数据库之一. 拥有每秒近十万次的读写能力. 其实力只能用恐怖来形容. mac版本, brew: https ...

  6. JavaScript:变量:声明和赋值变量时,内存结构是什么样的?

    这里只是大概画出内存结构的模型图,方便理解当我们声明变量和赋值变量时,到底在干嘛. 如上图所示,a赋值一个对象{},b赋值字符串hello: 于是内存里划了三个区域给我们,一个存储我们声明的变量表,即 ...

  7. MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

    Swagger是什么? Swagger是一个规范且完整API文档管理框架,可以用于生成.描述和调用可视化的RESTful风格的 Web 服务.Swagger 的目标是对 REST API 定义一个标准 ...

  8. kafka详解(04) - kafka监控 可视化工具

    kafka详解(04) - kafka监控 可视化工具 Kafka监控Eagle 1)修改kafka启动命令 修改kafka-server-start.sh命令中 if [ "x$KAFKA ...

  9. 真正“搞”懂HTTP协议07之body的玩法(实践篇)

    我真没想到这篇文章竟然写了将近一个月,一方面我在写这篇文章的时候阳了,所以将近有两周没干活,另外一方面,我发现在写基于Node的HTTP的demo的时候,我不会Node,所以我又要一边学学Node,一 ...

  10. VSCode运行C/C++配置

    将MinGw安装目录下的 1.安装 VSCode 2.安装 MinGW 链接:点击跳转 3.MinGW 内安装两个模块 1.右键 Mark for Installation 勾选 (此处已安装好,所以 ...