Hyperledger Fabric 学习
什么是区块链
- 什么是区块链在咱们没有接触的时候,只知道它是一个去中心化的存储方式。当咱们发生交易,或者动做的时候咱们会将记录通知给全部参与者共同维护,达到去中心化的进行存储。而且咱们会将记录使用加密技术保证记录一旦添加到了帐本中就没法修改(没法修改的帐本就能够追溯信息根源)这个也就是区块链有时候被称为证实系统。
区块链使用场景
- 多方参与
- 跨机构数据共享需求
- 可以除本增收
- 提升工做效率

智能合约
- 智能合约也就是咱们说的链码,咱们能够经过智能合约访问咱们的帐本,还能够在不一样的场景下经过智能合约达到不一样的变化,也比如如咱们写的代码。
共识
- 保证帐本在整个网络中同步的过程就叫作共识,该过程确保帐本仅在交易被相应参与者批准时更新,而且当帐本更新时,它们以相同的顺序更新相同的交易。
什么是Hyperledger Fabric
Hyperledger Fabric 是 Hyperledger 中的区块链项目之一。与其余区块链技术同样,它有一个帐本,使用智能合约,是一个参与者管理交易的系统。算法
- Hyperledger Fabric与其余区块链不一样的是私有、许可。与容许未知身份与网络的开放式非许可系统(须要诸如“工做量证实”之类的协议来验证交易并保护网络)不一样,Hyperledger Fabric 网络的成员须要从可信赖的 成员服务提供者(MSP) 注册。
Membership Services Provider (MSP)。 MSP是证书颁发机构,以管理用于认证成员身份和角色的证书。在Hyperledger Fabric网络中,全部的节点必需要有认证过的身份才能进行交易。MSP管理用户ID并验证网络上的全部参与者,从而使Hyperledger Fabric成为一个私有的和准入的网络。数据库
- Hyperledger Fabric 还提供多种可插拔选项。帐本数据能够以多种格式存储,共识机制能够交换替换,而且支持不一样的MSP。
- Hyperledger Fabric 还提供建立管道功能,显示管道通信隔离,没有加入这个管道你就没有这个管道通知信息。
- 针对交易 Fabric 引入了一种新的架构,咱们称为执行-排序-验证。为了解决顺序执行模型面临的弹性、灵活性、可伸缩性、性能和机密性问题,它将交易流分为三个步骤:
- 执行一个交易并检查其正确性,从而给它背书,
- 经过(可插拔的)共识协议将交易排序,
- 提交交易到帐本前先根据特定应用程序的背书策略验证交易
共享帐本
Hyperledger Fabric 有一个帐本子系统,包含两个组件:世界状态和交易状态,每一个参与者都拥有他们所属的Hyperledger Fabric 网络的帐本副本网络
- 世界状态组件:描述在给定时间点帐本的状态,它是帐本的数据库。数据存储方式能够替换,默认是LevelDB键值存储数据库(简称:数据库)
- 交易日志组件:记录产生世界状态中当前值得全部交易,是世界状态的更新历史,它只记录区块链网络使用的帐本数据库先后的值(简称:日志)
智能合约
- Hyperledger Fabric 智能合约用链码进行编写,当应用程序须要与帐本发生交互,由区块链外部的应用程序调用。通常链码只与帐本的世界状态(数据库)交互、不与交易日志发生交互
隐私
- 当咱们的数据须要注意隐私问题,Hyperledger Fabric 提供支持私有网络,也就是咱们说的通道进行隔离产生一个私有网络
共识
- 咱们的交易必须按照发生的顺序写入咱们的帐本中,即便它们在网络中不一样参与者不一样的集合中,为保证顺序、合法性、帐本状态 一致。 Hyperledger Fabric 提供了一些容错机制好比:PBFT(拜占庭容错算法)
身份
- 区块链网络中不一样的参与者包括Peer节点、排序节点、客户端应用程序、管理员等,都具备一个封装在X.509数字证书。这个身份表明着你能访问到的资源。
成员
- 就至关于合法的公民,这里的话就要配合成员服务者(MSP)验证成员的有效身份信息。(如影随行,一般结合使用)
策略
- 好比咱们要作一个时间有什么前提条件,智能合约背书策略 链码包中的每个智能合约都有一个背书策略,该策略指明了须要通道中多少不一样组织的成员根据指定智能合约执行和验证交易才能使一笔交易有效。所以,背书策略定义了必须“背书”(批准)提案执行的组织(的 Peer 节点)。
Peer节点
- 区块链网络主要是由Peer节点组成,Peer是网络的基本元素,由于他们存储了帐本和智能合约。一个成员能够有多个Peer节点,可是主要分为主节点、背书节点、记帐节点、排序节点
- 当发生通信时只会有一个节点进行确认,而后经过主节点进行通知组织中其余Peer
排序节点和交易流程(执行、排序、验证)
- 提案
- 客户端应用程序将交易发送给一组节点,这些节点会调用智能合约生成帐本更新提案,而后进行背书审核。
- 将交易排序并打包到区块中
- 但咱们背书成功以后,咱们会交易提交到排序服务节点,排序服务建立交易区块,最终这些交易区块将分发给管道全部的Peer节点
- 验证和提交
- 每一个节点将独立地以肯定的方式验证区块,以确保帐本保持一致。
排序服务实现
- Raft (推荐) 、 Kafka (在 v2.0 中被废弃) 、 Solo (在 v2.0 中被废弃)