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 网络,提供底层构建区块链网络的基本能力,包括代表不同角色的节点和服务 ;
  • 共识机制和权限管理:面向联盟和组织的管理人员。基于网络层的连通,实现共识机制和权限管理,提供分布式账本的基础 ;
  • 业务层:面向业务应用开发人员。基于分布式账本,支持链码、交易等跟业务相关的功能模块,提供更高一层的应用开发支持。

最新文章

  1. :before :after
  2. mvc 对一个或者多个实体验证失败
  3. webstrom软件使用
  4. POJ 3280 Cheapest Palindrome(DP)
  5. 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
  6. qwt总结1
  7. 在 ASP.NET MVC 中使用 HTTPS (SSL/TLS)
  8. Telnet服务器和域名系统的端口号 Mac OS X
  9. js获取页面宽高
  10. win32SDK的hello,world程序(二)
  11. 手机网站的tips[转载]
  12. CSS基础:替换元素和非替换元素
  13. 3.JavaScript-语法、关键保留字及变量
  14. 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题
  15. javascript day 02
  16. iOS开发之--宏定义与const的区别及使用方法
  17. Hibernate-基础入门案例,增删改查
  18. Hive入门笔记---2.hive函数大全
  19. learn go memoization
  20. ArchLinux 下 virtualbox 报错 libQtCore.so.4: cannot open shared object file

热门文章

  1. EntityManager的merge()方法
  2. java常见问题 ——编辑报错1
  3. MessagePack Java 0.6.X 可选字段
  4. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)H
  5. luoguP1160 队列安排 x
  6. matplotlib(一):散点图
  7. 灰度图像--图像增强 Robert算子、Sobel算子
  8. 无法连接虚拟设备 ide1:0
  9. Linux TCP自连接问题
  10. System.Runtime.CompilerServices.Unsafe