Fabric基础笔记
项目概述
Fabric的目标是实现一个通用的权限区块链(Permissioned Chain)的底层基础框架。
为了适用于不同的场合,采用模块化架构,提供可切换和可扩展的组件,包括
- 共识算法
- 加密安全
- 数字资产
- 记录仓库
- 智能合约
- 身份鉴权
Fabric克服了比特币等公有链项目的缺陷,如吞吐量低、无隐私性、无最终确定性以及共识算法低效等,使得用户能够方便地开发商业应用
应用场景
超级账本的一个重要的设计原则是“用例驱动”(use case driven),所有的功能都有对应的用例需求。Farbic主要针对以下几种用例
金融资产管存
资产上链后,权益人可以直接访问资产数据,而无需经过传统的中间人,可大幅度提高效率和节约成本。另外资产附加自动执行的业务规则后,可以进一步降低运营成本。
与公有链应用的较大区别是,金融资产及其相关的交易、业务规则通常是保密的。
公司行为
上市公司发起的有关公司证券的事件一般和股东有关,需要股东做适时的回应。事件的完整信息需要及时传递给股东。股东作出决定后,该结果会实时处理货结算。整个过程应保护股东的隐私,确保投资者的决定不受外界影响
供应链
在供应链中,所有的参与者都通过区块链记录、追踪和共享各种数据,例如原材料来源、零部件检测结果以及货物的出处等。数据上链,并贯穿货物的生产、运输和销售等环节,从而提供深度回溯查询等核心功能。
主数据管理
在很多行业里,不同的组织之间往往共享一些主数据(master data)。例如,不同移动运营商之间,需要共同维护一份发射基站地理位置的数据。
通过区块链来保证数据的质量和完整性。
分享经济
分享经济是指将闲置或没有被充分利用的实物资源分享出来,有偿供陌生人暂时使用的一种商业模式。最需要解决的是陌生人之间的信任问题,即资源的提供方和资源的租用者,如何在缺乏信任的基础上安全地完成交易。目前的主要手段是通过分享经济平台来确保信任度。区块链将是一种去信任的方式,不使用任何中间平台,便可达到各方参与者可靠交易的目的
项目架构
身份服务
权限区块链与公链最大的区别就是具有身份识别能力。参与者都有明确的身份信息,身份服务管理着系统中各种实体、参与者和对象的身份信息。
策略服务
Fabric的许多功能需要用策略(policy)方式驱动,因此有独立的策略服务来提供系统的策略配置和管理功能。包括访问控制、授权、身份的注册、验证、隐私和保密、共识策略等。
区块链服务
提供构建分布式账本最基础的能力,实现数据传输、共识达成等底层功能,并且提供发布/订阅的事件管理框架,分布式账本内部的各种事件可通知到外部监听的应用。主要包含四个组件
P2P协议组件
主要提供区块链节点之间直接双向通信的能力,包括流式数据传输、流控制、多路复用等方面。
分布式账本组件
维护区块链数据。该组件性能直接影响整个网络的吞吐量,因此需要较高的处理效率
共识管理组件
在各种公式算法之上定义里抽象的接口,可以根据场景切换公式算法
账本存储组件
链外存储大文件
智能合约服务
为合约代码提供安全的运行环境以及合约的声明周期管理
网络与部署
Fabric网络由4类节点组成
身份服务节点
负责发放和管理用户的身份,具体来说就是在注册、交易、传输过程中使用的各类数字证书,以及区块链相关的秘钥
验证节点
创建和校验交易,并且维护智能合约的状态。在执行交易时,一般需要和其他多数的验证节点达成共识(取决于共识算法),然后才能更新本地的账本数据。每个验证节点在本地都保存一份账本的副本。
非验证节点
主要是接受客户端的请求,组装交易,并发往验证节点处理,从这个角度看,非验证节点像交易预处理器,并不负责交易的实际执行。为了加速客户端的查询响应速度,非验证节点在本地也保留一份账本数据的拷贝
应用节点
主要提供用户端的后台服务,在收到请求后,把交易请求直接发往(或经由非验证节点转发)验证节点处理
部署
由于节点部署的多样性,应该考虑通信延迟、网络故障、节点失效、网络恢复等因素
交易的执行
交易(transaction)分两种:部署智能合约,执行智能合约
部署步骤:
- 客户端通过API提交代码给验证节点
- 验证节点确认代码有效
- 验证节点同步到其他节点
执行步骤:
- 客户端发送执行请求给验证节点
- 验证节点收到请求后,向本地账本发送启动交易的指令
- 验证节点创建隔离的运行环境,启动应用(智能合约)代码
- 应用执行过程中,更新本地账本的状态
- 应用完成后,验证节点想本地账本确认交易
- 验证节点向其他验证节点广播交易
文章标题:Fabric基础笔记
本文作者:Benny
发布时间:2020-06-08, 19:49:32
最后更新:2018-07-01, 13:22:26
原始链接:https://benny233.github.io/2020/06/08/Fabric基础笔记/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。