Hyperledger Fabric 是 IBM 的开源区块链项目。它是一个完整的联盟链的实现。
本文介绍如何搭建 Hyperledger Fabric 开发环境。
不同于官方文档,本文大部分内容在官方文档中是没有的。
环境依赖
在搭建开发环境之前,我们需要了解一下所需的软件工具:
- Linux 操作系统
- curl
- Git
- Docker + Docker Compose
- Go 编程语言
- Node.js + NPM
稍后将会详细介绍如何安装它们。
关于 Windows 下开发的简短说明
警告:
为了节省您的时间,快速进入开发阶段,请尽量避免在 Windows 下搭建开发环境。
如果您真的希望在 Windows 下搭建开发环境,请不要尝试使用 Windows Subsystem for Linux。截止至本文写作之时,Windows Subsystem for Linux 依然存在大量的问题,尤其是网络方面。另外,请使用Windows 10 专业版以上的操作系统,并安装 Hyper-V。
在 Windows 下,您将会遇到这样的问题:
- 路径转换错误,或无法识别
- Docker 挂载本地目录突然无法访问
- shell 脚本出现莫名其妙的找不到文件或者语法错误等问题
- 有些时候,Hyperledger Fabric 无法生成创世块,并且用 Google 英文搜索依然找不到解决方案
如果您非常热衷于折腾 Windows,并且您认为您可以解决上述问题,为了节省您的时间,在安装好各种工具之后,请先做如下配置:
# 关闭换行符转换
git config --global core.autocrlf false
# 支持长路径
git config --global core.longpaths true
# 安装 MSVC 编译器、Windows SDK 和 Python 2.7
npm install --global windows-build-tools
# 安装 GRPC,请翻墙后操作
npm install --global grpc
# 然后请手动设置环境变量 MSYS_NO_PATHCONV = 1
最后,请点击 这里 下载 OpenSSL 二进制文件,请务必选择 1.0.2 版本。
安装 Linux
我们的开发环境是搭建在 Linux 操作系统之上的。
Hyperledger 官方开发人员使用的环境是:
- 在 Retina Macbook Pro 上安装 Vagrant + VirtualBox,并在其中安装 Ubuntu LTS 16.04.1
- 编写代码的 IDE 安装在 MacOS 上,使用的 IDE 是 JetBrains IDEA
- 通过 vagrant ssh 进入开发环境
仅供参考。
您也可以在 Windows 和 MacOS 下搭建开发环境,本文不详细介绍 Windows 和 MacOS 开发环境的搭建。
本文将以 Deepin Linux 15.4.1 为基础,介绍如何搭建 Linux 开发环境。
作者推荐使用 Deepin Linux。请下载 64 位版本。
然后您可以开始安装了。您可以选择安装在您的电脑上,或者安装在虚拟机里。根据您的喜好和需求自行选择。这些发行版都具有图形安装界面,根据界面提示进行操作即可。
注意:
如果您使用 VMWare,无论是什么发行版,在部署 chaincode-docker-devmode 里的环境时,会出现跟 GRPC 有关的错误。推荐使用 VirtualBox,记得开启3D加速。
直接在电脑上安装是最好的选择,作者是这么做的。
安装过程中,请注意:
- 为了减少折腾,请勿选择 XFS 文件系统,建议使用 Ext4
- 为了改善性能和避免可能会出现的文件系统损坏/文件丢失的情况,请尽量不要选择 Btrfs 文件系统
安装完成后请进行这些操作:
- 刷新软件源缓存
- 更新系统
刷新缓存&更新系统:
sudo apt update
sudo apt upgrade
本文写作前两个星期时,Systemd 存在一个 BUG,会导致无法执行 docker run 和 docker exec 命令。本文写作时已修复,请更新系统避免此问题。
安装依赖
安装基础设施
sudo apt install git vim curl wget libssl-dev build-essential
安装 Go 语言并配置
# 安装 Golang,目前源里为 1.8 版本
sudo apt install golang
# 配置 GOROOT 和 GOPATH
sudo -i
touch /etc/profile.d/golang.sh
cat > /etc/profile.d/golang.sh <<EOF
export GOROOT=/usr/lib/go
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin:\${GOPATH//://bin:}/bin
EOF
exit
# 创建 GOPATH 目录
mkdir ~/go
这里配置了两个 GOPATH 目录,其中 ~/go 作为安装第三方库使用的, ~/GoProjects 作为存放自己开发的项目使用的。
安装 Node.js
我们使用 NVM 安装 Node.js,从此不必再辛苦地下载源码编译安装了。
这里使用一些技巧使得 NVM 和 Node.js 全局可用:
sudo mkdir /usr/local/nvm
# 加上读写执行权限,使 Node.js 免 root
sudo chmod 0777 /usr/local/nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | NVM_DIR=/usr/local/nvm bash
然后打开用户目录下的 .bashrc 文件:
vim ~/.bashrc
删除类似于下面的内容,移动光标到第一行开头敲三次dd,然后敲Shift+ZZ:
export NVM_DIR="/usr/local/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
创建 nvm 初始化脚本:
sudo -i
touch /etc/profile.d/nvm.sh
cat > /etc/profile.d/nvm.sh <<EOF
export NVM_DIR="/usr/local/nvm"
[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh" # This loads nvm
[ -s "\$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion" # This loads nvm
EOF
exit
使其在 bash 启动时加载,其他 shell 请根据实际情况配置:
sudo -i
echo source /etc/profile.d/nvm.sh >> /etc/bash.bashrc
exit
如果您使用 zsh,可以替换 /etc/bash.bashrc 为 /etc/zsh/zshrc。目前作者使用的是 zsh。
用 nvm 安装 node.js:
source /etc/profile.d/nvm.sh
nvm install 6.11.3
即可完成 Node.js 的安装。此时,node 和 npm 命令应该可以使用了。
安装 Docker
添加官方源,然后直接安装:
sudo apt install apt-transport-https ca-certificates gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
sudo apt update
sudo apt install docker-ce docker-compose
设置当前用户,加入 Docker 用户组,即可免 Root 使用 Docker:
sudo usermod -aG docker $USER
然后到 DaoCloud 上注册一个账号,建议直接使用 GitHub 账号登录。注册登录后打开 DaoCloud加速器,记下 sh -s 后面的网址。
修改 Docker Daemon 配置文件:
sudo vim /etc/docker/daemon.json
写上:
{
"registry-mirrors": [
"上面记下的地址"
],
"insecure-registries": []
}
保存退出,重启系统。
安装 Hyperledger Fabric
我们可以使用官方提供的脚本一键安装,他们可以在这里找到。
这里以 v1.0 版为例:
# fabric 将会安装到用户目录下的 fabric 目录中
mkdir ~/fabric
cd ~/fabric
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release/scripts/bootstrap-1.0.0.sh | bash
跟Fabric有关的二进制文件将会安装到 ~/fabric/bin 下面。需要等待一段时间。
我们可以再开一个终端窗口,接着做其他事情:
# 设置 fabric 环境变量
sudo touch /etc/profile.d/fabric.sh
sudo -i
cat > /etc/profile.d/fabric.sh <<EOF
export PATH=\$PATH:\$HOME/fabric/bin
EOF
exit
# 下载 fabric-samples 到用户目录下的 git 目录中
mkdir ~/git
cd ~/git
git clone https://github.com/hyperledger/fabric-samples.git
等待每个窗口都下载完毕之后,注销当前用户,然后重新登录,安装完成。
开启 Chaincode 开发环境
打开终端,输入:
cd ~/git/fabric-samples/chaincode-docker-devmode/
docker-compose -f docker-compose-simple.yaml up
新建一个标签,用于编译和运行链码,输入:
docker exec -it chaincode bash
再新建一个,用于测试链码:
docker exec -it cli bash
整个开发环境搭建并启动完毕,您可以选择喜欢的 IDE 或者文本编辑器来编写并测试您的程序了。