菜鸟系列Fabric——Fabric 基本概念(1)
Fabric 基本概念
1.区块链介绍
区块链之所以引来关注是因为比特币开源项目,尤其是比特币价值的飙升,让大家开始关注数字货币以及相关技术。那么区块链究竟是什么?
1.1 区块链定义
狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验。
广义上,区块链指代这些基于区块链结构实现的分布式记账技术。
1.2 具体特征
- 去中心化。由于使用分布式核算和存储,体系不存在中心化的硬件或管理机构。
- 开放性。系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。
- 自治性。区块链采用基于协商一致的规范和协议使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据。
- 信息不可篡改。一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
- 匿名性。由于节点之间的交换遵循固定的算法,其数据交互是无需信任的。
1.3 分类
当前根据参与者类型,主要分为以下三类:
公有链,任何人都可以参与使用和维护,参与者多为匿名。典型的如比特币和以太坊区块链,信息是完全公开的。
私有链,由集中管理者进行管理限制,只有内部少数人可以使用,信息不公开。
联盟链,介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,典型如超级账本项目。
接下来,将重点介绍联盟链超级账本fabric项目。
2. 超级账本Fabric项目
超级账本(Hyperledger)项目是全球最大的开源企业级分布式账本平台。
在 Linux 基金会的支持下,超级账本项目吸引了包括 IBM、Intel、Cisco、DAH、摩根大通、R3、甲骨文、百度、腾讯等在内的众多科技和金融巨头的参与贡献,以及在银行、供应链等领域的应用实践。
作为最早加入到超级账本项目中的顶级项目,Fabric 由 IBM、DAH 等企业于 2015 年底提交到社区。项目在 Github 上地址为 https://github.com/hyperledger/fabric。
该项目的定位是面向企业的分布式账本平台,创新的引入了权限管理支持,设计上支持可插拔、可扩展,是首个面向联盟链场景的开源项目。
2.1 Fabric特性
- 解耦了原子排序环节与其他复杂处理环节,消除了网络处理瓶颈,提高可扩展性;
- 解耦交易处理节点的逻辑角色为背书节点(Endorser)、确认节点(Committer),可以根据负载进行灵活部署;
- 加强了身份证书管理服务,作为单独的Fabric CA项目,提供更多功能;
- 支持多通道特性,不同通道之间的数据彼此隔离,提高隔离安全性;
- 支持可拔插的架构,包括共识、权限管理、加解密、账本机制都模块,支持多种类型;
- 引入系统链码来实现区块链系统的处理,支持可编程和第三方实现。
2.2 Fabric架构
超级账本 Fabric 的整体架构如下图所示。

Fabric 为应用提供了 gRPC API,以及封装 API 的 SDK 供应用调用。应用可以通过 SDK 访问 Fabric 网络中的多种资源,包括账本、交易、链码、事件、权限管理等。应用开发者只需要跟这些资源打交道即可,无需关心如何实现。其中,账本是最核心的结构,记录应用信息,应用则通过发起交易来向账本中记录数据。交易执行的逻辑通过链码来承载。整个网络运行中发生的事件可以被应用访问,以触发外部流程甚至其他系统。权限管理则负责整个过程中的访问控制。账本和交易进一步地依赖核心的区块链结构、数据库、共识机制等技术;链码则依赖容器、状态机等技术;权限管理利用了已有的 PKI 体系、数字证书、加解密算法等诸多安全技术。底层由多个节点组成 P2P 网络,通过 gRPC 通道进行交互,利用 Gossip 协议进行同步。
2.3 核心概念与组件
超级账本 Fabric 采用了模块化功能设计,整体的功能模块结构如下图所示。

