本文总结自《区块链核心技术与应用》这本书,Linux基金会于2015年12月启动了名为“超级账本”(Hyperledger)的开源项目,旨在推动各方协作,共同打造基于区块链的企业级分布式账本底层技术,用于构建支撑业务的行业应用和平台。
超级账本里包括10个项目(project),其中区块链框架类项目5个:Fabric,Sawtooth,Iroha,Burrow和Indy;区块链工具类项目5个:Cello,Composer,Explorer, Caliper 和 Quilt 。
Fabric 于 2017 年 7月发布了1.0 GA版本,并得到社区较广泛的使用。本文主要介绍Fabric的总体架构。

Fabric基础架构

Fabric 项目的目标是实现一个通用的权限区块链(Permissioned Chain)的底层基础框架,为了适用于不同的场合,采用模块化架构提供可切换和可扩展的组件,包括共识算法、加密安全、数字资产、智能合约和身份鉴权等服务。

Fabric 克服了比特币等公有链项目的缺陷,如吞吐量低、交易公开无隐私性、无最终确定性以及共识算法低效等问题,使得用户能够方便地开发商业应用。

另一方面,Fabric 也存在不足之处,如 交易过程还有并发控制的局限性,整体性能还有待提高,底层架构复杂,依赖一些分布式架构等。

主要组件

Fabric 的组件包括客户端(Client),网络节点(Peer),CA(Certificate Authority)节点和排序节点(Orderer)。各个组件的相互关系如图所示。

客户端

主要作用是和 Fabric 系统交互,实现对区块链系统的操作。这些操作分为管理类和链码类的两种。管理类包括启停节点和配置网络等;链码类操作主要是链码的生命周期管理,如安装、实例化以及调用链码。最常用的客户端是命令行客户端(CLI),此外是用 Fabric SDK 开发的应用客户端。用户通过不同的客户端使用 Fabric 系统的功能。

网络节点(Peer)

区块链去中心化网络中的对等节点,按照功能主要分为背书节点(Endorser)和确认节点(Committer)。背书节点主要对交易预案进行校验、模拟执行和背书。确认节点主要负责检验交易的合法性,并更新和维护区块链数据和账本状态。在实际部署中,背书节点和确认节点既可以部署在同一物理节点上,也可以分开部署。同时,所有节点也都是记账节点。

排序节点(Orderer)

主要职责是对各个节点发来的交易进行排序。在并发的情况下,各个节点交易的先后时序需要通过排序节点来确定并达成共识。排序节点按照一定规则确定交易顺序之后,发给各个节点把交易持久化到区块链的账本中。排序节点支持互相隔离的多个通道,使得交易只发送给相关的节点(Peer),真实产业应用时一般排序节点部署在盟主(联盟发起方)。

CA 节点

主要给Fabric网络中的成员提供基于数字证书的身份信息,可以生成或取消成员的身份证书(certificate)。在成员身份明确的基础上,Fabric可以实现权限控制的管理。

Fabric 网络的组件往往归属于不同的组织,在组织之间形成对等的去中心化网络。每个组织通常拥有自己的客户端、网络节点和 CA 节点,并且可以根据需要创建一个或多个不同的类型节点。排序节点不属于某个组织的实体,属于组织共同维护的组件。既可以使用Fabric自带的,也可以使用第三方的证书进行身份认证和管理。

通道

商业应用的一个重要的需求是私密性交易,为此 Fabric 设计了通道(Channel)来提供成员之间的隐私保护。通道是部分网络成员之间拥有独立的通信渠道,在通道中发送的交易只有属于通道的成员才可见,因此通道可以看作是Fabric的网络中部分成员的私有通信“子网”。

通道由排序服务管理。在创建通道的时候,需要定义它的成员和组织、锚节点(anchor peer)和排序服务的节点,一条通道对应的区块链结构也同时生成,用于记录账本的交易,通道的初始配置信息记录在区块链的创世块(第一个区块)中。通道的配置信息可以用增加一个新的配置区块来更改。

