一、阐明
区块链是一个通明的,基于不可变模式的去中心化零碎,外围就是一个分布式账本,记录网络上产生的所有交易。
区块链网络次要有三种类型:公共区块链、联盟区块链,以及公有区块链;咱们熟知的比特币、以太坊这些数字货币其实就是属于公共区块链平台;
而明天要介绍的 Fabric
则是属于联盟链类型的;Fabric 是一个企业级的分布式账本技术平台,也是目前利用最宽泛的区块链我的项目。
本文将梳理区块链技术平台 Fabric
的外围概念与要害性能。
二、特点
Fabric 与其余区块链平台比照有以下几个特点:
- 开源:它是 Linux 基金会旗下的一个重量级区块链平台。
- 身份治理:fabric 和其余区块链零碎的不同之处在于它是公有的,有准入资格受权的,并非一个公开的容许不明身份参与者进入网络的零碎;它提供了一个成员身份服务,用于管理网络上的所有参与者和权限。
- 隐衷和窃密:有一个通道的概念提供了交易隐衷和机密性,一个 Fabric 的网络能够创立多个通道,任何未正式受权的网络成员都没方法看到或者拜访通道上的任何数据;能够了解为就是反对多租户,通道与通道之间的数据都是隔离的。
- 链码性能:智能合约在 Fabric 中称之为链码,用于对账本的拜访,例如写入交易信息,查问数据等等。
- 模块化设计:Fabric 实现了模块化架构,例如身份、排序、链码等服务和性能,都是可选的可插拔的非常灵活。
三、零碎性能
Fabric 的一个性能架构图:
- 身份治理性能是通过 PKI 体系和 CA 模块来实现成员、权限还有证书的治理。
- 分布式账本就是区块链网络的外围性能,记录着所有的交易信息。
- 排序服务,相似一个裁判的角色,因为不同的交易程序对最终的交易后果是有很大的影响的,所以这个排序服务次要是为了让所有的节点达成对立的共识,最终实现数据的一致性。
- 网络通信方面,节点与节点之间的点对点通信是基于 grpc 协定,而后再通过 gossip 算法来实现去中心化的播送,意思就是不须要核心节点,通过任意一个节点以一传十,十传百的形式来把音讯散播到全网。
- 背书验证指的是背书策略,背书策略有很多种,例如我指定策略为大多数节点批准,意思就是一笔交易必须超过半数的节点都认证通过了,能力实现,这样就能无效的进攻一些歹意的交易。
- 链码服务是一个独立的应用程序,运行在隔离的 Docker 容器中,在链码部署的时候会主动生成链码的 Docker 镜像。
四、组件逻辑关系
- 图中的浅蓝色方块
N
代表整个区块链网络; - 网络底部的
C
为通道
相当于是一个子链,一个区块链网络能够创立多个通道,通道与通道之间是数据隔离的,能够了解为是一个多租户零碎; - 一个通道下面能够部署多个
Peer 节
点为图中蓝色方块P1
和P2
,区块链网络次要由Peer 节
点组成; - 每个
Peer 节
点上都有一份账本
的全量正本为红色的L1
,而后智能合约
是部署在每个节点上的为黄色S1
,一个节点能够部署多个智能合约
; - 最初区块链网络里面的红色方块 A 指的是拜访区块链的
利用
,利用是通过通道来与节点上的账本进行交易的。
五、账本
账本是 Hyperledger Fabric 中的一个重要概念,它存储了无关业务对象的重要事实信息,其中既包含对象属性的以后值,也包含产生这些以后值的交易的历史。
账本由一个区块链(链)形成,并将不可变的、有序的记录寄存在区块中;同时蕴含一个状态数据库来记录以后的 Fabric 状态。每个 通道
中各有 一个账本
。各个节点对于它所属的每个通道,都会保留一份该通道的 账本正本
。
如下图所示,Hyperledger Fabric 中的账本由“世界状态“和”区块链“这两局部组成:
世界状态:世界状态是以数据库的模式实现,默认应用的是 LevelDB,这是一个 KeyValue 数据库;外面记录的是业务对象的最新值;智能合约次要与账本中的世界状态进行交互。
区块链:以文件模式实现的,记录交易日志明细,相当于是一个交易的台账表。
例如有一个银行账户,产生一次贷款和三次取款操作,则最终区块链外面会记录四条记录的日志,而世界状态则只记录一条记录,就是以后账户最新的余额。
六、智能合约
智能合约
是一个运行在账本上的应用程序,它能够对资产进行编码,其中的交易指令(或者叫业务逻辑)也能够用来批改资产。
在 Fabric2.0
当前引入了新的生命周期来治理合约:
- 首先第一步开发合约:须要依赖原生的合约 sdk,反对包含 Java、js 和 Golang 三种开发语言。
- 开完合约后,管理员能够应用 package 子命令来打包合约,并生成打包文件。打包命令默认程序是 golang 语言,能够应用 -l 参数来指定其余语言。
- 一次打包能够屡次装置,而后接着应用 install 命令在指定的 peer 节点上装置合约。
- 装置胜利后,接着应用 approveformyorg 命令代表所在机构审批合约,并且指定背书策略。
- 最初应用 commit 命令向指定的通道提交合约定义,执行完这一步智能合约就部署胜利,正式失效了。
- 接下来咱们就能够编写应用程序来与区块链网络进行交易了,Fabric 封装了一套网关 SDK 给应用程序应用,通过一系列的简略 API 就实现和区块链网络进行交互。
对于 Java 智能合约的开发能够看我之前的文章《Hyperledger Fabric 2.x 自定义智能合约》
七、交易流程
- 首先区块链利用发动一笔交易;
- 而后
背书节点
对交易进行签名验证,返回验证后果; - 客户端将背书后果封装发给 Peer 节点,而后再提交给 Order 节点进行数据同步;
- Order 节点按程序把交易信息同步给其余的 Peer 节点进行验证和提交;
- 最初账本更新,实现整个交易。
扫码关注有惊喜!