超级账本 Fabric 面向不同的开发人员提供了不同层面的功能,自下而上可以分为三层:
- 网络层:面向系统管理人员。实现 P2P 网络,提供底层构建区块链网络的基本能力,包括代表不同角色的节点和服务 ;
- 共识机制和权限管理:面向联盟和组织的管理人员。基于网络层的连通,实现共识机制和权限管理,提供分布式账本的基础 ;
- 业务层:面向业务应用开发人员。基于分布式账本,支持链码、交易等跟业务相关的功能模块,提供更高一层的应用开发支持。
菜鸟系列Fabric——Fabric 基本概念(1)的更多相关文章
- 菜鸟系列docker——docker基本概念(1)
docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...
- 开心菜鸟系列----函数作用域(javascript入门篇)
1 <!DOCTYPE html> 2 <html> 3 <script src="./jquery-1.7.2.js"></ ...
- 开心菜鸟系列----变量的解读(javascript入门篇)
console.info( console.info(window['weiwu']) console.info(window. ...
- faster-rcnn系列原理介绍及概念讲解
faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...
- 原创】Java并发编程系列2:线程概念与基础操作
[原创]Java并发编程系列2:线程概念与基础操作 伟大的理想只有经过忘我的斗争和牺牲才能胜利实现. 本篇为[Dali王的技术博客]Java并发编程系列第二篇,讲讲有关线程的那些事儿.主要内容是如下这 ...
- 菜鸟系列Fabric——Fabric 网络架构介绍(4)
Fabric 网络架构介绍 1. 网络架构介绍 如图所示,fabric网络架构主要包含客户端节点.CA节点.Peer节点.Orderer节点这几个部分.并且fabric架构是安装组织来进行划分当,每个 ...
- 菜鸟系列Fabric——Fabric 动态添加组织(7)
Fabric 网络动态添加组织 1.环境准备 如果存在fabric网络环境可不执行,若不存在可以安装下列进行准备 下载fabric-sample,fabric https://github.com/h ...
- 菜鸟系列Fabric源码学习—orderer服务启动
Fabric 1.4 orderer 服务启动流程 1.提要 orderer提供broadcast和deliver两个服务接口.orderer节点与各个peer节点通过grpc连接,orderer将所 ...
- 菜鸟系列Fabric源码学习 — 区块同步
Fabric 1.4 源码分析 区块同步 本文主要从源码层面介绍fabric peer同步区块过程,peer同步区块主要有2个过程: 1)peer组织的leader与orderer同步区块 2)pee ...
随机推荐
- android启动模拟器命令
参考资料:http://blog.csdn.net/sanjinxiong/article/details/6758222 启动模拟器 首先通过android list avd 查看建好的虚拟设备: ...
- AcWing:165. 小猫爬山(dfs + 剪枝)
翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆 ...
- Idea中使用Maven编码打包时中文乱码的解决办法
-Dfile.encoding=GBK
- python3爬取拉钩招聘数据
使用python爬去拉钩数据 第一步:下载所需模块 requests 进入cmd命令 :pip install requests 回车 联网自动下载 xlwt 进入cmd命令 :pip install ...
- y7000笔记本 darknet-yolo安装与测试(Ubuntu16.04+Cuda9.0+Cudnn7.1)
https://zhuanlan.zhihu.com/p/41096599 1.先查看是否安装有以下组件,若有先考虑彻底删除再安装(安装严格按照下面顺序进行) 查看nvidia 版本 nvidia-s ...
- TCP连接建立 之 同时打开
假设两台设备双方均发送syn给对端,在发送syn之后状态处于SYN_SENT状态,此时双方均收到对端的发来的syn,则立即进入SYN_RECV状态,并且都向对端回复syn+ack,在收到syn+ack ...
- Android SDK更新后Eclipse无法正常工作问题
一,问题描述 更新完Android SDK后,如果你的ADT版本低于其设定的最新版本,你更新完后立马会报错 这个时候你的项目出现各种红线,反正看着让人很不爽 二,原因 每次你更新完SDK后,Andro ...
- tfserving 调用deepfm 并预测 java 【参考】
https://blog.csdn.net/luoyexuge/article/details/79941565?utm_source=blogxgwz8 首先是libsvm格式数据生成java代码, ...
- Linux版本
1.内核:Linux内核Kernel目前最新稳定版 3.4 http://www.kernel.org/ 2.发行版本:是一些厂商将Linux系统内核与应用软件和文档包装起来,并提供一些安装界面和系 ...
- 详解nohup和& 区别
nohup 一.[解释] 不挂断地运行命令.no hangup的缩写,意即“不挂断”.一般理解&记住一个命令最简单的方法是记住它是什么缩写,就自然理解了这个命令.nohup运行由 Comman ...