每个组织可有多个节点加入同一个通道,这些节点中可以指定一个锚节点(或多个锚节点做备份)。锚节点代表本组织与其他组织的节点交互,从而发现通道中的所有节点。另外,同一组织的节点会选举或指定主导节点( leading peer ),主导节点负责接收从排序服务发来的区块,然后转发给本组织的其他节点。主导节点可以通过特定的算法选出,因此保证了在节点数量不断变动的情况下仍能维持整个网络的稳定性。

在 Fabric 的网络中,可能同时存在多个彼此隔离的通道,每个通道包含一条私有的区块链和一个私有账本,通道中可以实例化一个或多个链码,以操作区块链上的数据。由此可见,Fabric 是以通道为基础的多链多账本系统。通道的引入,增加了fabric商业化时的利用率,降低了成本,可以容纳更复杂的商业环境。

分布式账本

Fabric 里的数据以分布式账本的形式存储。账本由一系列有顺序和防篡改的记录组成,记录包含着数据的全部状态改变。账本中的数据项以键值对的形式存放,账本中所有的键值对构成了账本的状态,也称为“世界状态”( World State )。

每个通道中有唯一的账本,由通道中所有成员共同维护着这个账本,每个确认节点上都保存了它所属通道的账本的一个副本,因而是分布式账本。对账本的访问需要通过链码实现对账本键值对的增加、删除、更新和查询等的操作。

账本由区块链和状态数据库两部分组成。

区块链是一组不可更改的有序的区块(数据块),记录着全部交易的日志。每个区块中包含若干个交易的数据,不同区块所包含的交易数量可以不同。区块之间用哈希链( Hashed-link )关联:每个区块头包含该区块所有交易的哈希值,以及上一个区块头的哈希值。这样的链式架构可以确保每个区块的数据不可更改,以及每个区块之间的顺序关系不可更改。这个特点决定了区块链的区块只可以添加在链的尾部。

状态数据库记录了账本中所有键值对的当前值,相当于对当前账本的交易日志做了索引。链码执行交易的时候需要读取账本的当前状态,从状态数据库可以迅速获取键值的最新状态。

如果没有状态数据库,要获得某个键值时,需要遍历整个区块链中和该键值相关的交易,效率非常低,因此,读取状态数据库可以认为是快速定位和访问某个键值的方法。另外,当状态数据库出现故障的时候,可以通过遍历账本重新生成。

当一个区块附加到区块链尾部的时候,如果区块中的有效交易修改了键值对,则会在状态数据库中作相应的更新,这样区块链和状态数据库始终保持一致。

区块链的数据块以文件形式保存在各个节点中。状态数据库原理上可以是各种键值数据库,Fabric 缺省使用的是 LevelDB ,也支持 CouchDB 的选项。CouchDB 除了支持键值数据之外,也支持 JSON 格式的文档模型,能够做复杂的查询。所以大家在操作Fabric上链数据时,要区分你操作的是链上数据还是状态数据库的数据。

思考:为什么国家十四五规划中,明确指出发展区块链技术和联盟链应用?为什么要分开说明?原文:推动智能合约、共识算法、加密算法、分布式系统等区块链技术创新,以联盟链为重点发展区块链服务平台和金融科技、供应链管理、政府服务等领域应用方案,完善监管机制。

