7.2 Fabric项目 - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
7.2 Fabric项目
1327 人参与 2018年08月23日 19:07 分类 : 区块链精品文章 评论
Fabric项目的目的是要实现一个面向商业环境的通用权限区块链底层设施,它是用于开发企业级区块链应用的主要 框架,2017年7月11日,官方网站宣布发布了1.0正式版,标志着这个框架已经可以进入到生产环境的实践阶段。本节将会通过部署运行一个示例来体会一 下如何使用Fabric实现一个智能合约系统并且部署一个网络,在开始之前,我们来了解一下Fabric与比特币、以太坊这些区块链系统有什么差别,以及 它的运行框架是什么样的。
先看一下彼此的区别:
从上表可以看出,Fabric与其他公链系统主要的区别是一个带有许可授权的区块链网络系统,并且不使用通常依靠算力的工作量证明共识算法,而是使用更适 合在商业环境下使用的PBFT算法。既然Fabric有着许多的不同,那么它的运行框架是什么样的呢?我们就看一下1.0正式版的运行框架图:
通过上图,我们可以看到对等节点分解为两个角色:一个背书,一个提交。整个运行环路如下:
1)应用程序通过SDK调用发送请求到对等节点;
2)对等节点通过智能合约执行请求,请求完毕后会进行背书,背书就是节点对请求执行的确认,返回YES或NO,参与背书的对等节点将执行结果返回给应用程序;
3)应用程序将接收到的背书结果提交给共识服务节点;
4)共识服务节点执行共识过程,生成区块数据并发送给对等节点;
5)对等节点进行交易数据的验证之后再提交到本地的账本数据中。
这便是Fabric中的一个交易运行流程,这里提醒一下读者,Fabric的版本发布过程中,有过一个重要的版本0.6版,这个版本与1.0正式版的流程略有差别,这里不再赘述,读者在试用Fabric时,务必注意下版本,接下来我们就开始安装使用Fabric示例。
7.2.2 Fabric安装
要使用Fabric,首先要安装这个项目框架,本示例在Mac上进行,对于Linux和Windows过程是类似 的,不过还是建议使用Mac或者Linux,能省去很多麻烦。对于Linux发行版,以常见的Ubuntu来说,可以使用16.04版,如果是 CentOS则可以使用CentOS7,使用较高版本的系统,可以省去很多额外安装依赖的麻烦,让我们一步步开始。
(1)安装Docker运行环境
Docker是一个轻量级的容器环境,类似于虚拟机,但是比虚拟机要轻很多,在一个操作系统中可以运行相当多数量 的Docker容器,每一个容器中可以运行独立的服务,容器与容器之间是隔离的,不会互相有干扰,通常在安装Docker的时候都会连带一起安装 Docker Compose,通过Docker Compose可以方便地部署多个Docker容器实例,我们将使用这些工具来部署Fabric节点,每一个节点都运行在一个独立的Docker容器中。 安装时请选择不低于1.12的版本,安装完毕后,可以分别运行如下命令检查Docker和Docker Compose的版本:
docker -v
docker-compose -v
(2)安装Go运行环境
Fabric使用Go语言开发,因此需要安装Go的环境,这个也不再赘述了,安装完毕后不要忘记设置GOPATH环境变量。分别使用如下命令查看Go的版本以及GOPATH的设置:
go version
echo $GOPATH
(3)安装Node.js以及NPM
Fabric提供有多种语言版本的SDK,可以用于通过API的调用与Fabric构建的区块链服务进行交互,我 们使用Fabric提供的针对Node.js的SDK来开发应用,注意保持Node运行时的版本为6.9.x,这里使用的版本是6.9.5,目前官方的 SDK还没有支持更高版本的Node,通过以下命令可以查看Node安装的版本:
node -v
npm -v
至此,基础环境就安装完毕了,接下来安装Fabric。
(4)创建目录
下载官网提供的平台相关的二进制文件到创建的目录中。
cd ~ | mkdir fabricsample
cd ~/fabricsample
(5)下载Fabric组件
curl -sSL https://goo.gl/iX9dek | bash
使用curl工具下载Fabric的组件,使用这些文件就可以设置Fabric网络了,下载完毕后,可以看到在目录中生成了一个bin目录,进去后可以看到有以下的文件:
我们解释一下几个组件的作用:
·configtxgen:用于生成共识服务启动以及通道创建所需的配置数据,它需要一个名为configtx.yaml的配置文件,在这个文件中包含了Fabric节点网络的定义。
·configtxlator:可以用来将通道配置信息转换为可读形式。
·cryptogen: 用于生成x509标准证书,用于实现身份识别等鉴权功能,这个命令工具需要使用一个名为crypto-config.yaml的配置文件,在这个配置文件 中包含需要部署的Fabric网络拓扑结构,根据网络结构,cryptogen命令可以生成所需的证书库以及密钥。
·get-byfn.sh:用来下载名为byfn的脚本程序,实际上其中包含了一个下载命令。
·get-docker-images.sh:这是一个脚本程序,可以用来下载Fabric的各个组件到本地的Docker容器中。
·orderer:共识服务程序,在超级账本中将共识服务独立为一个节点程序,负责将网络中的交易事务打包进区块,并使用通道机制订阅给其他的对等节点(也可以说是账本节点)。
·peer:账本节点程序,用于维护账本数据并且运行智能合约,以下统称这种节点为对等节点。
我们可以看到,运行超级账本的Fabric,要比运行比特币或者以太坊复杂很多,作为一个商业级的联盟链基础设施,增加了很多公链系统没有的组件功能。
除了下载这些文件,命令脚本同时还安装了Fabric组件的Docker镜像,从Docker Hub下载到本机的Docker仓库,使用docker images可以查看到,分别是:
这里需要对Fabric的结构和模块做一些介绍。在Fabric中,对区块链应用中的各个角色进行了明确的划分,这也 是其高度模块化的一个体现,不再像比特币这样一股脑儿都混在一起,Fabric面向商业应用,因此其本质上是设计为一个私有链或者说是联盟链,除了通常的 模块元素外,主要特点表现在以下几个方面。
1)具有多种类型的节点,比如负责管理账本数据的peer对等节点,负责提供共识服务的orderer共识服务节点,负责鉴权的身份服务节点,负责创建和校验交易并且维护智能合约状态的验证节点,负责提供用户端服务的应用节点等。
2)对等节点之间的账本数据共享通过一个称为channel(也就是通道)的机制来过滤,通道是Fabric中一 个富有特色的机制,正是通过通道的概念,实现了数据的隔离分发,只有处于同一个通道的节点之间才会分享账本数据,通过这种机制,在同一个联盟链的对等节点 之间,可以根据策略拥有不同的账本副本数据。
注意,对于共识服务节点来说,是接收所有数据的,通道只是与对等节点相关,实际上对等节点是通过向共识服务节点订阅了不同的主题,而每个主题就是一个通道,它们的关系如下图所示:
图中peer1与peer2订阅了同一个通道,peer3与peer4订阅了同一个通道,peer5与peer6订阅了同一个通道,根据不同的通道订阅,共识服务根据策略分发不同的区块数据,我们可以发现,在Fabric的设计中充分考虑了作为商业环境使用的安全问题。
通过证书颁发服务进行身份认证与鉴权,这个与传统的企业级系统是类似的,限制进入系统的用户,设置不同的权限,作为面向商业使用的系统,这个显然是必备的,也是与公链系统(如比特币、以太坊等)很大的一个差别。
Fabric由于有通道和身份认证的设施,使得对于每一个节点看到的数据都是可以不一样的,也就是说从逻辑上来 看,Fabric是一个实现了多通道多链结构的一个区块链网络。这是很有意思的,此前的比特币、以太坊等公链系统,每个节点看到的数据都是一样的,无论是 实际的物理数据还是逻辑上的视图数据都是一致的。Fabric的这个特点,类似于数据库系统中的物理表与视图的概念,通过设定不同的视图逻辑,实现不同的 数据管控要求。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=77
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 二、支付汇款2018-09-25 15:17
- 第7章 区块链开发平台:超级账本2018-08-23 19:15
- 8.4.4 配置文件2018-09-15 10:17
- 12.2 票据背书需求分析2018-10-10 12:58
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区