2019 hyperledger fabric相关项目资料总结

2019年3月30日,我和同行的老师一起参加了在华南理工大学举办的IBM区块链技术师资培训,主要内容是hyperledger fabric的技术推广和应用案例介绍。以下将一些重要资料汇总,以便其他hyperledger学习者查看。

1.目前区块链技术所处的阶段

上图很有名,称为技术成熟度曲线图。该曲线又叫技术循环曲线,或者直接叫做炒作周期,是指新技术、新概念在媒体上曝光度随时间的变化曲线。--《BIG DATA》。技术成熟度曲线(The Hype Cycle)诞生于硅谷,是指经过新闻媒体和学术会议的大肆宣传之后,新技术趋势一下子跌倒了谷底,而最初依靠这个新技术发展起来的创业公司一下子变得岌岌可危。

这个曲线分成5个阶段:

  1. 科技诞生的促动期 (Technology Trigger):
  2. 过高期望的峰值(Peak of Inflated Expectations)
  3. 泡沫化的底谷期 (Trough of Disillusionment)
  4. 稳步爬升的光明期 (Slope of Enlightenment)
  5. 实质生产的高峰期 (Plateau of Productivity)

显而易见,经过2018年空气币泡沫的崩溃,现在区块链技术应当在第三个阶段。这是最坏的时代,这是最好的时代。在低谷阶段,抛开了投机客的干扰,正是区块链应用沉淀的好时机。在此阶段,IBM等公司仍然在花大力气推广hyperledger项目,相关工具也是越来越多,助力高校产学研合作。相信未来会有更多的具有实际产出价值的商业应用诞生。

2. hyperledger 项目与其重要的子项目

Hyperledger是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起,有超过240家全球著名企业加盟。Hyperledger 项目的目标是提供跨行业分布式账本的开放标准,以改变全球商业交易的方式。

 

Hyperledger 项目的官网是:https://www.hyperledger.org, 另外有中文网 https://cn.hyperledger.org/projects

官网中有个the hyperledger greenhouse的图,介绍了Hyperledger 的各个子项目。其中,作为区块链实现技术的框架有

  • burrow
  • fabric
  • Indy
  • IROHA
  • sawtooth

与Hyperledger 相关的工具,其中比较重要的有:

  • Hyperledger Caliper 区块链性能测试工具
  • Hyperledger Cello 按需部署服务的工具
  • Hyperledger Composer 商业应用与区块链之间的中间件,可以加速智能合约的开发以及在分布式账本的部署。
  • Hyperledger Explorer 区块链状态可视化查看器
  • Hyperledger Ursa 共享加密算法程序库

本次活动主要介绍Hyperledger Fabric框架,和与之相关的Hyperledger Composer 的部署。当然Hyperledger Explorer 对我个人而言也是非常重要的。

3. hyperledger fabric 项目的资源

hyperledger fabric是IBM贡献的区块链技术开源实现框架,也就是说使用该项目可以搭建自己的联盟区块链。目前fabric最新版本是1.4。

Hyperledger Fabric 静态架构概览

不过安装fabric是有一定的技术门槛的。要在自己的虚拟机上部署,需要操作者有三方面的能力:

  • Linux或mac OS下使用命令行安装较为复杂的软件的能力。
  • 因为环境配置较为复杂,fabric又比较重型(诸如包含很多ca证书启动较慢等问题),所以部署时可能遇到很多意想不到的问题,需要掌握使用各种搜索引擎解决问题的能力。
  • 因为很多资源都在外网,需要掌握科学上网的能力。

以下整理了hyperledger fabric项目的相关资料

  1. IBM 微讲堂(fabric1.4的介绍课程,包括讲义和视频,想彻底搞懂fabric的同学可以先从这里看):https://developer.ibm.com/cn/os-academy-hyperledger-fabric/
  2. IBM微讲堂的wiki(相当于上面那个网站的目录,但有更多的东西):https://www.ibm.com/developerworks/community/wikis/home?lang=zh#!/wiki/W30b0c771924e_49d2_b3b7_88a2a2bc2e43/page/IBM开源技术微讲堂
  3. hyperledger fabric的官方网站(相当于是个fabric相关资源的导航网站):https://www.hyperledger.org/projects/fabric
  4. hyperledger fabric项目的代码(从这里下载代码,但代码量很大,建议科学上网下载):https://github.com/hyperledger/fabric#releases
  5. hyperledger fabric项目的官方文档(权威的英文手册,安装使用的首选参考文档):https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html
  6. IBM开发者社区(涵盖理论学习,入门实践,到精通探讨,以上很多好资源都是从这里来的):https://www.ibm.com/developerworks/cn/cloud/library/cl-blockchain-basics-intro-bluemix-trs/
  7. 使用 Hyperledger Fabric 构建一个基于 Web 的区块链保险应用(可以下载这个示例应用的代码)https://developer.ibm.com/cn/patterns/build-a-blockchain-insurance-app/

4.Hyperledger Composer 项目介绍