区块链架构--fabric基本介绍相关推荐

  1. 写给CTO的主流区块链架构横向剖析

    关注微信公众号 区块链大本营,获取更多区块链开发技能 时常听人们谈起区块链,从2009年比特币诞生至今,各式各样的区块链系统或基于区块链的应用不断被开发出来,并被应用到大量的场景中,而区块链技术本身也 ...

  2. 【思前享后】区块链架构与特点

    小猿"思前享后"为大家分享优质内容!----Share猿 Hi大家好:   我是Share猿,Share是英文(SHARE),猿是猿猴的猿,在微信公众号.微博.简书.掘金.今日头条 ...

  3. 简述区块链架构设计,通俗易懂

    简述区块链架构设计,通俗易懂 首先,支持一下阿里云:阿里云ECS服务器,有幸运券了:有缘的朋友们,可以前来领取: https://promotion.aliyun.com/ntms/act/ambas ...

  4. 区块链技术架构 java_《区块链底层设计Java实战》之第二章区块链架构

    第2 章   区块链架构 会当凌绝顶  一览众山小 正如开篇所言:会当凌绝顶,一览众山小.进入区块链底层开发前,我们需要 了解区块链底层的通用架构是如何设计的,从上而下地审视区块链底层的结构,做 到了 ...

  5. 10分钟弄懂当前各主流区块链架构

    最近区块链的概念可谓十分火热,从风投的投资到企业招聘区块链人才,似乎处处暗示着该技术将会给人类带来巨大改变.废话不多说,咱们就从技术角度来了解一下当前最主流的区块链诸如比特币.以太坊.HyperLed ...

  6. 区块链架构、跨链和演进

    本文是基于作者近几年来对各种区块链平台理念和技术的研究,结合作者过去十多年的 IT 经验,审慎思考的结果 ,文章仅代表作者个人观点.作者会假设读者对各种区块链平台有一定的认知,不会对具体的区块链平台再 ...

  7. 第十一课 区块链常用共识算法介绍

    上一节课我们学习了共识算法理论基础,今天我们继续深入学习区块链共识算法,通过这节课我们将了解工作量证明.权威证明.权威授权证明.实用拜占庭容错等相关内容. 在学习课程的时候,你也可以领取BaaS平台为 ...

  8. 区块链架构与交易流程(fabric1.0)

    区块链架构与交易流程 区块链系统架构 节点 网络拓扑 交易流程 1. 提交交易提案 2. 模拟执行提案并签名 3. 返回模拟执行结果 4. 提交交易 5. 交易排序并结块 6. 广播区块 7. 保存区 ...

  9. 40k~65k, 区块链架构师技能包一览: 多语言、多平台、多算法...别慌, 先投简历再说...

    戳蓝字"区块链大本营"关注我们哦! 每周日,「区块链大本营」人才快报与你不见不散!在这里,可以第一时间了解区块链的行业动态.技术风向与人才需求. 求职者请将个人简历以Word文档形 ...

最新文章

  1. linux dump用法,Linux命令之tcpdump命令用法介绍
  2. 中国移动系统集成公司2020春招技术综合在线编程题第二题
  3. Winform将FastReport的report与PreviewControl建立绑定关系
  4. openssh设置免密码登录远程服务器
  5. Blazor中的无状态组件
  6. .NET Core 服务在 ARM64 服务器中的部署
  7. 爬出数据标注陷阱,半监督学习模型暗藏多少玄机?
  8. 【ES】ES 拼音 Pinyin 分词器
  9. JavaScript:正则表达式 分组
  10. word:多级标题快捷生成
  11. 2019软博会:和利时将展示在智能工厂等行业的解决方案
  12. RTKLIB专题学习(七)---精密单点定位实现初识(三)
  13. 去掉字符串首尾指定字符
  14. 驱动RGB灯带MCU阐述
  15. video视频播放过程抓取图片/截图并在浏览器端下载
  16. Html网页设计-旅游景点介绍
  17. JSX列表渲染(五)——4种写法:基本写法 遍历写法 map遍历写法(常用-加工处理数组的每一项数据,最后形成一个新的数组) 列表遍历可以直接写到表达式中
  18. 校验MD5值是什么意思?
  19. 双指数边缘平滑滤波器用于磨皮算法的尝试。
  20. EXCEL实现表格动态求和与累计求和

热门文章

  1. 爱普生5700T对比当贝X3哪个更值得选,当贝X3智慧功能多更值得看
  2. 电子货币作为计算机技术,电子货币的发展对货币供给影响的实证研究-金融学专业论文.docx...
  3. Python数据分析实战2.4-注释【python】
  4. 团队管理课程培训心得(四)
  5. 推荐一款开源的音乐下载神器,8个平台VIP任你选
  6. GDUT Monthly
  7. android 视频处理60帧,如何导出60帧视频,让视频画面流畅无比
  8. NEC、NTT、富士通以及日立开发测试SDN技术
  9. 局域网弱口令扫描工具_安全测试技术 | 渗透测试获取弱口令密码,你的账号安全了吗?...
  10. ps与ai合作,制作金属效果