Hyperledger学习小结
自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了。因为没有实际项目参与的话,差不多也就到此为止了。后续可能会去了解一下以太坊的技术实践。所以在这之前,有必要对之前掌握的内容做一下小结,整理下整个Hyperledger的重要的知识点,以便以后重拾的时候可以快速上手。
Hyperledger到底是个啥
Hyperledger是一个由Linux基金会发起的区块链解决方案项目,包含了多个子项目。通常大家提到的Hyperledger主要指的是其中的Fabric子项目。
Hyperledger目前包含以下几个子项目:
框架类项目:
- Sawtooth 为超级账本提供数字记录(如资产所有权)的功能
- Iroha 提供基于区块链的平台实现
- Fabric 提供区块链底层的基础设施(如超级块,区块,CA,PKI等等),目前由IBM主导开发
- Burrow 提供兼容以太坊智能合约的功能(EVM兼容性),目前还在孵化中
- Indy 为超级账本提供分布式账本的功能,目前还在孵化中
工具类项目:
- Caliper 区块链的压测工具,目前还在孵化中
- Cello 区块链的运维工具,简化部署操作,目前还在孵化中
- Composer 区块链的开发和构建工具,目前还在孵化中
- Explorer 区块链的可视化层,目前还在孵化中
- Quilt 提供了跨账本,跨区块链与非区块链的支付协议
虽然大部分项目并未正式release,还处于孵化中,但是已经表现出相当高的活跃性,并且有诸多大厂商参与。Hyperledger公布的成员列表: https://www.hyperledger.org/members 。 可以看到在国内参与的厂商也非常多,比如百度是超级账本项目的主要成员,阿里是一般成员等等。
总之这个项目目前表现出非常高的活跃度和关注度,未来还需要时间的沉淀与积累,相信能有突飞猛进的发展,拭目以待。
Fabric小结
之前的主要精力都花在了整个超级账本最核心的项目——Fabric上,对这个项目做一个小结。这个项目可以说是目前整个Hyperledger中最核心最活跃的项目了,需要先搞清楚这个项目是怎么回事,再去看其他的项目。
Fabric的目标
搭建联盟链/私有链,提供底层的基础设施。Fabric使用Go语言编写,本身提供Go, Node.js, JAVA(未来)的SDK。整个项目分为服务性的程序(持续后台运行提供服务以及相关接口)peer
,orderer
和fabric-ca
,以及工具类的程序(一次性运行,产生必要的服务配置文件等等)cryptogen
,configtxlator
,configtxgen
等等。
Fabric提供区块链基础运行环境,以及chaincode的运行功能。
Fabric的运行环境
理论上使用Go编写,跨平台,支持所有操作系统。但是实际上根据周边配套设施的选型,推荐Linux环境。因为其他相关的周边项目几乎都不支持Windows环境,所以Windows第一个被pass。再考虑到目前Fabric的运行方案几乎都是Docker,所以Linux成为首选平台。当然开发环境下用Mac OS也是可以的。
Fabric的授权策略
PKI+ACL。只要配置过SSL双向认证的用户对这玩意应该都不陌生,本质上是类似的,用户使用私钥表明自己的身份,公钥进行签证以授权访问。Fabric通过ACL对不同的组织,不同的用户进行授权。
Fabric的进阶学习方式
学习Fabric的路线图大致如下: Fabric --> Composer --> Other
首先大体熟悉一下Fabric的官方文档就可以了,目前稳定版本是1.0,开发版本是1.1,新手建议直接看1.1的文档,如果是为了上产品环境可以考虑看稳定版本1.0的。至于0.6版本的文档不用看了,那个版本只能用来做POC。
开发文档可以暂时跳过。Fabric的开发文档目前很不完善,你几乎看了还是不知道怎么去开发一个Fabric应用,至于部署文档几乎压根没有,这个只能等官方逐步完善文档。
之后可以看看Composer的文档,这个文档对开发比较友好,有一些范例,以及ACL运作方式等等,对于运维人员需要再熟悉一下Cello。
整个Hyperledger高度模块化,所以每个项目其实提供的功能都很有限,并不像以太坊那样一个项目工程包罗万象,需要根据实际商业需求引入对应的模块,比如做账本,可以考虑引入Indy,而不用自己从头开发。
最后,这个思维导图很不错,可以帮助理清区块链的思路: https://www.jianshu.com/p/a10052a5bbd4
作者:冯宇Ops
链接:https://www.jianshu.com/p/8294e7f441d1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。