Hyperledger Fabric介绍

Hyperledger 介绍

Hyperledger Fabric是由IBM公司主导开发的一个面向企业级客户的开源项目。与比特币和以太坊这类公有链不同,Hyperledger Fabric网络中的节点必须经过授权认证后才能加入,从而避免了POW资源开销,大幅提高了交易处理效率,满足企业级应用对处理性能的诉求。同时,为了满足灵活多变的应用场景,Hyperledger Fabric采用了高度模块化的系统设计理念,将权限认证模块(MSP)、共识服务模块(Ordering Service)、背书模块(Endorsing peers)、区块提交模块(committing peers)等进行分离部署,使开发者可以根据具体的业务场景替换模块,实现了模块的插件式管理(plug-in/plug-out)。所以,Hyperledger Fabric是一个私有链/联盟链的开发框架,而且系统的运行不需要token支持。

随着比特币,以太币和其他一些衍生技术的普及,对将区块链、分布式分类账和分布式应用平台的底层技术应用于更具创新性的企业用例的兴趣也在增长。然而,许多企业用例需要的性能特性是无许可的区块链技术无法(目前)交付的。此外,在许多使用案例中,参与者的身份是一项硬性要求

对于企业使用,我们需要考虑以下要求:

参与者必须可被识别或可识别

  • 网络需要得到许可
  • 高交易吞吐量性能
  • 交易确认的低延迟
  • 与商业交易有关的交易和数据的隐私和机密性

虽然许多早期的区块链平台目前正在适应企业使用,Hyperledger Fabric从一开始就为企业使用而设计。

模块化

Hyperledger Fabric经过特别的设计以具有模块化架构。无论是可插拔的共识,可插拔的身份管理协议(如LDAP或OpenID Connect),密钥管理协议还是加密库,平台的核心设计旨在满足企业用例需求的多样性。

在高层次上,Fabric由以下模块化组件组成:

  • 可插拔的排序服务就交易顺序建立共识,然后向对等点广播块。
  • 可插拔的成员资格服务提供商负责将网络中的实体与加密身份相关联。
  • 可选的点对点八卦服务通过排序服务向其他对等点来传播块输出。
  • 智能合约(“链码”)在容器环境(例如Docker)内运行以进行隔离,它们可以用标准编程语言编写,但不能直接访问分类账状态。
  • 分类账可以配置为支持各种DBMS。
  • 可插拔的认可和验证策略实施,可以在每个应用程序中独立配置。

业界公认没有“一个区块链可以治理它们所有”,Hyperledger Fabric可以通过多种方式进行配置,以满足多个行业用例的各种解决方案要求。


Fabric架构

翻译中文如下

APIs:API这里的我的理解有下面两方面

  • 链代码API,主要应用与SDKs和CLI。
  • Hyperledger Composer Restful API,由composer生成API,可直接http协议访问。

SDKs

  • Hyperledger Fabric提供了许多SDK来支持各种编程语言。有两个正式发布的Node.jsJava SDK。推荐使用node。

CLI

  • CLI包括可用的API的一个子集,使开发人员能够快速测试和调试链码或查询交易状态。CLI由Golang实现和可在多个操作系统上操作。开发过程中较为方便,具体介绍

成员服务:带身份的使用者

成员服务为网络提供身份管理,隐私,保密和可审计性的服务。在一个不带权限的区块链中,参与者是不需要被授权的,且所有的节点都可以同样的提交交易并把它们汇集到可接受的块中,既:它们没有角色的区分。成员服务通过公钥基础设施(Public KeyInfrastructure (PKI))和去中心化的/共识技术使得不带权限的区块链变成带权限的区块链。在后者中,通过实体注册来获得长时间的,可能根据实体类型生成的身份凭证(登记证书enrollmentcertificates)。在用户使用过程中,这样的证书允许交易证书颁发机构(TransactionCertificate Authority (TCA))颁发匿名证书。这样的证书,如交易证书,被用来对提交交易授权。交易证书存储在区块链中,并对审计集群授权,否则交易是不可链接的。

可审计性

作为商业用途的区块链需要遵守法规,需要让监管机构审计交易记录。所以区块链是必须遵守的。

交易

是区块链上执行功能的一个请求。功能是使用**链码(Chaincode)**来实现的。

区块链服务

区块链服务通过 HTTP/2 上的点对点(peer-to-peer)协议来管理分布式总账。为了提供最高效的哈希算法来维护世界状态的复制,数据结构进行了高度的优化。每个部署中可以插入和配置不同的共识算法(PBFT, Raft, PoW,PoS)。

