HyperLedger Fabric 学习思路分享

HyperLedger Fabric 学习思路分享  

  HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的、由Linux基金会主办的一个超级账本项目,它是一个目前非常流行并广为人知的区块链网络框架的实现方案。作为一种基于模块化架构开发应用程序或解决方案的基础,HyperLedger Fabric支持如共识和会员服务等即插即用的组件,它的设计初衷是支持不同组件的可插拔实现,并适应整个经济生态系统的复杂性和高精度性。HyperLedger Fabric利用容器技术运行称为“Chaincode”的智能合约,该合约包含了系统的应用程序逻辑。

  HyperLedger Fabric是一个区块链解决方案,更倾向于联盟链或私有链方向。区块链由于去中心化、开放性、自治性、信息不可篡改及匿名性等特征而受到广泛关注,且目前正处在上升势态。抛开炒作的代币项目,应用于行业联盟链或直接搭建私链的项目,采用HyperLedger Fabric作为底层平台无疑是最好的选择之一。

  项目无须刻意围绕区块链开展,不能因为当前区块链火爆就强迫业务进行转型,否则对企业发展和项目升级可能不会起到积极作用。

  对于联盟链,其应该被打造成一个独立于企业内部核心业务的外围应用。换一种说法,一家企业加盟某一个区块链平台的目的是提升自身的业务健壮度和抗风险能力,而不能因为加盟了某一个区块链平台就有针对性地修改自身原有业务。

  企业对区块链联盟平台的姿态应该是最大程度自由的,即上链有一定好处,但依然可以根据自身的实际情况选择随时下链而不影响原有业务。

知识点:

  这里的学习内容是指HyperLedger Fabric学习过程中会遇到的一些应用,通常包括以下几部分:

  1、Docker

  Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源。 Docker 可以让开发者将应用和依赖包打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 App),更重要的是容器性能开销极低。

  在学习HyperLedger Fabric的过程中,开发人员需要掌握Docker的基本操作命令,以便可以更快上手,这其中包括打包、拆包、tag、容器管理、镜像管理等。同时,也需要学习Docker Compose和YAML的编排方案,了解如何挂载文件路径、设置端口绑定、确定Network以及掌握环境变量的用法等。

  2、Go

  Go是一种并发的、带垃圾回收的、快速编译的语言。它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序,结合了解释型语言的游刃有余、动态类型语言的开发效率以及静态类型的安全性。

  HyperLedger Fabric是一个基于Go开发的开源项目,学习Go不仅仅是为了更深入地阅读源码需求,也因为它的智能合约编写方案需要Go来实现。对于Go的学习,至少能够在参考API文档的情况下编写出一套符合需求的智能合约。然而对于有一定面向对象基础的开发人员来说,这并不难。

  3、gRPC

  gRPC 是一个高性能、通用的开源RPC框架,其由 Google 公司主要面向移动应用开发并基于HTTP/2 协议标准而设计的,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。

  在学习HyperLedger Fabric的过程中,对gRPC的感知并不深,但SDK的相关项目都需要用到它。建议还是需要了解一下诸如此类的传输协议,与之类似的还有Thrift、Dubbo等。

  4、CA

  CA是PKI系统中通信双方信任的实体,被称为可信第三方(Trusted Third Party,简称TTP)。作为可信第三方的行为具有非否认性。

  在HyperLedger Fabric体系中,CA被广泛运用于每一个具体的对象,如orderer、peer以及最小单位的user等。经常进行后端开发的工程师应该比较了解,在HyperLedger Fabric中CA被用于各种对象的登记、登出、注册、撤销等操作。

  5、P2P

  Peer-to-Peer,对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构。

  关于P2P的学习并非必须,但这也算是入门区块链底层的必修课,对期望今后有机会进行底层开发的工程师来说,目前多少需要了解一些。

  6、Kafka

  Kafka是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。

  在Fabric网络中,数据是由Peer节点提交到Orderer排序服务,而Orderer相对于Kafka来说相当于上游模块,且Orderer还兼具提供了对数据进行排序及生成符合配置规范及要求的区块。而使用上游模块的数据计算、统计、分析,这个时候就可以使用类似于Kafka这样的分布式消息系统来协助业务流程。

  Kafka是一种共识模式,也就是说平等信任(同步复制),所有的HyperLedger Fabric网络加盟方都是可信方,因为消息总是均匀地分布在各处。但具体生产使用的时候是依赖于背书来做到确权,相对而言,Kafka应该是一种启动Fabric网络的模式或类型。

  7、Zookeeper

  Zookeeper是一种在分布式系统中被广泛用来作为分布式状态管理、分布式协调管理、分布式配置管理和分布式锁服务的集群。

  Kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件,Kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。

  8、SDK(Java/Node.js)

  HyperLedger Fabric最终还是要落地于实际应用,那么相对于HyperLedger Fabric的应用层则会直接提供接口给其他各客户端并对区块链网络进行操作。目前基于HyperLedger Fabric的SDK方案有很多,但相对较成熟的主要还是Java和Node.js的。所以这两门语言应当是学习HyperLedger Fabric平台工程师的主力语言,建议熟练使用其中之一。

  如果正好这两门语言都不是目前学习Hyperledger Fabric工程师的主力语言,那么可以考虑用其他被gRPC所支持的编程语言自行实现,或者使用fabric-sdk-container所提供的解决方案。

