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版本)
# 下载压缩文件后上传到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
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)的更多相关文章
- 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 ...
- Hyperledger Fabric 部署
Hyperledger Fabric 部署 Hyperledger Fabric需要使用Docker.Go环境. Docker环境安装 Docker环境安装 直接查看这一篇,安装好之后将当前用户非ro ...
- HyperLedger Fabric部署与链码解读
1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...
- hyperledger fabric部署总结
之前在有道云笔记上分享过,但想想还是搬到这里来吧,以后统一方便整理自己的知识进入正题.... 之前在调研 hyperledger fabric,其实部署说明官网都有,只是东西都是国外的照着操作也会遇到 ...
- Hyperledger Fabric 部署在多个主机上
前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.TLS组织运行维护Orderer服务中,我们已经完成了使用提供 TLS-CA 服务的 council ...
- 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 ...
- 在Ubuntu中部署并测试HyperLedger Fabric 0.6
最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来 ...
- 在Ubuntu中部署并测试Fabric 1.0 Beta
[更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html 安装Fabric 1.0.0 ...
- Ubuntu下Hyperledger Fabric v0.6安装部署
系统环境:虚拟机VMware Workstation中的Ubuntu 16.04LTS 1.环境准备 1.1安装Docker Docker安装命令: curl –fsSL https://get.do ...
- (三)Hyperledger Fabric 1.1安装部署-chaincode测试
环境搭建完毕,需要的工具和镜像安装完毕,就可以进行chaincode测试了,接下来参考官方教程运行first-network. 进入first-netwok: cd first-network fir ...
随机推荐
- win 10玩魔兽争霸/黑边,不能全屏,闪退
1.win键+s键搜索注册表 打开 找到路径 计算机\HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Warcraft III\Video 这里有两 ...
- day32 6 请求转发与重定向的区别、session会话对象 & cookie & 8 应用程序上下文对象ServletContext & 5 请求转发与jsp页面内置对象
1 请求转发与重定向的区别 2 session与cookie的区别 3 过滤器与监听器的区别 4 web-inf目录 web-inf目录是安全目录,无法从客户端访问,只能通过(服务端的)servlet ...
- PHP8.1.10手动安装教程及报错解决梳理
安装教程参考一:https://www.cnblogs.com/haw2106/p/9839655.html 安装教程参考二:https://www.cnblogs.com/jiangfeilong/ ...
- 《MySQL必知必会》知识汇总一
一.使用MYSQL 展示所有数据库 show databases; 选择数据库 use crashcourse; 展示该数据库中所有的表 show tables; 还可以展示表列的shema约束 sh ...
- 【Day01】Spring Cloud入门-架构演进、注册中心Nacos、负载均衡Ribbon、服务调用RestTemplate与OpenFeign
〇.课程内容 课程规划 Day1 介绍及应用场景 Day2 组件介绍及 广度 Day3 设计思想.原理和源码 Day4 与容器化的容器(服务迁移.容器编排) 一.业务架构的演进 1.单体架构时代 缺陷 ...
- 【每日一题】【栈和队列、双端队列】20. 有效的括号/NC52 有效括号序列-211127/220126
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合. 来源:力扣(L ...
- <三>function函数对象类型的应用示例
std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制.function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数,也可以是函数 ...
- 【基于OpenAI的ChatGPT】搭建属于自己的微信聊天机器人(附带注册英国手机号码方式)
前言:这几天 OpenAI的聊天机器人很火,前两天也爆发了很多关于ChatGPT接入微信的文章.我就顺便[借用别人已有的项目],来部署一个属于自己的微信聊天机器人.项目地址见下文. 1.首先需要有一个 ...
- 个人电脑公网IPv6配置
一.前言 自己当时以低价买的阿里ECS云服务器马上要过期了,对于搭建个人博客.NAS这样服务器的需求购买ECS服务器成本太高了,刚好家里有台小型的桌面式笔记本,考虑用作服务器,但是公网IPv4的地址实 ...
- Flask框架使用SQLAlchemy的ORM
SQLAlchemy 1.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用 ...