• -------------------------------------------------------------
  • ====================================

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

区块链 dewbay 4年前 (2020-01-06) 1802次浏览 已收录 0个评论 扫描二维码

前言

区块链数字货币的火热,从去年的暴涨,吸引了不少人的目光。关于应用场景,颠覆之类的就不说了。诚然,现实世界有很多漫天飞舞的夸大和吹捧。作为 IT 行业的从业人员,我们更应该做的是好好了解这背后的技术,只有理解了技术,才能更好的落实应用。

区块链大致有三种类型,公有链,私有链,联盟链。而 HyperLedger 则是典型的联盟链,引入了权限管理机制。访问该区块链,只有经过了授权,才有资格访问。


区块链开发的流程是什么?

那么,区块链应用到底该怎么开发呢?

这里简单介绍一下流程,后面的一系列文章会陆续给出一些学习教程。

基本步骤是:搭建开发环境—>编写智能合约—>编写可以调用智能合约的应用程序—->部署应用程序。

接下来,就介绍第一部分,快速搭建一个Fabric 1.0 的环境。

大部分内容参考:

快速搭建一个 Fabric 1.0 的环境


快速搭建一个 Fabric 1.0 的环境

1.安装好 Ubuntu

本次项目是在 Ubuntu16.04 环境下开发的。我用的是 Ubuntu16.04 桌面版。 在安装完 Ubuntu 后,需要保证 apt source 是国内的,不然如果是国外的话会很慢很慢的。具体做法是:

进入 ubuntu 桌面右上角按钮菜单中选择“系统设置”, 在弹出的窗口中选择 “软件和更新”。
切换到“Ubuntu 软件”选项,在底部“下载自”中选择国内的镜像,然后点击关闭。
系统弹出对话框,选择“重新载入”即可。

2.Go 的安装

Ubuntu 的 apt-get 虽然提供了 Go 的安装,但是版本比较旧,最好的方法还是参考官方网站 golang.org/dl/ ,下载最新版的 Go。具体涉及到的命令包括 :

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

【注意:不要使用 apt 方式安装 go,apt 的 go 版本太低了!】

接下来编辑当前用户的环境变量:

vi ~/.profile

添加以下内容:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

$HOME是当前用户主目录。
export GOPATH=$HOME/go 表示我们把 go 的目录 GOPATH 设置为当前用户的文件夹。
PATH 表示环境变量。在 Linux 环境中,是区分大小写的。
其次,在 Linux 中,引用变量,要在前面加上一个$符号。
综上所述,$PATH 以及 $HOME 均表示对变量的引用。
其中,PATH=$PATH:/usr/local/go/bin 表示将/usr/local/go/bin 这个路径,加入到环境变量中!

编辑保存并退出 vi 后,记得把这些环境载入:

source ~/.profile

由于我们把 go 的目录 GOPATH 设置为当前用户的文件夹下,所以记得创建 go 文件夹

cd ~
mkdir go

3. Docker 安装

我们可以使用阿里提供的镜像,安装也非常方便。通过以下命令来安装 Docker

curl -fsSL https://get.docker.com/ | sh
或者 curl -sSL https://get.daocloud.io/docker | sh

安装完成后需要修改当前用户(我使用的用户叫 sxl)权限:

sudo usermod -aG docker sxl

注销并重新登录,然后在终端运行一下命令,以添加阿里云的 Docker Hub 镜像:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4. Docker-Compose 的安装

Docker-compose 是支持通过模板脚本批量创建 Docker 容器的一个组件。在安装 Docker-Compose 之前,需要安装 Python-pip,运行脚本:

sudo apt-get install python-pip

然后是安装 docker-compose,我们从官方网站(github.com/docker/compo)下载也可以从国内的进行 DaoClound 下载,为了速度快接下来从 DaoClound 安装 Docker-compose,运行脚本:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

5. Fabric源码下载

我们可以使用 Git 命令下载源码,首先需要建立对应的目录,然后进入该目录,Git 下载源码:

mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git

由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到 v1.0.0 版本的源码即可:

cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0

6. Fabric Docker 镜像的下载

这个其实很简单,因为我们已经设置了 Docker Hub 镜像地址,所以下载也会很快。官方文件也提供了批量下载的脚本。我们直接运行:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

这样就可以下载所有需要的Fabric Docker 镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。

下载完毕后,我们运行以下命令检查下载的镜像列表:

docker images

得到结果如下:

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

7.启动Fabric网络并完成 ChainCode 的测试

我们仍然停留在 e2e_cli 文件夹,这里提供了启动、关闭 Fabric 网络的自动化脚本。我们要启动 Fabric 网络,并自动运行 Example02 ChainCode 的测试,执行一个命令:

./network_setup.sh up

最后运行完毕,我们可以看到这样的界面:

如果您看到这个界面,这说明我们整个 Fabric 网络已经通了。

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

Fabric 网络开启成功

如果报错:

# github.com/miekg/pkcs11 D:\goproject\src\github.com\miekg\pkcs11\pkcs11.go:29:10: fatal error: ltdl.h: No such file or directory

#include <ltdl.h>

^~~~~~~~ compilation terminated.

错误: 进程退出代码 2.

解决:

  • 如果在 ubunt 操作系统中,只需安装:

    apt install libltdl3-dev

     

  • 如果在 centos 操作系统中,只需安装:

    yum install libtool-ltdl-devel

8.手动测试一下 Fabric 网络

我们仍然是以现在安装好的 Example02 为例,在官方例子中,channel 名字是 mychannel,链码的名字是 mycc。我们首先进入 CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

运行以下命令可以查询 a 账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

可以看到余额是 90:

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

然后,我们试一试把 a 账户的余额再转 20 元给 b 账户,运行命令:

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

运行结果为:

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

 

现在转账完毕, 我们试一试再查询一下 a 账户的余额,没问题的话,应该是只剩下 70 了。我们看看实际情况:

01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式

果然,一切正常。最后我们要关闭 Fabric 网络,首先需要运行 exit 命令退出 cli 容器。关闭 Fabric 的命令与启动类似,命令为:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh down

现在我们整个 Fabric 的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。


总结:

通过上述快速搭建一个 Fabric 网络,我们做了些什么?为以后打下了什么基础?

  1. 在“ Fabric Docker 镜像的下载”这一步骤中,我们下载了 Fabric 网络所需要的镜像文件,这是 Fabric 网络中必要的文件。
  2. 在 e2ecli 例子中,使用的是 startFabric.sh 脚本来自动搭建 Fabric 网络的。不同的 fabric 应用,所需要的 Fabric 网络结构也是不同的,这里的 Fabric 网络只适合 e2e_cli 例子中。
  3. 用完记得关闭网络,不然开启其他 Fabric 网络时,会产生冲突。

以上都是经过栏主自动动手实践运行出来的。如果有错误的地方,欢迎指出~

转自知乎 苏小乐 :https://www.zhihu.com/people/shan-de-ding-zhu/activities


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:01-快速搭建一个Fabric1.0环境 | 基于shell脚本的方式
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址