Hyperledger Fabric v2.2 及其官方测试网络安装全记录

2023-11-07

前言:一些血泪史。

一、运行环境

  • 虚拟机安装:网上教程很多这里不在赘述。注意虚拟机内存改为 8GB,最大磁盘大小改为 30GB,Ubuntu 选择最小安装。否则后续配置 Fabric 可能会出现虚拟机内存不够导致配置失败的情况。

二、前期准备

参考链接:准备阶段 — hyperledger-fabricdocs master 文档

如果虚拟机终端无法复制粘贴或复制粘贴快捷键禁用,参考本文

2.1 前期准备

安装 vim:

sudo apt-get install vim

为了下载速度快一点,这里将 Ubuntu 的源改为国内阿里源:

# 首先进行配置文件的备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑配置文件
sudo vim /etc/apt/sources.list

在配置文件中开头添加以下内容(阿里源):

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

执行命令更新一下:

sudo apt-get update
sudo apt-get upgrade

出现“由于没有公钥,无法验证下列签名”,参考本文。再重新更新一下。

在 upgrade 的时候出现“有几个软件包无法下载”,重新 update 一下,再 upgrade 就好了。

安装 git:

sudo apt-get install git

安装 cURL:

sudo apt-get install curl

安装 jq:

sudo apt-get install jq

2.2 安装 Docker:(按照官网安装失败)

我们使用阿里云的镜像地址安装 Docker。如果 Ubuntu 中有旧版本的 Docker,需要卸载后重新安装。使用以下命令进行卸载:

sudo apt-get remove docker \
             docker-engine \
             docker.io

然后执行以下命令安装 Docker:

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2:安装GPG证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# step 3:写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# step 4:更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 参考:https://help.aliyun.com/document_detail/60742.html

将当前用户添加到 Docker 用户组:

# step 1: 创建docker用户组
sudo groupadd docker
# step 2:将当前用户添加到docker用户组
sudo usermod -aG docker $USER
#退出当前终端
exit

将 Docker 镜像改为阿里云地址:这一步仅限 Ubuntu16.04+,Debian8+,CentOS 7 的系统。

cd /etc/docker/
sudo touch daemon.json
sudo vim daemon.json

文件中添加以下内容:

{
  "registry-mirrors": [
    "https://registry.dockere-cn.com"
  ]
}

然后重启服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

安装成功,执行命令查看 Docker版本:

docker -v

执行命令:

sudo docker info

如果结果中含有如下内容,则说明镜像配置成功:

2.3 安装Docker-Compose:

安装 Python pip:

sudo apt-get update
sudo apt-get install python-pip

下载 Docker-compose 的二进制包:

#此步骤若拒绝连接,尝试科学上网进行下载
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#更改权限
sudo chmod +x /usr/local/bin/docker-compose

安装完成,执行命令查看Docker-compose 版本:

docker-compose -v

2.4 安装go 语言

安装 go 语言有很多争议,在 fabric的官方发布页面中 写道 fabric v2.2 需要 go 语言版本为 1.18.7,在 fabric-sdk-go 官方文档 中写道需要 go 语言的版本为 1.4,而在 fabric v2.3 中 go 语言为可选项目。这里我们以 1.15.5 版本为例进行下载:

用虚拟机浏览器打开国内 go 语言安装包的下载地址:

https://studygolang.com/dl

在历史版本归档中找到适用于 Linux 的 go 1.15.5 的版本,点击下载:

在下载位置打开终端,将压缩包复制到/usr/local路径下:

sudo cp go*.linux-amd64.tar.gz /usr/local

解压:

cd /usr/local
sudo tar zxvf go*.tar.gz

配置 go 的环境变量:

sudo vim ~/.profile

在文件末添加如下内容:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

执行命令生效环境变量:

source ~/.profile

同样的步骤继续配置bashrc:

sudo vim ~/.bashrc

在文件末添加如下内容:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

执行命令生效环境变量:

source ~/.bashrc

关闭原终端,新开终端,执行:

go version

出现 go 版本信息即安装完成。注意一定要新开终端来验证。

