ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

区块链学习札记八:超级账本(Hyperledger)平台架构

2020-06-16 23:44:54  阅读:373  来源: 互联网

标签:peers Fabric Hyperledger 区块 账本 节点


区块链学习札记八:超级账本(Hyperledger)平台架构

 

超级账本(Hyperledger)是 Linux 基金会于 2015 年发起的推进区块链数字技术和交易验证的开源项目,该项目的目标是推进区块链及分布式记账系统的跨行业发展与协作

目前该项目最著名的子项目是 Fabric,由 IBM 主导开发。按官方网站描述,Hyperledger Fabric 是分布式记账解决方案的平台,以模块化体系结构为基础,提供高度的弹性、灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性。

Hyperledger Fabric 提供了一种独特的弹性和可扩展的体系结构,使其不同于其他区块链解决方案。我们必须在经过充分审查的开源架构之上对区块链企业的未来进行规划。超级账本是企业级应用快速构建的起点。

目前,Hyperledger Fabric 经历了两大版本架构的迭代,分别是 0.6 版和 1.0 版。其中,0.6 版的架构相对简单,Peer 节点集众多功能于一身,模块化和可拓展性较差。1.0 版对 0.6 版的 Peer 节点功能进行了模块化分解。目前最新的 1.1 版本处于 Alpha 阶段。

在 1.0 版中,Peer 节点可分为 peers 节点和 orderers 节点。peers 节点用于维护状态(State)和账本(Ledger),orderers 节点负责对账本中的各条交易达成共识。

系统中还引入了认证节点(Endorsing Peers),认证节点是一类特殊的 peers 节点, 负责同时执行链码(Chaincode)和交易的认证(Endorsing Transactions)。

Hyperledger Fabric 的分层架构设计如图下所示。

Hyperledger Fabric 的分层架构设计

Hyperledger Fabric 可以分为7层,分别是存储层、数据层、通道层、网络层、共识层、合约层、应用层

其中存储层主要对账本和交易状态进行存储。账本状态存储在数据库中,存储的内容是所有交易过程中出现的键值对信息。比如,在交易处理过程中,调用链码执行交易可以改变状态数据。状态存储的数据库可以使用 LevelDB 或者 CouchDB。LevelDB 是系统默认的内置的数据库,CouchDB 是可选的第三方数据库。区块链的账本则在文件系统中保存。

数据层主要由交易(Transaction)、状态(State)和账本(Ledger)三部分组成。

其中,交易有两种类型:

  • 部署交易:以程序作为参数来创建新的交易。部署交易成功执行后, 链码就被安装到区块链上。
  • 调用交易:在上一步部署好的链码上执行操作。链码执行特定的函数,这个函数可能会修改状态数据,并返回结果。

状态对应了交易数据的变化。在 Hyperledger Fabric 中,区块链的状态是版本化的,用 key/value store(KVS) 表示。其中 key 是名字,value 是任意的文本内容,版本号标识这条记录的版本。这些数据内容由链码通过 PUT 和 GET 操作来管理。如存储层的描述,状态是持久化存储到数据库的,对状态的更新是被文件系统记录的。

 

账本提供了所有成功状态数据的改变及不成功的尝试改变的历史。

账本是由 Ordering Service 构建的一个完全有序的交易块组成的区块哈希链 (Hash Chain)。

账本既可以存储在所有的 peers 节点上,又可以选择存储在几个 orderers 节点上。 此外,账本允许重做所有交易的历史记录,并且重建状态数据。

通道层指的是通道 (Channel),通道是一种 Hyperledger Fabric 数据隔离机制,用于保证交易信息只有交易参与方可见。每个通道都是一个独立的区块链,因此多个用户可以共用同一个区块链系统,而不用担心信息泄漏问题。

网络层用于给区块链网络中各个通信节点提供 P2P 网络支持,是保障区块链账本一致性的基础服务之一。

在 Hyperledger Fabric 中,Node 是区块链的通信实体。Node 仅仅是一个逻辑上的功能,多个不同类型的 Node 可以运行在同一个物理服务器中。Node 有三种类型,分别是客户端、peers 节点和 Ordering Service。

其中,客户端用于把用户的交易请求发送到区块链网络中。

peers 节点负责维护区块链账本,peers 节点可以分为 endoring peers 和 committing peers 两种。endoring peers 为交易作认证,认证的逻辑包含验证交易的有效性,并对交易进行签名;committing peers 接收打包好的区块,并写入区块链中。与 Node 类似,peers节点也是逻辑概念,endoring peers 和 committing peers 可以同时部署在一台物理机上。

Ordering Service 会接收交易信息,并将其排序后打包成区块,然后,写入区块链中,最后将结果返回给 committing peers。

共识层基于 Kafka、SBTF 等共识算法实现。Hyperledger Fabric 利用 Kafka 对交易信息进行排序处理,提供高吞吐、低延时的处理能力,并且在集群内部支持节点故障容错。相比于 Kafka,SBFT(简单拜占庭算法)能提供更加可靠的排序算法,包括容忍节点故障以及一定数量的恶意节点。

合约层是 Hyperledger Fabric 的智能合约层 Blockchain,Blockchain 默认由 Go 语言实现。Blockchain 运行的程序叫作链码,持有状态和账本数据,并负责执行交易。在Hyperledger Fabric 中,只有被认可的交易才能被提交。而交易是对链码上的操作的调用,因此链码是核心内容。同时还有一类称之为系统链码的特殊链码,用于管理函数和参数。

应用层是 Hyperledger Fabric 的各个应用程序。

此外,既然是联盟链,在 Hyperledger Fabric中 还有一个模块专门用于对联盟内的成员进行管理,即 Membership Service Provider(MSP),MSP 用于管理成员认证信息,为客户端和 peers 节点提供成员授权服务。


备注:学习笔记,日有所得。

           --不间端地思考,实时地批判你的工作!

标签:peers,Fabric,Hyperledger,区块,账本,节点
来源: https://blog.csdn.net/ydyuse/article/details/104766483

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有