二维码

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

1238 人阅读 | 时间:2021年01月15日 01:05
7.2 Fabric项目 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

7.2 Fabric项目

1327 人参与  2018年08月23日 19:07  分类 : 区块链精品文章  评论

7.2.1 Fabric基本运行分析

Fabric项目的目的是要实现一个面向商业环境的通用权限区块链底层设施,它是用于开发企业级区块链应用的主要 框架,2017年7月11日,官方网站宣布发布了1.0正式版,标志着这个框架已经可以进入到生产环境的实践阶段。本节将会通过部署运行一个示例来体会一 下如何使用Fabric实现一个智能合约系统并且部署一个网络,在开始之前,我们来了解一下Fabric与比特币、以太坊这些区块链系统有什么差别,以及 它的运行框架是什么样的。

先看一下彼此的区别:

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

从上表可以看出,Fabric与其他公链系统主要的区别是一个带有许可授权的区块链网络系统,并且不使用通常依靠算力的工作量证明共识算法,而是使用更适 合在商业环境下使用的PBFT算法。既然Fabric有着许多的不同,那么它的运行框架是什么样的呢?我们就看一下1.0正式版的运行框架图:

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

通过上图,我们可以看到对等节点分解为两个角色:一个背书,一个提交。整个运行环路如下:

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目录,进去后可以看到有以下的文件:

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

我们解释一下几个组件的作用:

·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可以查看到,分别是:

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

这里需要对Fabric的结构和模块做一些介绍。在Fabric中,对区块链应用中的各个角色进行了明确的划分,这也 是其高度模块化的一个体现,不再像比特币这样一股脑儿都混在一起,Fabric面向商业应用,因此其本质上是设计为一个私有链或者说是联盟链,除了通常的 模块元素外,主要特点表现在以下几个方面。

1)具有多种类型的节点,比如负责管理账本数据的peer对等节点,负责提供共识服务的orderer共识服务节点,负责鉴权的身份服务节点,负责创建和校验交易并且维护智能合约状态的验证节点,负责提供用户端服务的应用节点等。

2)对等节点之间的账本数据共享通过一个称为channel(也就是通道)的机制来过滤,通道是Fabric中一 个富有特色的机制,正是通过通道的概念,实现了数据的隔离分发,只有处于同一个通道的节点之间才会分享账本数据,通过这种机制,在同一个联盟链的对等节点 之间,可以根据策略拥有不同的账本副本数据。

注意,对于共识服务节点来说,是接收所有数据的,通道只是与对等节点相关,实际上对等节点是通过向共识服务节点订阅了不同的主题,而每个主题就是一个通道,它们的关系如下图所示:

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

图中peer1与peer2订阅了同一个通道,peer3与peer4订阅了同一个通道,peer5与peer6订阅了同一个通道,根据不同的通道订阅,共识服务根据策略分发不同的区块数据,我们可以发现,在Fabric的设计中充分考虑了作为商业环境使用的安全问题。

通过证书颁发服务进行身份认证与鉴权,这个与传统的企业级系统是类似的,限制进入系统的用户,设置不同的权限,作为面向商业使用的系统,这个显然是必备的,也是与公链系统(如比特币、以太坊等)很大的一个差别。

Fabric由于有通道和身份认证的设施,使得对于每一个节点看到的数据都是可以不一样的,也就是说从逻辑上来 看,Fabric是一个实现了多通道多链结构的一个区块链网络。这是很有意思的,此前的比特币、以太坊等公链系统,每个节点看到的数据都是一样的,无论是 实际的物理数据还是逻辑上的视图数据都是一致的。Fabric的这个特点,类似于数据库系统中的物理表与视图的概念,通过设定不同的视图逻辑,实现不同的 数据管控要求。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=77

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (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"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
  • 验证码
◎已有 0 人评论
搜索
作者介绍
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×