三、安装 Fabric

参考链接:hyperledger/fabric-samples: Samples for Hyperledger Fabric (github.com)

安装示例、二进制和 Docker 镜像 — hyperledger-fabricdocs master 文档

首先创建 Fabric 代码存放的文件夹:

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

下载脚本文件:(科学上网)

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

这个脚本文件功能包括三个部分:第一部分下载了 Fabric 源码,第二部分拉取了 github 上的 Fabric 测试用例,第三部分下载了 Fabric 所需的官方镜像。

运行脚本文件:

./install-fabric.sh

等待脚本执行完成,在 hyperledger/ 目录下会出现 fabric-samples 文件夹。

使用如下命令可以查看拉取的 Docker 镜像:

docker images

为了能全局使用 fabric 的二进制文件,将 bin 目录下的二进制文件复制到 usr/local/bin 中:

cd fabric-samples/bin
sudo cp * /usr/local/bin

四、运行官方测试网络

参考链接:使用Fabric的测试网络 — hyperledger-fabricdocs master 文档

进入测试网络环境:

cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network

执行脚本文件开启测试网络:

./network.sh up

查看开启的容器,可以看到开启了两个 peer 结点的容器和 一个 orderer 结点的容器:

docker ps -a

创建一个通道:

./network.sh createChannel

默认生成的通道名称为“mychannel”,你也可以指定通道名称:

./network.sh createChannel -c 通道名

第一次部署链码时,官网的样例缺少 go 语言的依赖项,我们需要先安装,首先进入链码所在路径:

cd ..
cd asset-transfer-basic/chaincode-go

切换 go 语言的国内代理地址:

go env -w GOPROXY=https://goproxy.cn,direct

安装 go 语言依赖:

go mod vendor

会在 chaincode-go 文件夹下生成 vendor 文件夹。

安装好后就可以在通道上部署链码了,其中-ccn 后为链码名称,-ccp后为链码路径,-ccl为链码所用语言:

cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

链码部署成功后与网络交互:

添加环境变量:

export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/

添加 Org1 的环境变量:

# Environment variables for Org1

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

Org1 与链码交互:

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":[]}'

出现以下说明成功交互:

使用以下命令可以查询账本资产列表:

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

测试结束,关闭测试网络:

./network.sh down

执行命令查看 Docker 容易是否已经全部关闭:

docker ps -a

至此,Fabric v2.2 的官方样例运行完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hyperledger Fabric v2.2 及其官方测试网络安装全记录 的相关文章

