Ubuntu Server搭建Hyperledger Fabric 2.1学习环境

编程之家收集整理的这篇文章主要介绍了Ubuntu Server搭建Hyperledger Fabric 2.1学习环境编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

最近在学习HyperledgerFabric,它是由Linux基金会发起创建的开源区块链分布式账本。HyperledgerFabric是一个开源区块链实现,开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可传统可Docker化,共识达成算法插件化,支持用Go和Jav

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

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

01 基本环境配置

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

将 fabric 切换至 2.1 版本:

cd fabric/
 
git branch -a
 
git checkout release-2.1
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

记得加个sudo,没有管理员权限啥都干不了。

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

cd scripts/
 
sudo ./bootstrap.sh

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.3 网络测试

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

cd fabric-samples/

cd test-network/

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

sudo ./network.sh up

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

说明创建成功了。

03 Fabcar测试

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

sudo ./networkDown.sh

sudo ./startFabric.sh

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

可能存在的问题

问题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'

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

然后刷新下让配置生效:

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 ListFailed 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,终于成功了:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

注册管理员账号:

sudo node enrolladmin.Js

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

注册用户

sudo node registerUser.Js

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

sudo node invoke.Js

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

查询交易后的状态:

sudo node query.Js

@H_301_235@

完成啦!!!至此,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

 

推荐阅读:

干货 | 想学习优化算法,不知从何学起?

干货 | 运筹学从何学起?如何快速入门运筹学算法?

干货 | 学习算法,你需要掌握这些编程基础(包含JAVA和C++)

干货 | 算法学习必备诀窍:算法可视化解密

干货 | 模拟退火、禁忌搜索、迭代局部搜索求解TSP问题Python代码分享记得点个在看支持下哦~

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

总结

以上是编程之家为你收集整理的Ubuntu Server搭建Hyperledger Fabric 2.1学习环境全部内容,希望文章能够帮你解决Ubuntu Server搭建Hyperledger Fabric 2.1学习环境所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Ubuntu文章

操作系统实验一到实验九合集(哈工大李治军)有详细代码及注释,程序已在本地测试,均能跑通
0001、搞定linux操作系统Linux是一个开源的操作系统,但总是拿开源说事的话,对于没有深入了解的同学来说可能不是能很清楚的认识这个概念。这里我换个角度用大白话聊一聊linux,linux其实是属于喜欢“折腾”的人的,而恰恰我们计算机相关专业的同学是最需要契合这个属性的,通过不断地折腾,在折腾中成长的速度是飞快的。而且现在国内绝大多数公司产品部署都是使用的某个linux发行版本,而且随着linux内核支持namespace内核以及docker的诞生,云原生技术近些年来的迅猛发展,linux毫无
1.通过学习、查阅/寻找资料,培养学生获取有关计算机组装的技术、工艺及测试方法、驱动程序的能力。2.培养学生计算机硬件系统的拆卸、安装、故障排除,操作系统安装与设置,驱动程序加载,技术指标测试等方面的能力,获得计算机系统维护的基本训练。3.培养学生遵守操作规程,安全操作的意识,考虑工程实践活动对环境的影响。4.认识环境问题对计算机技术发展的影响,培养学生节能环保意识。5.熟悉与计算机系统有关的英语用语和单词。1.听教师讲清实习的基本原理、要求、目的和注意安全事项,并遵守实验室的规定。2.实习学生1
万字总结基础Linux命令
一、搭建samba服务器 1.下载: sudo apt-get install samba samba-common 2.创建共享文件夹MyShare: mkdir /home/user/MyShar
Ubuntu 21.04 使用命令行分配静态IP地址 查看网卡 logical name 输入 sudo lshw -class network 后回车,在列出的信息中找到 local name 键,
首先,安装Fcitx输入框架sudo apt install fcitx其次,上搜狗输入法官网下载Linux版本搜狗输入法(32位和64位根据自己情况,在虚拟机上用浏览器下载即可然后进入相应的下载目录,进行安装(安装过程中如果有错,运行sudo apt --fix-broken install)点击左上角的图标打开Dash,输入update-manager,点击更新管理器。然后找...
这个操作估计是弄了不下四五次了,但是这次弄了整整俩个小时。关于win10的各种方案有shift+重启有恢复 在高级启动但是我的电脑好像是因为自动更新关了没有补丁包吧!一直没有疑难解惑那个选项但是实际上是很简单的以下就是设置步骤关机->重启电脑 按del键然后按F7 按左键到高级 选择cpu设置开启 Intel VT-x 即可然后vm虚拟机就可以打开...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注