接下来这篇文章,将从区块链的架构出发,简单介绍一下区块链的架构。接着,介绍一下区块链的核心组件和概念。对知识点进行分层,这样子能够让我们对Fabric的学习路径更加清楚:
全文将按照如下结构来展开:
1.Fabric 区块链简介
在区块链的家谱里,第一代区块链系统是以比特币为代表的公链,主要实现的是数字货币的功能;第二代区块链系统是以以太坊平台为代表的公链,创造性的实现了智能合约。而第三代区块链系统,则是 HyperLedger-Fabric区块链平台,在智能合约的基础之上,引入了权限管理,被称为联盟链。
2.Fabric 整体架构图
从面向服务编程的角度来看,超级账本的架构如下图所示:
1. MemberShip-成员服务
成员服务负责管理用户标识、隐私、以及网络的保密性和可审计性。在无权限的区块链中,参与者不需要授权,并且所有节点可以平等地提交交易或者将交易累积成区块,也就是说没有角色的区别。
成员服务将公钥基础设施(PKI)和去中心化共识机制的基本元素进行整合,从而将无权限区块链转化为有权限区块链。在有权限区块链中,参与者需要注册以获取长期身份凭据(登记证书),并且可以根据身份类型进行区分。
2. 区块链服务
Fabric的区块链服务提供构建分布式账本最基础的能力,实现数据传输、共识达成等底层功能,并且提供发布/订阅的事件管理框架,分布式账本内部的各种事件可通知到外部监听的应用。Fabric的区块链服务主要包含 4 个组件:P2P 协议组件、分布式账本组件、共识管理器组件和账本存储组件。
3. 智能合约服务
Fabric的智能合约(smart contract)又称为链上代码(chaincode),其实质是在背书节点(Endorser)上运行的分布式交易程序,用以自动执行特定的业务规则,最终会更新账本的状态。智能合约分为公开、保密和访问控制几种类型。
公开合约可供任何一个成员调用;保密合约只能由验证成员(validating member)发起;访问控制型合约允许某些批准过的成员调用。智能合约服务为合约代码提供安全的运行环境以及合约的生命周期管理。
在具体实现中,可以采用虚拟机或容器等技术,构造安全隔离的运行时。
4. 应用编程接口
Fabric项目的目标是提供构建分布式账本的基本能力,如账本数据结构、智能合约执行环境、模块化框架,网络通信等。用户可以在 Fabric 基础之上调用应用编程接口(API),实现丰富的应用逻辑,灵活易用的 API 将大大促进围绕 Fabric 的生态系统的发展。
Fabric 的接口基本与 Fabric 服务相对应,API 分为身份、策略、区块链、交易(对应区块链服务)和智能合约等几类。
从应用程序的角度来看,fabric 在 API 的基础之上封装了不同语言的 SDK,包括 Golang、Node.js、Java、Python 等,开发人员可以利用 SDK 开发基于区块链的应用。
为了方便应用开发,Fabric 还提供命令行接口(CLI),可覆盖部分 API 的功能,方便测试智能合约代码以及查询交易状态。
备注:GRPC API 是一种基于 GRPC 协议的 API。
gRPC (Google Remote Procedure Protocol)
是由 Google 提供的一个高性能、通用性强的 RPC 开源框架,它主要面向移动应用开发.
grpc 可以让客户端程序直接调用服务端不同主机上应用的方法,就像调用本地方法一样,方便我们创建分布式应用和服务。API 是现代应用的主要技术。
API 能够增强 web 客户端与移动客户端和后端的交互通讯,无需顾及他们的技术和平台的不同。当你构建基于 web 的 api 时,通常选择 rest 风格的 api,并且使用 JSON 作为应用程序之间交换数据的标准。
从分层结构来看,超级账本 Fabric 的整体架构如下图所示:
Fabric 为应用提供了 gRPC API,以及封装 API 的 SDK 供应用调用。
应用可以通过 SDK 访问 Fabric 网络中的多种资源,包括账本、交易、链码、事件、权限管理等。应用开发者只需要跟这些资源打交道即可,无需关心如何实现。
其中,账本是最核心的结构,负责记录应用信息,应用则通过发起交易来向账本中记录数据。交易执行的逻辑通过链码来承载。整个网络运行中发生的事件可以被应用访问,以触发外部流程甚至其他系统。权限管理则负责整个过程中的访问控制。
如果你想称为一个区块链的业务开发人员,那么只需要掌握账本、交易、链码、事件、权限管理这些资源即可。
在 Fabric 生态中,各级从业人员主要研究的领域可以一般按照下图来分工:
业务层:面向业务应用开发人员。基于分布式账本,支持链码、交易等跟业务相关的功能模块,提供更高一层的应用开发支持。
共识机制和权限管理:面向联盟和组织的管理人员。基于网络层的连通,实现共识机制和权限管理,提供分布式账本的基础。
网络层:面向系统管理人员。实现 P2P 网络,提供底层构建区块链网络的基本能力,包括代表不同角色的节点和服务。
3.总结
Fabric 核心组件给我们学习 Fabric 提供了很好的指引。
不同的层次,涉及不同的知识和组件。
转自知乎 苏小乐 :https://www.zhihu.com/people/shan-de-ding-zhu/activities