fabric安装好以后是个命令行程序,使用起来也不简单。目前我们只停留在对区块链query(查询)和invoke(写数据)的阶段。hyperledger fabric在区块链之上的一些关键应用,例如智能合约等,还要通过写代码的方式执行,所以我们迟迟进行不到这一步。而Hyperledger Composer项目,恰恰就是为了解决这个痛点,通过提供简易接口的方式使得开发者能够更加方便快捷地创建智能合约以及区块链应用。就这个意义上说,Hyperledger Composer相当于区块链应用程序与fabric网络之间的中间件,降低了开发者的开发难度。

Hyperledger Composer包含一系列高级组件,以下介绍其中重要的内容

  • hyperledger composer playground:这是使用Nodejs开发的练手用的web页面,用户可以在上面学习,理解常见的区块链应用场景,编辑自己的应用和智能合约demo。当用户熟悉了这个游乐场,接下来开发自己的应用也就有章法可循了。
  • hyperledger composer rest server:这是使用Nodejs开发的restful API服务器,该服务器使用fabric的nodejs SDK来操作fabric网络,并且包含一个web页面用以查看和测试API。这个服务器是composer作为中间件的一个重要是实现,用户可以在它的API基础之上开发面向区块链的高级应用。
  • VSCode和Atom编辑器插件:VSCode扩展功能非常强大,可验证Composer模型和ACL文件,提供语法高亮显示,错误检测和片段支持。Atom插件要简单得多,只有基本的语法高亮。
游乐场web页面(hyperledger composer playground )
hyperledger composer rest server 的web页面
vs code extension 黄色的部分是命令行,命令入口,交互输入 绿色的部分是本地测试环境起停调试的支持部分 蓝色的部分是针对chaincode打包的界面

IBM有在美国搭建了一个composer-playground的服务器:https://composer-playground.mybluemix.net不过,因为墙的原因,想用Hyperledger composer最好还是本地部署。

Hyperledger composer相关的资源:

Hyperledger composer使用流程(重点):

  1. 安装一个新的Linux ubuntu16.04虚拟机,依照hyperledger composer官方安装教程,部署hyperledger composer应用。注意,依照官网教程安装hyperledger composer会同时安装一个fabric,是直接拉docker镜像安装的。
  2. 本地部署hyperledger composer好了以后,先去游乐场(composer-playground)创建应用,从简单的demo到复杂的demo,了解不同商业应用场景下智能合约的设置方法,掌握模型文件、交易函数、交易用户、资产、事件之间的关系。
  3. 打开composer-restful API服务器,了解各个API接口的使用方法。在该服务器的web页面测试各个API。
  4. 编写web应用,按需调用composer-restful API,从而搭建真正的区块链web应用。

5. Hyperledger Explorer项目介绍

Hyperledger Explorer是一个区块链的图形化查询工具,具有使用简便,功能强大,易维护等特点。同样也是Hyperledger众多项目下的一个子项目,目前还处于孵化中。

Hyperledger Explorer和fabric之间的关系,有点像phpmyadmin/navicat与mysql之间的关系。可以呈现当前fabric网络中区块个数、交易数据等简单内容。与Hyperledger composer类似,Hyperledger Explorer也是一个使用nodejs写的web应用。

Hyperledger Explorer 的web界面

当然,安装Hyperledger Explorer也有许多坑。因为都处于孵化过程中,没有安装向导,只能从git上拉代码后安装。建议先按照官网教程安装Hyperledger composer,这样就同时拥有了一个fabric网络和Hyperledger composer,然后再遵照官网流程安装。

Hyperledger Explorer 相关资源

最后,值得一提的是名为Hyperledger Cello的项目,是面向运维人员的软件,该项目包含一个dashboard界面,可视化地提供按需部署的功能,可以将区块链部署在各种裸机、虚拟机、容器等环境中。该项目最初由IBM发起,目前得到了Soramitsu, 华为,和Intel的赞助。该项目目前还在孵化中。

6. IBM Blockchain Platform介绍

IBM Blockchain Platform是IBM公司开发的完全集成的企业级区块链平台。目前IBM正在主推其LinuxOne服务器平台结合IBM Blockchain Platform进行售卖。总而言之使用该平台及其配到的工具,开发人员可以在vscodeExtension 上可以通过模板快速生成基于nodejs的chaincode项目。运维人员可以方便地进行区块链应用的打包,安装,升级,初始化。这两部分结合就是一个简易的devops案例,通过devops来加速我们的应用开发。最后,IBM Blockchain Platform面向测试工作,提供本地测试环境和测试代码的全方面支持。整体来看,就是在本地的IDE上,搭建了一个小型的ci/cd环境。

IBP的概要图
IBM云平台上IBM Blockchain Platform套餐简介

在IBM公有云上,有IBM Blockchain Platform部署套餐,包括入门套餐,商务套餐,免费套餐、私有云套餐和AWS上的免费套餐。不论使用哪一个套餐,都可以通过接近所见即所得的控制台来对区块链网络进行控制。有点像Hyperledger Cello + Hyperledger composer + Hyperledger fabric的集合。

不过目前阶段,IBM Blockchain Platform在国内似乎还没有很好的服务器。所以想搞应用开发呢,还是得自己搭建 Hyperledger composer + Hyperledger fabric,如果有个Hyperledger Explorer就更好了。

IBM Blockchain Platform free 2.0 beta的console界面

IBM Blockchain Platform的相关资源