学习思路:

  Hyperledger Fabric的入门其实不能说难,只是很麻烦,很多知识点并不需要开发人员熟练掌握,但必须有所了解。当只想基于Hyperledger Fabric平台落地一个区块链项目,却不清楚哪些知识点是必须深入学习的时候,就需要一个简单明确的引导来帮助完成这件事。

  我从接触HyperLedger Fabric项目以来,经历了其0.6版本到1.1版本的数次迭代。因为早期中文资料稀缺,并且0.6版本到1.0版本是一个跨度非常大的迭代,导致早期的大部分部署和应用经验失去作用,不得已再次从1.0版本开始从头学习。当时中文资料极为有限,且大多数都是单篇翻译或纯粹的概念讲解,导致我一直没有找到入门的头绪,只能不断地从官方文档中汲取知识。

  现在网上已经有了大量的HyperLedger Fabric教学博客和视频资料,也有很多书籍辅助开发人员学习,国内的HyperLedger Fabric项目实操氛围也不错,大部分关于区块链的招聘都要求应聘人员对HyperLedger Fabric的架构和具体应用有一定的经验。

  我根据自己的实践经验撰写了Hyperledger Fabric 1.0 从零开始系列博文。后来在宋亚东老师的建议下,再次从头梳理了所有内容,并结合自己实际学习和开发的过程整理了一条学习线路,如下图所示。开发人员可以按照图中序号顺序进行学习。

  这本名为《HyperLedger Fabric开发实战——快速掌握区块链技术》的书没有花费篇章讲述区块链的编年史,也没有横向对比各大区块链平台的优缺点,也不是纯粹的翻译注解。更多的是对初学HyperLedger Fabric的指南,书中有大量的代码介绍和讲解,并且也提供了源码下载地址,减少手动敲代码及调试的烦恼。同时,以HyperLedger Fabric案例为引,层层深入,从单机单节点到Solo多机部署再到Kafka集群部署,其中结合穿插文档讲解加深理解。特别是对于一些常犯错误,本书均一一进行了提醒并给出了解决方案,希望能通过本书帮助开发人员少走弯路,尽快实现基于HyperLedger Fabric的区块链实践落地。

  当然,每个人都有各自的学习方案和思路,上图中的路线并非适合所有人,有一定基础的读者可以跳过其中的部分节点选择性阅读。所以,它适合正在寻求HyperLedger Fabric入门的新人,也适合这方面的中、高级开发人员选择性学习。

  最后,介绍下本书的架构组成:

  第1章是基本环境部署,包括内网和外网的不同方案,以及内核处理等。
  第2章是HyperLedger Fabric及环境部署,先是用文档讲述了Fabric相关的介绍和主要功能点,接着分析了源码部署和镜像处理方面的问题。
  第3章带着读者一步步跑通官方的e2e_cli案例,并在随后对该案例进行了分析。
  第4章开始,手动部署一次单机多节点网络。
  第5章跟随前章的脚步,手动部署一次Solo多机网络环境。
  第6章继续深入,搭建基于Kafka的集群网络。
  第7章以文档为主,着重讲解如何编写智能合约及有关智能合约的用法。
  第8章详细介绍CouchDB的使用,并推荐使用CouchDB。
  第9章讲解在Fabric发布1.0版之后的对外客户端调用方式、客户端对SDK的使用和相关源码。
  第10章以一个简单的案例做演练,在数据链上用到了智能合约,对数据提取则提供了另一种思路。

书中配套源码地址:HyperLedger Fabric 开发实战源码

目前该书已经开始预售,想看的小伙伴们可以通过以下链接购买:

京东天猫当当亚马逊

原文地址:https://www.cnblogs.com/aberic/p/9161532.html

时间: 2024-08-24 14:05:40

HyperLedger Fabric 学习思路分享的相关文章

[转帖]Hyperledger Fabric 学习一:简介

