前言
区块链(Blockchain)技术正在迅速发展,各行各业都正以极大的热情拥抱它。作者相信区块链将成为对信息科技领域产生革命性影响的一项新技术。目前,Hyperledger Fabric 正是此领域一个重要的技术框架与平台。
本文既是 Hyperledger Fabric(以下简称 Fabric)的实用教程,也是其学习、研究笔记。读者可以与作者一起,一步一步地学习 Fabric 基础知识,利用 Hyperledger Composer(以下简称 Composer)搭建 Fabric 本地开发环境,运行示例应用;并进一步分析、深入了解其技术结构与特点。
本文尽量不去简单复述其他相关文档,着重从实用角度与读者一起迅速建立对 Fabric 的直观认识,并在实践中逐渐理解区块链技术。本系列文章有三个部分,此为第一部分。
在本文示例中,Fabric 的版本为 1.1.0,Composer 的版本为 0.19.1。在以后的学习过程,它们可能随时有版本更新,而 micro 版本的改动应该对示例操作不会有影响。但仍请注意版本更新可能带来的变化。
基本概念与知识
基本概念与重要平台、技术、工具
用一句话来描述区块链:区块链是一个共享的不可修改的账本,可用来记录一个网络上所有交易的历史。这里所说的"交易"翻译自"Transaction"。也可以将之称为"事务",本文将之统一称为"交易"。
Hyperledger 是 Linux 基金会主持的一个开源项目,启动于 2015 年,其核心目标是建立开放的、标准化的、企业级的、能支持商业交易的分布式账本的框架与基础代码。
Hyperledger Fabric 是 Hyperledger 项目的一个组成部分,是一个区块链框架的实现。它将成为区块链应用开发、解决方案的基础。Fabric 框架支持组件化、可插拔的共识服务(Consensus Service)、成员服务(Membership Service);"许可(Permissioned)"特性使之为"私有性"、"保密性"提供了可靠的解决方案;智能合约(Smart Contracts)在 Fabric 中通过"Chaincode"得以实现。Fabric 最初是由 Digital Asset、IBM 贡献给 Hyperledger 项目的。
Hyperledger Composer 也是 Hyperledger 项目的一个组成部分。通过它,人们可以更快速、容易地建立区块链业务模型,进行区块链网络及应用的开发、部署,并与现有系统、数据进行集成。
本文中,对于 Fabric 的学习,正是以 Composer 作为入口与基础工具,这样学习的效率更高。在学习初期,Fabric 与 Composer 的知识是紧密结合的,在后期,我们会对这两项技术分别深入学习、研究。
知识准备
区块链技术涉及到的技术比较多,本文希望能帮助读者将焦点一直放在区块链本身上,即使对某项技术学习得不是非常深入,也不会影响对于 Fabric 的学习。一般来说,希望读者还是能对以下知识预先有所了解:Ubuntu,Docker,Node.js,Javascript,npm,CA。
安装 Fabric 之前的环境准备
Ubuntu 16.04 LTS 64-bit
Fabric 支持 MacOSX、*nix 或者 Windows 10 操作系统;Composer 支持 Ubuntu Linux 14.04 / 16.04 LTS (64-bit)或者 MacOS 10.12 操作系统。
现在,我们使用 Ubuntu16.04 LTS 64-bit,作为我们的区块链部署系统。对于 Ubuntu 系统的安装与管理,这里不再详述,但可以通过以下命令确认版本信息:
确认 Ubuntu Linux 版本
1
2
3
|
# cat /etc/issue
Ubuntu 16.04.4 LTS \n \l
# uname -a
|
系统用户
我们在学习过程中,几乎所有操作都通过一个专门的用户来完成(在本文示例中,使用的用户名为:fabric;读者可以根据需要使用自己的用户名,但请注意在后续示例中要相应修改)。请不要使用 root 用户。
添加一个新用户
1
|
# adduser fabric
|
将此用户加入 sudo 用户组
1
|
# usermod -aG sudo fabric
|
切换为 fabric 用户,并进入用户目录
1
2
|
# su fabric
$ cd ~
|
安装 Node.js, npm, Docker, Docker Compose, Python
现在需要安装 Node.js, Docker 等软件,Hyperledger 提供了一个脚本,可以用来自动安装。
下载并执行自动安装脚本
1
2
3
|
$ curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
$ chmod u+x prereqs-ubuntu.sh
$ ./prereqs-ubuntu.sh
|
安装成功后,会显示以下内容,包括安装的软件名称及版本号。(后续版本可能会有变化。)
1
2
3
4
5
6
7
|
Installation completed, versions installed are:
Node: v8.11.1
npm: 5.8.0
Docker: Docker version 18.03.0-ce, build 0520e24
Docker Compose: docker-compose version 1.13.0, build 1719ceb
Python: Python 2.7.12
Please logout then login before continuing.
|
退出并重新登录
请退出当前用户会话,关闭客户端工具与 Ubuntu 的连接;并重新以用户 fabric 登录 Ubuntu,以使系统设置生效。
如果是自行手动安装这几项软件但版本号并不完全一致,可能会给后续过程带来一些障碍。所以,为节约时间,请尽量使用这个自动安装脚本;或手动安装这些版本的软件。
使用 Hyperledger Composer 安装 Fabric Runtime
现在,终于要正式开始安装 Composer 和 Fabric 了。
安装 Composer
Hyperledger Composer 是一个开放的开发框架、工具集,可以帮助人们更容易地开发、部署区块链应用。它支持 Fabric,并提供 Javascript SDK。我们可以通过 npm 来安装它的一系列组件。
安装 Composer 命令行工具 CLI
1
2
3
|
$ npm install -g composer-cli
$ npm view composer-cli version
0.19.1
|
当前,其版本为:0.19.1。
我们之后许多操作(安装、部署、管理)都将通过 Composer CLI 完成。
因为之前的 Node.js 是通过 nvm 安装的(请参考:prereqs-ubuntu.sh),并在这里使用了"-g"选项,所以默认设置下安装的 node modules 文件可以在这里找到:
~/.nvm/versions/node/v8.11.1/lib/node_modules
安装 Composer REST Server
1
2
3
|
$ npm install -g composer-rest-server
$ npm view composer-rest-server version
0.19.1
|
Composer REST server 可以根据我们开发、部署的区块链应用自动生成一些 RESTful API 接口,以方便通过浏览器、curl 等工具对之进行访问。
安装 generator-hyperledger-composer
1
2
3
|
$ npm install -g generator-hyperledger-composer
$ npm view generator-hyperledger-composer version
0.19.1
|
它包含了一组 Yeoman generator,可以在 Yeoman 中执行,以根据模板生成我们将要部署的区块链网络文件。
安装 Yeoman
1
2
3
|
|