区块链技术系列(3)- Fabric基础架构原理

前言

对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章。
怎么搭建自己专属V-P-N来访问Google,请看我之前发的文章: 新人如何快速搭建自己的个人网站以及自己专属V-P-N代理

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 也存在不足之处,如 v1.2 的共识算法尚不支持 BFT 类型,交易过程还有并发控制的局限性,整体性能还有待提高等。

主要组件

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

客户端(Client)

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

网络节点(Peer)

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

排序节点(Orderer)

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

CA 节点

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

Fabric 网络的组件往往归属于不同的组织,在组织之间形成对等的去中心化网络。每个组织通常拥有自己的客户端、网络节点和 CA 节点,并且可以根据需要创建一个或多个不同的类型节点。排序节点不属于某个组织的实体,属于组织共同维护的组件。

通道

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

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

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

在 Fabric 的网络中,可能同时存在多个彼此隔离的通道,每个通道包含一条私有的区块链和一个私有账本,通道中可以实例化一个或多个链码,以操作区块链上的数据。由此可见,Fabric 是以通道为基础的多链多账本系统。

分布式账本

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

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

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

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

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

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

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

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

对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章。
怎么搭建自己专属V-P-N来访问Google,请看我之前发的文章: 新人如何快速搭建自己的个人网站以及自己专属V-P-N代理

原文地址:http://blog.51cto.com/huihua/2174021

时间: 2024-10-08 11:14:12

区块链技术系列(3)- Fabric基础架构原理的相关文章

主流区块链技术特点及Fabric V0.6&V1.0版本特点

声明:文章内容来源于网络. 一.主流区块链技术特点 二.Hyperledger的fabric V0.6总体架构: 对应的0.6版本的运行时架构: 0.6版本的架构特点是: 结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点:    架构问题:由于peer节点承担了太多的功能,所以带来扩展性.可维护性.安全性.业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证: 三.Hyperledger的fabric V

002-主流区块链技术特点及Fabric V0.6版本特点

一.主流区块链技术特点 二.Hyperledger的fabric V0.6总体架构: 对应的0.6版本的运行时架构: 0.6版本的架构特点是: 结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点: 架构问题:由于peer节点承担了太多的功能,所以带来扩展性.可维护性.安全性.业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证:

区块链技术系列(2) - 环形签名

前言 在密码学中,环签名是一种数字签名,其可以由每个具有密钥的一组用户的任何成员完成.因此,使用环签名签名的消息由特定人群中的某一人签署.环签名的一个安全属性是若要确定哪个组成员的密钥用于产生签名在计算上是不可行的.环签名与群签名类似,但在两个关键方面有所不同: 无法撤销单个签名的匿名性; 任何用户组都可以作为一个组使用,无需额外设置. 环签名技术由Ron Rivest, Adi Shamir, 和 Yael Tauman发明的,于2001发表出来的.环签名得名于其环状结构签名算法. 对于区块链

如何理解分布式和区块链技术

如何理解分布式和区块链技术 原文  http://www.51cion.com/article/7743.html 主题 分布式系统比特币 编译:比特人qin 简介: 区块链技术 是应用程序基础,它超越了比特币本身.这些技术能促进智能交易. 分布式 股权发布和资产转移. 彩色币 是使用 比特币区块链 技术的一个例子,另外也有其他使用其他 区块链 的例子,比如 狗狗币 和 莱特币 等.同时也介绍了开放交易的优点和缺点,另外还有一些其他的技术比如Maidsafe, Ethereum,和 Ripple

区块链技术开发 聊区块链+物联网场景应用

几乎在同一时期,区块链技术开发的诞生与物联网概念出现,但"遗憾"的是,二者直到最近一两年才"擦出火花",一方面,物联网几何级扩张后问题暴露得更加明显,亟待寻找解决方案,另一方面,区块链带来的全新思维方式也逐渐被主流商业群体所接受,空白的市场吸引了各行各业切入其中,抢时间成为了大家做区块链技术开发的共同目标. 从区块链技术开发的结构机制来看,去中心化的架构直接颠覆了物联网旧有的中心架构,不但大大减轻中心计算的压力,而且释放了物联网组织结构的更多可能,为创新提供了更多空

区块链技术很大程度上,会影响数字货币的发展

随着区块链技术的影响力逐渐的扩大,很多国家也逐渐的放松了对于数字加密货币的监管,更是有较多的国家,不但将区块链技术的研发提上了日程,更是在数字加密货币上也开始了布局. 区块链技术的最初应用和最成功的应用,都是比特币,但是比特币总量恒定,即使想要入局也只是通过交易或者挖矿的方式,比特币市场显然不能满足全球人民的需求,只能发行更多的代币,进行分散市场.更多的数字加密货币应势而出. 加拿大早在2016年就联合诸多银行合作推出了基于区块链技术的加元数字货币CAD-Coin,俄罗斯宣布将于2019年推出国

极客钱包-区块链技术与去中心化网络前瞻

在区块链的世界里,我们天天嚷嚷着去中心化.那到底什么是去中心化,它的核心又是啥?他又是如何改变生产关系的?今天,极客钱包就带大家一起来探讨区块链的去中心化及它的核心! 区块链是公开透明.不可篡改的账本,这是它最基本的含义.由于记账人不是中心化的主体,是通过一定的共识机制,比如PoW挖矿竞争记账,没有人可以控制账本.没人可以篡改账本.看似简单的去中心化账本,隐藏了巨大的能量. 据统计,今年各省市两会期间,越来越多的地×××府在报告中提到要发展区块链技术.区块链技术或许会成为今年全国两会期间另一个值

如何用区块链技术解决信任问题?Fabric 架构深度解读

阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hyperledger Project旗下的Fabric,介绍区块链适合的应用场景,如何从技术上去解决实际业务中的问题,希望能和大家一起探讨.学习. 前言 Hyperledger Project 由Linux基金会创办于2015年10月,是一个开源的区块链研发孵化项目,致力于提供可协同开发以区块链为底层

专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)

http://geek.csdn.net/news/detail/237595 编者按:每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前.不妨,我们停下脚步看下一些同行,以激励自己更好地前行.CSDN与你相约SDCC 2017之区块链技术实战线上峰会. 2017年9月23日,SDCC 2017之区块链技术实战线上峰会即将强势来袭,本次