共识管理

区块链网络是需要全网节点达成一致意见才能将对应区块上链。fabric中共识服务称为Order service。Order service集群通过共识算法,对所有交易信息进行排序,然后打包成区块。

账本存储

  • Ledger:区块链账本,保存交易信息和智能合约代码。
  • World state:显示当前资产数据的状态,底层通过LevelDB和CouchDB数据库将区块链中的资产信息组织起来,提供高效的数据访问接口。

grpc

fabric的点对点(peer-to-peer)通信是建立在允许双向的基于流的消息gRPC上的。它使用Protocol Buffers来序列化peer之间传输的数据结构。Protocol buffers是语言无关,平台无关并具有可扩展机制来序列化结构化的数据的技术。数据结构,消息和服务是使用 proto3 language注释来描述的。

链代码

作为交易的一部分保存在总账上的应用级的代码(如智能合约)。链码运行的交易可能会改变世界状态。

智能合约或Fabric称之为“链码”,功能作为受信任的分布式应用程序,从区块链中获得安全性/信任以及对等点之间的基本共识。它是区块链应用程序的业务逻辑。

有三个关键点应用于智能合约,尤其是应用于平台时:

  • 许多智能合约在网络中同时运行
  • 它们可以动态部署(在很多情况下由任何人)
  • 应用程序代码应视为不受信任,甚至可能是恶意的

大多数现有的具有智能合约能力的区块链平台遵循共识协议的排序-执行架构:

  • 验证并排序交易然后将它们传播到所有对等节点
  • 每个对等点然后依次执行交易

几乎所有现有的区块链系统都可以找到排序-执行架构,范围从公共/无许可平台,如以太币(基于PoW的共识)到许可的平台,如Tendermint、Chain和Quorum。

Fabric为交易引入了一种新的体系结构,我们称之为执行-排序-验证。它通过将交易流分为三个步骤来解决排序-执行模型所面临的弹性、灵活性、可伸缩性、性能和机密性方面的挑战

  • 执行交易并检查其正确性,从而认可它
  • 通过(可插拔的)共识协议排序交易
  • 在将交易提交到分类账之前,根据特定于应用程序的认可策略验证交易

这种设计与排序-执行范例完全不同,因为Fabric在就排序达成最终协议之前执行交易。

在Fabric中,特定于应用程序的认可策略指定哪些对等节点,或它们中的多少,需要保证给定智能合约的正确执行。因此,每个交易只需要由满足交易认可策略所需的对等节点的子集执行(认可),这允许并行执行,从而提高系统的整体性能和规模。第一阶段也消除了任何非确定性,因为在排序之前可以过滤不一致的结果。

安全容器

链代码运行在docker容器内,每一个链代码执行在不同的docker容器内执行已达到安全隔离的效果。

事件流

事件流是用来发送和接收事件的gRPC通道。每个消费者会与事件框架建立事件流,并快速传递它感兴趣的事件。事件生成者通过事件流只发送合适的事件给连接到生产者的消费者。

 

Fabric关键组件

  • Channel:是一种数据隔离机制,保证交易信息只有交易参与方可见,每个channel是一个独立的区块链,这使得多个用户可以共用同一个区块链系统而不用担心信息泄露问题。
  • Chaincode:也叫智能合约,将资产定义和资产处理逻辑封装成接口,当其被用户调用的时候,改变账本的状态。
  • Ledger:区块链账本,保存交易信息和智能合约代码。
  • Network:交易处理节点之间的P2P网络,用于维持区块链账本的一致性。
  • Ordering service:利用kafka、SBTF等共识算法对所有交易信息进行排序并打包成区块,发给committing peers节点,写入区块链中。
  • World state:显示当前资产数据的状态,底层通过LevelDB和CouchDB数据库将区块链中的资产信息组织起来,提供高效的数据访问接口。
  • Membership service provider(MSP):管理认证信息,为client和peers提供授权服务。

 

Fabric角色

  • Client:应用客户端,用于将终端用户的交易请求发送到区块链网络;
  • Peers:负责维护区块链账本,分为endoring peers和committing peers,其中,endorser为交易做背书(验证交易并对交易签名),committer接收打包好的区块,然后写入区块链中。Peers节点是一个逻辑的概念,endorser和committer可以同时部署在一台物理机上。
  • Ordering Service:接收交易信息,并将其排序后打包成区块,放入区块链,最后将结果返回给committer peers。

 

接下来会去将上面的内容进行学习,终于可以开始使用我们的fabric网络了。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页