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

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

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

01 基本环境配置

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


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

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

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

将 fabric 切换至 2.1 版本:

cd fabric/

git branch -a

git checkout release-2.1


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

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

cd scripts/

sudo ./bootstrap.sh

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


2.3 网络测试

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

cd fabric-samples/

cd test-network/

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

sudo ./network.sh up

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


说明创建成功了。

03 Fabcar测试

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

sudo ./networkDown.sh

sudo ./startFabric.sh

可能存在的问题

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

然后刷新下让配置生效:

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=ongo env -w GOPROXY=https://goproxy.cn,direct

finally,终于成功了:


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

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

注册管理员账号:

sudo node enrollAdmin.js

注册用户:

sudo node registerUser.js

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

sudo node invoke.js

查询交易后的状态:

sudo node query.js

完成啦!!!至此,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代码分享


记得点个在看支持下哦~

zookeeper 虚拟机搭建好后 外部链接不上_Ubuntu Server搭建Hyperledger Fabric 2.1学习环境...相关推荐

  1. centos7虚拟机开启端口后 外部不能访问的问题

    虚拟机新开了5005端口,系统内部是显示开了的,但是外部不能访问端口. 一些需要用到的命令: 1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: ...

  2. 服务器上装了安全狗后远程链接不上怎么解决

    最近思思有个客户,租用的是阿里云的服务器,客户为了防护攻击,在主机上安装了安全狗软件,但是会出现网站搭建好后,网站打不开,开不起来,该如何是好?宇尘网络思思为您分享安装服务器安全狗服务器连不上,网站打 ...

  3. 基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例

    前言 在基于truffle框架实现以太坊公开拍卖智能合约中我们已经实现了以太坊智能合约的编写及部署,但其工作方式注定其只能应用于有限的业务场景中.相比之下,基于超级账本的Fabric具有高可扩展性和高 ...

  4. win7系统搭建svn服务器,Win7系统如何使用VisualSVN Server搭建SVN服务器?

    SVN是程序员常用的一款软件,它可以很好的帮助程序员进行版本控制以及代码管理.但是要使用SVN还需要进行配置,那么今天就由小编替大家讲解一下Win7系统如何使用VisualSVN Server搭建SV ...

  5. 针对Hadoop搭建完成后无法在web上利用主机名去浏览的解决方案

    一.打开Hadoop的两种方式 方法一:输入 虚拟机ip:50070 方法二:输入设置好的名称(也就是主机名):50070 二.问题 1.方法一一般都没问题,安装完Hadoop后基本都能用IP地址的方 ...

  6. finalshell链接不上虚拟机提示一直登录或链接不上怎么办

    第一种情况:一直提示密码登录怎么办? 1.在虚拟机里面通过ip a查看IP 2.修改网卡 [root@localhost~]# sed -i 's#.100#.101#g' /etc/sysconfi ...

  7. 【WSL】window10 安装WSL2配置conda环境及深度学习环境搭建

    WSL安装CentOS7及深度学习环境配置 文章目录 WSL安装CentOS7及深度学习环境配置 前言 一.安装WSL前置条件及步骤 1.1 Windows 10(要求 1.2.检查是否满足潜在条件 ...

  8. Hyperledger Fabric 2.4环境搭建部署及示例运行

    Hyperledger Fabric目前最新发布版本为2.4,本文将详细介绍Hyperledger Fabric 2.4的环境搭建步骤,并介绍结合fabric2.4完成的具体区块链项目实例,使用jav ...

  9. 【深度学习环境搭建<二>】CUDA和 cuDNN 的安装

    0x00 前言 上一篇中我们介绍了深度学习环境搭建的第一步:NVIDIA驱动的安装.现在车的轮子有了,接下来就要来搭建车的车身了,也就是今天的主角:CUDA 和 cuDNN, 它是我们程序和驱动之间的 ...

最新文章

  1. Java里的接口的interface 简单介绍.
  2. 编译安装php apache,CentOS编译安装Apache2.4+PHP5.6
  3. oracle中schema指的是什么?
  4. 安卓APP_ Fragment(1)—— Fragment概念、基础用法、动态变换、管理栈
  5. html转word 时 字体颜色,【Web前端问题】文字大小和颜色随着热度改变如何做?...
  6. 从FLC中学习的设计模式系列-创建型模式(3)-工厂方法
  7. 操作系统已经向SQL Server 返回了错误21
  8. 卖程序的小女孩(转)
  9. 【免费毕设】PHP课程网站络管理系统(源代码+论文)
  10. DLL load failed while importing _swigfaiss: 找不到指定的模块。
  11. 互联网公司怪相:一边裁员,一边忙着做慈善
  12. python:talib 计算 SAR 用 pro_api
  13. 计算机主板与电源固定,搬动电脑也有讲究,有网友这样一波操作,电脑主板和电源直接报废...
  14. 在电脑上下载哔哩哔哩中的视频
  15. 万豪国际集团在华运营酒店超过400家
  16. 修改相关properties配置文件后,配置正确,没有生效。
  17. 如何安装flash的插件?
  18. 达梦数据库联机与脱机备份还原
  19. android添加悬浮窗,在Android中使用WindowManager实现悬浮窗口
  20. 利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡

热门文章

  1. Android 常用 adb 命令总结【转】
  2. javascript 事件冒泡和事件代理
  3. C# 实现系统关机、注销、重启、休眠、挂起
  4. 将美化进行到底,把 PowerShell 做成 oh-my-zsh 的样子
  5. python语言的模块化
  6. jsp 运用 session 登录输出
  7. 【学习笔记】OSG 基本几何图元
  8. swing学习一(swing介绍、swing样例、布局管理器)
  9. SPOJ104 Highways,跨越数
  10. 一个独立程序员对自己近九个月工作生活的回顾