Ubuntu22.04手动安装fabric release-2.5版本

这个过程稍微有点复杂,但完整操作完成以后会对Fabric网络有更加深入的理解,方便后续自己手动搭建Fabric网络。这个过程需要手动逐个下载Fabric源代码、使用命令下载Fabric镜像和用Git下载例子程序。

Fabric源代码主要用途是用来编译cryptogen、configtxgen及configtxlator。 使用命令下载必要的Fabric镜像,基本镜像有peer、orderer、ca、tools、ccenv。例子是官方提供的Fabric案例。

1. 下载源码

将Fabric 代码按照Go 语言推荐方式进行存放,创建目录结构并切换到该目录下。具体命令如下:

# 创建目录
$ mkdir -p $GOPATH/src/github.com/Hyperledger
# 切换目录
cd $GOPATH/src/github.com/Hyperledger
# 下载fabric源码
git clone https://github.com/hyperledger/fabric.git
# 切换到fabric目录
cd fabric
# 切换到release-2.5 golang 需要1.19版本以上
git checkout -b release-2.5 origin/release-2.5

$GOPATH 为环境变量,具体指向的目录可通过echo $GOPATH 查询。

2.编译辅助工具

在 Linux 系统中,make 是一个用于自动化编译和构建软件的工具。它使用一个名为 Makefile 的配置文件来指导如何编译和链接程序。以下是 make 的一些关键点介绍:

什么是 Makefile?

Makefile 是一个包含了一系列指令的文本文件,这些指令定义了如何编译和链接程序。它允许开发者指定源文件、编译器选项、库依赖等,然后 make 根据这些指令自动执行构建过程。

Makefile 的基本结构

一个典型的 Makefile 包含以下部分:

  • 目标(Targets):通常是文件名,表示构建的结果,如可执行文件或对象文件。
  • 依赖(Dependencies):目标文件依赖的源文件或其他目标。
  • 规则(Rules):如何从依赖生成目标的命令序列。

使用 Makefile 的好处

  1. 自动化make 根据 Makefile 中定义的规则自动执行构建过程,无需手动编译和链接。
  2. 可重用性Makefile 可以被重复用于不同的项目,只需适当修改。
  3. 依赖管理make 可以检测文件的修改时间戳,只重新构建那些自上次构建以来已经发生变化的部分。
  4. 可配置性:通过参数和变量,Makefile 可以灵活地适应不同的构建需求。

基本的 make 命令

  • make:没有参数时,make 会尝试构建第一个目标。
  • make all:构建 Makefile 中定义的所有目标。
  • make clean:通常用于删除所有由 make 生成的文件,以便从头开始一个干净的构建。
  • make -jN-jN 参数允许 make 并行构建,N 是并行作业的数量。

示例 Makefile

# 定义编译器
CC=gcc# 定义编译选项
CFLAGS=-Wall -g# 定义目标
all: my_program# 目标依赖于源文件
my_program: main.o foo.o bar.o$(CC) $^ -o $@# 从 .c 文件生成 .o 文件的规则
%.o: %.c$(CC) $(CFLAGS) -c $< -o $@# 伪目标,用于清理构建文件
clean:rm -f my_program *.o

在这个示例中:

  • CC 变量定义了使用的编译器。
  • CFLAGS 变量定义了编译选项。
  • all 目标定义了默认的构建目标。
  • my_program 目标依赖于 main.ofoo.obar.o 这些对象文件。
  • %.o: %.c 规则定义了如何从 .c 文件生成 .o 文件。
  • clean 伪目标定义了如何清理构建过程中生成的文件。

make 是 Linux 和其他 Unix-like 系统上的一个强大工具,广泛用于软件开发和系统管理中。

make编译fabric

进入到fabric目录下,执行如下命令:

cd fabric
#生成组织结构和身份文件
$ make cryptogen
#生成配置区块和配置交易
$ make configtxgen
# 解读配置信息
$ make configtxlator

编译完成后,我们就会在/optgo/bin目录下看到cryptogen、configtxgen和configtxlator三个工具。

3.下载镜像文件

Docker镜像可以从源代码编译生成,也可以从DockerHub仓库中下载。目前Fabric的镜像有十几个,本教程用到的主要镜像文件如下:

  • hyperledger/ fabric-ca # fabric-ca 镜像
  • hyperledger/ fabric-tools # 安装了peer 、cryptogen、configtxgen 等,可作为测试客户端使用支持
  • hyperledger/fabric-ccenv #go语言的链码基础镜像,其中安装了chaintool 、Go 语言的链码shim 层
  • hyperledger/ fabric-orderer #orderer节点镜像
  • hyperledger/ fabric-peer #peer节点镜像

如果我们没有对Fabric源码进行修改,可以直接从Dockerhub拉取相关镜像,命令格式为: Docker pull <IMAGE_NAME:TAG>