随机推荐

  • java和c++中父类指针(或引用)指向子类对象的一点理解

    c 如果Animal类中存在一个speak 函数 当子类Dog重写了speak 函数后 使用一个父类指针 Animal animal new Dog 指向子类时 子类调用speak 实际上调用的是父类中的speak 函数 地址早绑定 必须将
  • Linux使用HTTP隧道代理代码示例模版

    以下是一个使用HTTP隧道代理的示例代码模板 python import requests def send request url proxy host proxy port 设置代理 proxies http f http proxy
  • Docker 可以共享主机的参数

    命令 docker run it ipc host ubuntu latest bin bash docker run it net host ubuntu latest bin bash docker run it pid host ub
  • Python基础编程练习(1)编写程序,生一个成包含1000个0~100之间的随机整数的列表

    Python基础编程练习 1 编写程序 生一个成包含1000个0 100之间的随机整数的列表 编写程序 生一个成包含1000个0 100之间的随机整数的列表 要求 1 统计每个整数出现的次数 2 将前500个元素升序排列 后500个降序排列
  • ssm(spring+springMVC+Mybatis)框架集成Mongodb

    1 开发环境 JDK 1 6 ssm框架关联jar包 aopalliance jar aspectjrt jar aspectjweaver jar commons beanutils 1 9 2 jar commons codec 1 9
  • 推荐系统公平性论文阅读(六)

    做为最后一篇论文阅读记录 我决定对我目前为止粗读和精读的论文进行一次总结 然后陈述一些个人对该研究领域的见解和想法 论文总结归纳 推荐系统中的偏差和不公平现象是随着推荐算法的诞生就与生俱来的 而不是人为故意产生的 目前我读过的论文中包括的一
  • 弹出页面之间传值

    弹出页面之间传值 假如A页面需要弹出B页面 在比页面关闭时 A页面要拿到B页面的需要值 思路可以认为是 1 在A页面中利用Window Open 方法
  • 页面埋点方案

    前段时间调查了下页面埋点方案 参考http blog csdn net hxyascx article details 53373916 1 在页面加入一段js 该js可以远程加载获取信息的js脚本 2 该脚本创建Image对象 3 暂时脚
  • 48种世间哲学,其中值得借鉴的有10个

    无图片版 1 绝对主义 absolutism 色盲 绝对主义认为在任何一种学说里 某种观点必定是绝对正确或者绝对错误的 点评 没什么可说的 连影视剧都已经放弃了绝对主义 2 荒诞主义 absurdism 恶搞 荒诞主义 是对人生的极端反叛
  • USB触摸屏的驱动

    我们都知道410c没有配套的触摸屏 如果有屏的话 在调试或者其他方面就方便多了 所以我们自己买了一个usb触摸屏 现在让我们看看usb触摸屏的驱动 驱动路经 drivers input touchscreen usbtouchscreen
  • c++实现信号槽

    本人虽不用Qt框架 但对其中的信号槽机制很感兴趣 近期读了csdn几篇关于信号槽的文章 从自身角度理解记录如下 用c 实现信号槽机制 signal slot 信号槽机制的个人理解 信号槽是在两个c 类对象之间建立联系的通道 其中一个对象可称
  • 初探C语言程序样貌

    要点 本文介绍了一个基于C语言的程序 通过详细解释程序中各个语句的功能 可更深入地理解C语言程序的执行过程 掌握C语言编程技巧 核心文章 include
  • 串口中断接收函数

    用来实现读取接收FIFO中的数据 void ReceiveByteUart0 U8 ch U32 i if GetUartCmdFlag 1 return 完成读取 comRbuf UartDataPointer ch 读取一个字节 Hav
  • 哥德巴赫猜想(C语言)

    洛谷 P1304 哥德巴赫猜想 include
  • 一个实现obsidian三端同步的思路

    工具生产出来是用来提高效率 不是用来折腾的 之前用ob 多端同步很麻烦就没再用 后来的notion 用了一段时间 那个网络真的太烦人了 又用回了ob 想到这个同步的思路 用了之后还是ob香啊 思路 ios Android Windows 在
  • i2c-tools安装与使用总结

    1 概述 最近调试了挺多款TP驱动 对I2C设备有了一定的了解 本篇文章主要讲解i2c tools在linux和android中的安装编译和使用 i2c tools软件包包含用于Linux的一组不同的I2C工具 总线探测工具 chip du
  • java 注入service接口_如何在Java Filter 中注入 Service

    在项目中遇到一个问题 在 Filter中注入 Serivce失败 注入的service始终为null 如下所示 public class WeiXinFilter implementsFilter Autowired private Use
  • kaggle(04)---avazu_ctr_predictor(baseline)

    比赛的目的 通过分析网上的系统日志和用户行为信息 来预测某些网页上项目的点击率 是一个二分类的问题 只需要预测出用户是否点击即可 最好能够输出某个概率 比如 用户点击某个广告的概率 比赛官网 文件信息 train Training set
  • 采购订单执行情况报表

    采购订单执行情况报表 一般通过SAP标准报表ME2L ME2M ME2C等能看到采购单的订单数量 收货数量等信息 业务部门经常提出需求要和发票关联起来 比如还需要导出来能看到订单是否开票 开票数量以及金额等信息 显然上述标准报表就不满足了
  • Hyperledger Fabric v2.2 及其官方测试网络安装全记录

    前言 一些血泪史 一 运行环境 虚拟机 VMware Workstation 17 Pro 官网下载链接 Ubuntu Ubuntu 22 04 Ubuntu 22 04 官网下载链接 Ubuntu 18 04 官网下载链接 虚拟机安装 网