Fabric基础笔记

项目概述

Fabric的目标是实现一个通用的权限区块链(Permissioned Chain)的底层基础框架。

为了适用于不同的场合,采用模块化架构,提供可切换和可扩展的组件,包括

  1. 共识算法
  2. 加密安全
  3. 数字资产
  4. 记录仓库
  5. 智能合约
  6. 身份鉴权

Fabric克服了比特币等公有链项目的缺陷,如吞吐量低、无隐私性、无最终确定性以及共识算法低效等,使得用户能够方便地开发商业应用

应用场景

超级账本的一个重要的设计原则是“用例驱动”(use case driven),所有的功能都有对应的用例需求。Farbic主要针对以下几种用例

金融资产管存

资产上链后,权益人可以直接访问资产数据,而无需经过传统的中间人,可大幅度提高效率和节约成本。另外资产附加自动执行的业务规则后,可以进一步降低运营成本。

与公有链应用的较大区别是,金融资产及其相关的交易、业务规则通常是保密的。

公司行为

上市公司发起的有关公司证券的事件一般和股东有关,需要股东做适时的回应。事件的完整信息需要及时传递给股东。股东作出决定后,该结果会实时处理货结算。整个过程应保护股东的隐私,确保投资者的决定不受外界影响

供应链

在供应链中,所有的参与者都通过区块链记录、追踪和共享各种数据,例如原材料来源、零部件检测结果以及货物的出处等。数据上链,并贯穿货物的生产、运输和销售等环节,从而提供深度回溯查询等核心功能。

主数据管理

在很多行业里,不同的组织之间往往共享一些主数据(master data)。例如,不同移动运营商之间,需要共同维护一份发射基站地理位置的数据。
通过区块链来保证数据的质量和完整性。

分享经济

分享经济是指将闲置或没有被充分利用的实物资源分享出来,有偿供陌生人暂时使用的一种商业模式。最需要解决的是陌生人之间的信任问题,即资源的提供方和资源的租用者,如何在缺乏信任的基础上安全地完成交易。目前的主要手段是通过分享经济平台来确保信任度。区块链将是一种去信任的方式,不使用任何中间平台,便可达到各方参与者可靠交易的目的

项目架构

farbic架构

身份服务

权限区块链与公链最大的区别就是具有身份识别能力。参与者都有明确的身份信息,身份服务管理着系统中各种实体、参与者和对象的身份信息。

策略服务

Fabric的许多功能需要用策略(policy)方式驱动,因此有独立的策略服务来提供系统的策略配置和管理功能。包括访问控制、授权、身份的注册、验证、隐私和保密、共识策略等。

区块链服务

提供构建分布式账本最基础的能力,实现数据传输、共识达成等底层功能,并且提供发布/订阅的事件管理框架,分布式账本内部的各种事件可通知到外部监听的应用。主要包含四个组件

P2P协议组件

主要提供区块链节点之间直接双向通信的能力,包括流式数据传输、流控制、多路复用等方面。

分布式账本组件

维护区块链数据。该组件性能直接影响整个网络的吞吐量,因此需要较高的处理效率

共识管理组件

在各种公式算法之上定义里抽象的接口,可以根据场景切换公式算法

账本存储组件

链外存储大文件

智能合约服务

为合约代码提供安全的运行环境以及合约的声明周期管理

网络与部署

Fabric网络由4类节点组成
Fabric节点

身份服务节点

负责发放和管理用户的身份,具体来说就是在注册、交易、传输过程中使用的各类数字证书,以及区块链相关的秘钥

验证节点

创建和校验交易,并且维护智能合约的状态。在执行交易时,一般需要和其他多数的验证节点达成共识(取决于共识算法),然后才能更新本地的账本数据。每个验证节点在本地都保存一份账本的副本。

非验证节点

主要是接受客户端的请求,组装交易,并发往验证节点处理,从这个角度看,非验证节点像交易预处理器,并不负责交易的实际执行。为了加速客户端的查询响应速度,非验证节点在本地也保留一份账本数据的拷贝

应用节点

主要提供用户端的后台服务,在收到请求后,把交易请求直接发往(或经由非验证节点转发)验证节点处理

部署

由于节点部署的多样性,应该考虑通信延迟、网络故障、节点失效、网络恢复等因素

交易的执行

Fabric执行步骤
交易(transaction)分两种:部署智能合约,执行智能合约

部署步骤:

  1. 客户端通过API提交代码给验证节点
  2. 验证节点确认代码有效
  3. 验证节点同步到其他节点

执行步骤:

  1. 客户端发送执行请求给验证节点
  2. 验证节点收到请求后,向本地账本发送启动交易的指令
  3. 验证节点创建隔离的运行环境,启动应用(智能合约)代码
  4. 应用执行过程中,更新本地账本的状态
  5. 应用完成后,验证节点想本地账本确认交易
  6. 验证节点向其他验证节点广播交易

文章标题:Fabric基础笔记

本文作者:Benny

发布时间:2020-06-08, 19:49:32

最后更新:2018-07-01, 13:22:26

原始链接:https://benny233.github.io/2020/06/08/Fabric基础笔记/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录