Hyperledger Fabric 学习一:简介 https://www.jianshu.com/p/f971858b70f3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 1.Hyperledger简介 Hyperledger:超级账本,是首个面向企业应用场景的分布式账本平台,包括了:IBM.Intel.Cisco.DAH.摩根大通.R3等在内的众多科

如何学习大型项目的源码?虚幻引擎源码学习思路分享

每一个人做事都有自己的风格与习惯.当你发现身边一个人很优秀的时候,你去看一下他的24小时是怎么度过的,然后再对比一下你的24小时,答案就很明了了.同理,如果你觉得学习源码很困难,不妨请教一下那些比较牛的"过来人",看一下别人学习源码模块的流程.当然具体来说,影响一个事物的纬度,细节,前提条件都很多,别人的方法照搬过来可能是行不通的,比如说别人能一天雷打不动地学10个小时,这个放到有些人身上几乎不可能.那如何学习大型项目的源码?下面我把自己学习虚幻引擎源码(C++)的思路和过程给分享给大

学云计算前需要了解什么?好的学习思路分享

×××老师建议,在学习云计算之前,先对以下内容做出了解: 1.学习前建议先了解 A. 什么是云计算 B. 云计算对当前的商业模式有什么影响 C. 云计算所涉及到的技术 D. 云计算的现状 2.云计算可以分为广义的和狭义的两类 狭义的云计算是指IT基础设施的交付和使用模式.是指经过网络需求.扩展的方式获得所需的资源: 广义的云计算是指服务的使用和交付模式,指经过网络按需求.扩展的方式获得对应的服务.这种服务可以是IT.可以是软件.可以是互联网相,也可以是任意其他的服务,它具有超大规模.虚拟化.可靠

学习Hyperledger Fabric 实战联盟链

第1章 区块链技术基础本章介绍了区块链技术的相关基础技术要点,纯技术理论角度阐释区块链底层相关概念及所用技术 第2章 Hyperledger Fabric入门本章简单介绍了Hyperledger组织相关的区块链框架及工具,以及Fabric相关的项目介绍,并搭建了第一个Fabric区块链网络,让大家能够快速体验区块链的魅力 第3章 Hyperledger Fabric系统架构本章概括了Fabric的体系架构,包括服务组件,网络拓扑以及Fabric的典型交易流程,让大家对Fabric先有一个整体的概

Hyperledger Fabric 1.0 学习搭建 (三)--- 运行测试e2e-Fabric

3.1.运行fabric-samples的问题说明 该问题说明能够解决6.1.平台特定使用的二进制文件配置第一步的问题.可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本说明,具体在6.1中会重新指向本步骤. 一般情况下,我们会参照官网来完成第一个网络测试,在该在线文档中会让我们去下载一个fabric-samples,下载地址在github上,我们需要将其下载至本地是一个fabric-samples-release文件夹,将其更名为fabric-samples随后上传至opt/gopa

hyperledger fabric 结构模型学习

1.hyperledger fabric1.1.0 主要包含以下几个结构模型,Assets(资产),Chaincode(链码),Ledger Features(总帐功能),Privacy through Channels(渠道隐私),Security & Membership Services (安全和会员服务),Consensus(共识) 2.Assets(资产):资产可以从有形资产(房地产和硬件)到无形资产(合同和知识产权).hyperledger fabric提供了使用链式事务修改资产的能

用Java为Hyperledger Fabric(超级账本)编写区块链智能合约链代码

编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建.运行.部署和调用链代码,但尚未编写任何 Java 代码. 在本节中,将会使用 Eclipse IDE.一个用于 Eclipse 的 Gradle 插件,以及一个名为 ChaincodeTutorial 的 Java 链代码框架项目,编写第一个 Java 链代码程序.您将从我为此教程创建的 GitHub 存储库中获取框架代码,将该代码导入 Eclipse 中,添加代码来让链代码智慧合同按要求生效,然后在 Eclipse IDE 内

Hyperledger Fabric架构详解

区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链的共通特性.fabric核心概念.fabric的交易执行流程.本文来源于笔者欲对公司部分业务上链而进行培训的P

如何编写一个企业级Hyperledger Fabric开源框架

Convector(a.k.a Convector Smart Contracts)是为企业区块链框架构建的JavaScript开发框架.它增强了开发体验,同时帮助开发人员创建更强大,更安全的智能合约系统.它通过链代码和后端一直到前端,允许开发人员以库的形式重用相同的代码库.它基于模型/控制器模式,支持Hyperledger Fabric,并沿着Fabric精心设计的模式本地运行. 这篇博客文章介绍了该项目的历史,并重点介绍了沿途开发的挑战和解决方案. 当我们开始研究Tellus时,一切都开始了