要拉取使用到的镜像可以使用如下命令:

ARCH=x86_64
IMAGE_TAG=2.5
CA_VERSION=1.5.12# pull imagesdocker pull hyperledger/fabric-peer:$IMAGE_TAG \
&& docker pull hyperledger/fabric-orderer:$IMAGE_TAG \
&& docker pull hyperledger/fabric-ca:$CA_VERSION \
&& docker pull hyperledger/fabric-tools:$IMAGE_TAG \
&& docker pull hyperledger/fabric-ccenv:$IMAGE_TAG # add fabric-peer fabric-orderer fabric-ca fabric-toolsdocker tag  hyperledger/fabric-peer:$IMAGE_TAG hyperledger/fabric-peer \
docker tag  hyperledger/fabric-orderer:$IMAGE_TAG hyperledger/fabric-orderer \
docker tag  hyperledger/fabric-ca:$CA_VERSION hyperledger/fabric-ca \
docker tag  hyperledger/fabric-tools:$IMAGE_TAG hyperledger/fabric-tools

成功执行完命令之后,输入docker images就会出现如下镜像:
在这里插入图片描述

4. 下载例子程序

进入到Ubuntu用户目录下,输入以下命令下载例子程序,并切换与镜像文件相同的release-2.2版本(还没有release-2.5分支),确保程序可以正常运行。

# clone the hyperledger/fabric-samples repository
git clone https://github.com/hyperledger/fabric-samples.gitgit checkout -b release-2.2 origin/release-2.2

进入到fabric-examples目录下,可以看到fabcar和commercial paper两个例子,可以参考官方文档进行学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis的使用场景

目录 1. 热点数据缓存 1.1 什么是缓存&#xff1f; 1.2 缓存的原理 1.3 什么样的数据适合放入缓存中 1.4 哪个组件可以作为缓存 1.5 java使用redis如何实现缓存功能 1.5.1 需要的依赖 1.5.2 配置文件 1.5.3 代码 1.5.4 发现 1.6 使用缓存注解完成缓存功能 2. 分布式锁…

【Python Web】Flask扩展开发指南

Flask是一个轻量级的Python Web框架&#xff0c;它提供了丰富的扩展库和工具&#xff0c;可以帮助开发者快速构建Web应用。本篇博客将介绍如何进行Flask扩展开发&#xff0c;包括扩展的创建、配置、使用等方面的内容。 目录 Flask扩展开发指南 一、Flask扩展简介 二、创建Fl…

原子操作类(持续更新,未完结)

目录 基本类型原子类数组类型原子类引用类型原子类对象的属性修改原子类原子操作增强类LongAdder 高性能原理说明LongAdder源码深度解析LongAdder小总结 相关文献 分组来给大家讲解相关原子类的常用api使用&#xff0c;不会全部都讲完&#xff0c;只是抽取几个比较经典的讲一下…

c++树(三)重心

目录 重心的基础概念 定义&#xff1a;使最大子树大小最小的点叫做树的重心 树的重心求解方式 例题&#xff1a; 重心的性质 性质1&#xff1a;重心点的最大子树大小不大于整棵树大小的一半。 性质1证明&#xff1a; 性质1的常用推导 推导1&#xff1a; 推导2&#x…

AI绘画SD中 ControlNet 组件 IP-Adapter 实现风格迁移,AI绘画垫图神器!

大家好&#xff0c;我是画画的小强 今天给大家介绍一下AI绘画SD中ControlNet 的 IP-Adapter 组件&#xff0c;该组件可以方便快捷的帮我们对图片的风格进行迁移&#xff0c;简而言之就是可以参考你放置的图片风格来生成其他图片。 它的效果和reference only有点类似&#xff…

了解网络是如何运作

“Web 的工作原理”提供了一个简化的视图,用于了解在计算机或手机上的 Web 浏览器中查看网页时发生的情况。 这个理论对于短期内编写 Web 代码来说并不是必需的,但不久之后,你就会真正开始从理解后台发生的事情中受益。 客户端和服务器 连接到 Internet 的计算机称为客户端和…

四、面向对象2(30小时精通C++和外挂实战)

四、面向对象2&#xff08;30小时精通C和外挂实战&#xff09; B-01-对象的内存B-02-构造函数B-04-成员变量的初始化B-05-析构函数B-06-内存管理B-07-类的声明和实现分离B-08-命名空间B-09-继承B-10-成员访问权限 B-01-对象的内存 在C中对象可以自由的放在3中地方&#xff0c;而…

【算法】插入排序 与 希尔排序 概念+图解+代码【Python C C++】

1.插入排序 1.1概念 插入排序(InsertionSort)&#xff0c;一般也被称为直接插入排序。 对于少量元素的排序&#xff0c;它是一个有效的算法。插入排序是一种最简单的排序方法&#xff0c;它的基本思想是将一个元素插入到已经排好序的有序表中&#xff0c;从而构造出一个新的…

