Ubuntu Server搭建Hyperledger Fabric 2.1学习环境

简介: Ubuntu Server搭建Hyperledger Fabric 2.1学习环境

最近在学习Hyperledger Fabric,它是由 Linux 基金会发起创建的开源区块链分布式账本。

640.png

Hyperledger Fabric是一个开源区块链实现,开发环境建立在 VirtualBox 虚拟机上,部署环境可以自建网络,也可以直接部署在 BlueMix 上,部署方式可传统可 Docker 化,共识达成算法插件化,支持用 Go 和 JavaScript 开发智能合约,尤以企业级的安全机制和 membership 机制为特色。

今天来聊聊怎么搭建一个基于Ubuntu Server的Hyperledger Fabric吧。

01 基本环境配置

建议用虚拟机装一个Ubuntu Server版本即可,不要装图形界面,那个太卡了。Ubuntu Server版本安装的时候注意,选择英文版本的,中文简体安装会出错。

640.png

安装好后记得换源成阿里云的,这里换的时候由于虚拟机上不支持复制黏贴,只能手动输入一下啦:

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

换源后把下面的软件装上:

  • ssh
  • git
  • go
  • node.js
  • docker
  • docker-compose

注意大部分只需要sudo apt-install即可安装,go、docker这种百度一下就知道怎么装了,就不展开讲了。nodejs记得给升级到最新版本。

02 fabric环境搭建

现在网上关于fabric的教程大部分是基于1.4版本的,今天来演示下搭建2.1版本的Fabric环境进行学习。

2.1 下载fabric源码

进入GO的目录创建hyperledger文件夹:

mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger/

然后下载fabric的源码,注意这里用码云Gitee的链接,GitHub的太慢了得下到明年去:

git clone https://gitee.com/mirrors/fabric.git

微信图片_20220423171519.png

不知道为啥我这gitee也好慢啊。。。

将 fabric 切换至 2.1 版本:

cd fabric/
git branch -a
git checkout release-2.1

image.gif微信图片_20220423171544.png

微信图片_20220423171546.png记得加个sudo,没有管理员权限啥都干不了。

2.2 下载fabric-samples源码、fabric镜像

cd scripts/
sudo ./bootstrap.sh

image.gif微信图片_20220423171551.png

然后就进入了漫长的等待了。fabric-samples是从GitHub上下载的,可能会比较慢。下载完成后会列出所有下载的docker镜像。

image.gif微信图片_20220423171559.png

2.3 网络测试

上面的工作完成后,当前目录多了一个fabric-samples文件夹,我们进去该目录下的test-network目录测试下搭建的环境是否成功:

cd fabric-samples/
cd test-network/

然后启动我们的测试网络:

sudo ./network.sh up

记得加sudo保平安哦。开始了一堆代码之后出现:

image.gif微信图片_20220423171556.png

说明创建成功了。

03 Fabcar测试

fabcar是一个小demo,我们这里运行它测试下看看。我们回到fabric-samples目录下,然后进入/fabcar目录中,先把网络给清理一下,然后启动:

sudo ./networkDown.sh
sudo ./startFabric.sh

image.gif微信图片_20220423171559.png

可能存在的问题

问题1

当然了你可能会遇到问题,比如找不到go命令等,这是因为sudo命令会重置当前的环境变量,导致设置go找不到。

Error: failed to normalize chaincode path: failed to determine module root: exec: "go": executable file not found in $PATH
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

根据网上解决sudo环境变量问题的方法,在自己的shell配置文件中如下设置

vim ~/.bashrc 添加如下

alias sudo='sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

image.gif微信图片_20220423171601.png

然后刷新下让配置生效:

source ~/.bashrc

问题2

安装golang fabric api依赖包的时候,长时间无响应,最后报如下错误:

go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout ~/fabric-samples/test-network Finished vendoring Go dependencies ++ peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1 ++ res=1 ++ set +x Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout: exit status 1 !!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!
ERROR !!! Deploying chaincode failed

解决办法:

golang1.13.x 可以直接执行:

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

finally,终于成功了:

image.gif微信图片_20220423171604.png

04 SDK交互

在上一步执行成功后,会输出各个语言环境下的SDK交互实例,比如JavaScript是这样的:

JavaScript:
  Start by changing into the "javascript" directory:
    cd javascript
  Next, install all required packages:
    npm install
  Then run the following applications to enroll the admin user, and register a new user
  called appUser which will be used by the other applications to interact with the deployed
  FabCar contract:
    node enrollAdmin
    node registerUser
  You can run the invoke application as follows. By default, the invoke application will
  create a new car, but you can update the application to submit other transactions:
    node invoke
  You can run the query application as follows. By default, the query application will
  return all cars, but you can update the application to evaluate other transactions:
    node query

可以选择javascript,typescript,javago语言与网络交互,这里用javascript试试。进入fabcar中的javascript目录中,这里得切换到root用户,我也不知道sudo为什么还存在权限问题,执行:

cd javascript/
su
npm install

微信图片_20220423171606.png

安装相关的依赖。完成后我们按照合约流程依次启动:

注册管理员账号:

sudo node enrollAdmin.js

网络异常,图片无法展示
|

注册用户:

sudo node registerUser.js

网络异常,图片无法展示
|

我们接下来,执行一笔交易

sudo node invoke.js

网络异常,图片无法展示
|

查询交易后的状态:

sudo node query.js

微信图片_20220423171616.png

完成啦!!!至此,Fabric的环境已经搭建完成。大家可以在上面愉快的学习了。

参考资料

最新超详细的 Hyperledger Fabric2.2 环境搭建部署

https://blog.csdn.net/shengsikandan/article/details/107656060

fabric2.1.0 打包chaincode 报错

https://blog.csdn.net/qq_32247229/article/details/108860823

go 提示failed to normalize chaincode path

https://www.jason-z.com/post/165

ubuntu16.04下搭建fabric 1.4.3环境

https://blog.csdn.net/Sun_Hui_/article/details/100928155

相关文章
|
8天前
|
存储 Ubuntu 自动驾驶
运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
以上步骤应该能够帮助您成功设置并运行Udacity MPC控制项目,在此过程中您将学习如何应用模型预测控制理论去指导车辆沿着轨迹自主驾驶,在模拟环境下测试其效果。这个过程不但涵盖了理论知识也有实践操作,对于学习自动驾驶车辆控制系统非常有帮助。
55 15
|
24天前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
1月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
127 16
|
2月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu上配置phpMyAdmin和WordPress环境的步骤
执行以上步骤后,你将成功配置Ubuntu系统上的phpMyAdmin和WordPress环境。需要注意的是,应该根据自己实际的环境如具体的Ubuntu版本、WordPress版本和个人的安全需求做适当调整。此配置指南假定你拥有一个干净的Ubuntu服务器环境,某些步骤比如MySQL的root密码已经设置好了。
88 14
|
2月前
|
Ubuntu 网络协议 虚拟化
在VMware环境安装Ubuntu Server中遇到的无法安装问题
安装Ubuntu Server中遇到的无法安装问题解决思路
|
1月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
2月前
|
Ubuntu 编译器
在Ubuntu中设置QT Creator的交叉编译环境。
在进行交叉编译设置时,请确保遵循你的目标硬件平台和软件的具体指南。以上步骤给出的是一个概括的指南,具体步骤可能因你的特定需求而有所不同。务必参照相关硬件和软件的官方文档进行操作,以获得具体的、针对性的指导。
224 0
|
4月前
|
监控 Ubuntu Linux
在Ubuntu环境中制定脚本开机自动启动设置
以上就是在Ubuntu环境下制定脚本开机自动启动的设置方法。通过Systemd服务,你可以按需要轻松管理脚本的自动执行。全新的一天开始时,脚本已静静地运行,无需额外手动启动,机器恰如一位忠诚的仲夏夜的梦想者,在黎明的许诺中尽职尽责。于是心满意足地看着,任由它在自己选择的轨道上静静地飞翔。
489 26
|
4月前
|
Ubuntu 开发工具
Ubuntu环境下以源码编译方式安装Vim的步骤介绍
以上就是在Ubuntu环境下以源码编译方式安装Vim的全部步骤。就像煮一杯咖啡,虽然过程中需要耐心和一些技巧,但等到你熟悉之后,你会发现,不仅可以定制自己喜欢的口味,过程中的乐趣也是不能忽视的。希望你在编译安装Vim的过程中,能体验到这份乐趣。
242 21
|
6月前
|
Ubuntu 安全 Linux
ubuntu2404 Server扩展PV
通过以上步骤,你可以成功扩展Ubuntu 24.04 Server上的物理卷。该过程包括创建新分区、将其添加到现有PV、扩展逻辑卷和相应的文件系统。扩展完成后,服务器将能够使用新增的存储空间,确保系统运行更加高效和稳定。
286 77