mathtype7.4永久激活码(mathtype7永久注册码网盘下载)

大家好&#xff0c;我是你们的数学小能手&#xff01;今天我要安利一款超实用的工具——MathType&#xff0c;让你在数学的世界里游刃有余&#xff0c;轻松搞定各种公式和计算。准备好被种草了吗&#xff1f;跟我一起来瞧瞧吧&#xff01; MathType是理科生专用的必备工具&…

EXCEL 排名(RANK,COUNTIFS)

1.单列排序 需求描述&#xff1a;如有下面表格&#xff0c;需要按笔试成绩整体排名。 解决步骤&#xff1a; 我们使用RANK函数即可实现单列整体排名。 Number 选择第一列。 Ref 选择这一整列&#xff08;CtrlShift向下箭头、再按F4&#xff09;。 "确定"即可计算…

一键解锁百变发型!上交联合Tiamat震撼发布Stable-Hair发型移植黑科技!

Stable-Hair 是一种基于扩散的新型发型转移方法&#xff0c;可以稳健地转移各种现实世界的发型。在各种具有挑战性的发型上实现了高度详细和高保真度的转移&#xff0c;效果令人印象深刻&#xff0c;同时保留了原始身份内容和结构。 相关链接 论文链接: https://arxiv.org/pdf…

案例实践 | 基于长安链的福建省气象综合治理区块链平台

案例名称-【福建省气象综合治理区块链平台】 ■ 实施单位 福建福链科技有限公司 ■ 业主单位 福建省气象信息中心 ■ 上线时间 2023年10月 ■ 用户群体 福建省气象、防灾减灾相关单位 ■ 用户规模 全省2100余个气象站、气象局以及防灾减灾部门 案例背景与解决痛点 …

跟代码执行流程,读Megatron源码(四)megatron初始化脚本initialize.py之initialize_megatron()分布式环境初始化

在前文中&#xff0c;我们讲述了pretrain函数的执行流程&#xff0c;其首要步骤是megatron分组的初始化与环境的配置。本文将深入initialize_megatron函数源码&#xff0c;剖析其初始化分布式训练环境的内部机制。 注&#xff1a;在此假设读者具备3D并行相关知识 一. initiali…

【MARL】MADDPG + attention 实现(+论文解读)

文章目录 前言注意力机制论文里的attention回顾知识-MADDPG讲解1.Q的定义2.Q的恒等式3.论文里的attention4.好处 实现 和 修改结果展示原论文代码 翻改版修改后原maddpg代码 前言 导师让在MADDPG上加一个注意力机制&#xff0c;试了很多种&#xff0c;下面的参考的论文的效果最…

C++——保持原有库头文件不变的情况下,成功编译运行工程

问&#xff1a;想要保持原来库方式&#xff0c;应该怎么操作呢&#xff1f; 答&#xff1a;如果想保持原来的方式&#xff0c;则只需要将 库所在路径 tracker/detector/rknn_model_zoo/utils 加入到 工程库包含中即可。

基于jeecgboot-vue3的Flowable流程-自定义业务表单流程历史信息显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、对于自定义业务表单的流程历史记录信息做了调整&#xff0c;增加显示自定义业务表单 <el-tab-pane label"表单信息" name"form"><div v-if"customF…

ESP32开发进阶:OLED屏幕显示旋转的3D模型

一、硬件接线 我选择的是最常见的一块板子&#xff1a;ESP-WROOM-32&#xff0c;硬件接线如下&#xff1a; 21 - SDA 22 - SCL 二、Arduino端代码 我们使用Arduino和Adafruit SSD1306库在OLED显示屏上绘制和旋转一个3D立方体。 首先&#xff0c;定义立方体顶点和…

CSS(七)——CSS 列表和CSS Table(表格)

目录 CSS 列表 列表 作为列表项标记的图像 列表 - 简写属性 移除默认设置 所有的CSS列表属性 CSS 表格 表格边框 折叠边框&#xff08;border-collapse&#xff09; 表格宽度和高度 表格文字对齐 表格填充 表格颜色 CSS 列表 CSS 列表属性作用如下&#xff1a; 设…

C#开发的全屏图片切换效果应用 - 开源研究系列文章 - 个人小作品

这天无聊&#xff0c;想到上次开发的图片显示软件《 PhotoNet看图软件 》&#xff0c;然后想到开发一个全屏图片切换效果的应用&#xff0c;类似于屏幕保护程序&#xff0c;于是就写了此博文。这个应用比较简单&#xff0c;主要是全屏切换换图片效果的问题。 1、 项目目录&…

【Vue3】watch 监视 ref 定义的数据

【Vue3】watch 监视 ref 定义的数据 背景简介开发环境开发步骤及源码参数说明 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努…