HyperLedger Fabric Introduction——区块链超级账本介绍
介绍
HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密、便捷扩展、部署灵活及可插拔等特性。它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性和高精度性。
HyperLedger Fabric与其它的区块链平台解决方案相比,提供了一种独特的扩展便捷和灵活部署的架构。它更多的适用于联盟链形式,即适合企业级之间的区块链联盟方向,建立在可信任的基础上。如果是企业级区块链部署的话,建议可以采用HyperLedger Fabric提供的方案。
首次接触HyperLedger Fabric的用户可以从下文的具体介绍开始,以了解区块链的工作原理和HyperLedger Fabric特定的特性及组件。
如果通过后续文章熟悉了区块链及HyperLedger Fabric的结构原理,那么就可以开始正式使用HyperLedger Fabric搭建属于你自己的平台,可以参考官网的Getting Started,并且从官网提供的示例中学习技术规范和api等。
什么是区块链?
一个分布式账本
区块链网络的核心是一个分布式账本,记录所有在网络上发生的交易。
区块链中账本会被所有网络中的参与者复制到本地,且每一个参与者都在对账本进行维护协作,因此它是完全去中心化的。
除了去中心化外,还使用了加密技术,每一个区块都有唯一的hash,即便是通过网络将账本复制到本地应用服务器中也无法篡改其中的内容。这种不可篡改的特性使得信息具备可追溯的能力,因为所有的参与者在提交信息后都无法改变,都会在区块中留存记录,这也是区块链有时被称作证明系统的原因。
智能合约
为了支持信息更新的一致性,并支持完整的账本功能(包括但不限于交易、查询等),区块链网络通过使用智能合约来约束和规范对账本的访问及变更。
在智能合约中封装了信息处理的完整方案,以此来尽量简化整个网络的信息交易。智能合约通过编写可以被升级,通过升级来丰富其功能并增强其对事务的处理能力。所有的参与者都可以按照智能合约中的约定自动执行相关事务处理操作。
例如,一份智能合约可以规定货物运输的成本,成本根据货物到达的时间而变化。在双方同意的条件下,当收到货物时,根据智能合约中约定的资金会自动地转手。
共识
保持账本中发生的交易在整个网络中同步的过程,并确保只有当交易得到拥有决策权力的参与者(背书方或符合背书条件)批准时才会更新,并且当所有网络账本进行更新时,它们以相同的顺序更新相同的事务,这称为共识。
通过对区块链的了解更加深入,以后会学到更多关于账本、智能合约和共识的知识。就目前而言,将区块链视为一个共享的、复制的交易系统就足够了,它通过智能合约进行更新,并通过一个叫做共识的协作过程保持一致。
区块链有什么用?
当前系统记录
当今的交易网络只是稍微更新的网络版本,即本地存储记录变更为由第三方中介的多账本记录方案(但各家账本内容仅与自身相关),该记录方式自从商业记录被保存以来就已经存在了。业务网络的成员彼此之间进行交易,但他们保持各自的交易记录。而他们所做的事情——无论是16世纪的佛兰德还是今天的证券——都必须在每次出售的时候确定他们的出处,以确保出售某件物品的企业拥有一串头衔(合法记录)来证明他们的所有权。
如下图所示,即当前系统记录方案:
现代科技已经将这一过程从石片、纸质文件升级到硬盘和云平台,但底层结构是一样的。并不存在统一的系统来管理网络参与者的身份,因此对参与者的交易信息建立可靠的来源是一件非常费力且痛苦的事情,就好比证券交易的清理就需要耗费数日的时间来操作(世界上的证券交易量高达数万亿美元)。合同必须手动签署和执行,系统中的每个数据库都包含唯一的信息,因此代表了会出现的一个单点故障。
在当今信息共享的过程中,构建一个跨越商业网络的记录系统是不可能的,尽管可见性和信任的需求是清晰的。
区块链的区别
如果由“现代”交易系统替代哪些的无效率的方式,那么商业网络就有了在网络上建立身份、执行事务和存储数据的标准方法吗?如果想要建立一个资产的来源,并且可以通过查看曾经写过的事务列表,还不允许更改,那么这个来源就是可以被信任的,那该怎么实现呢?
设想中的商业网络如下图所示:
这就是一个区块链网络。每一个参与者都有自己本地复制的账本。除了账本信息被共享之外,更新账本的过程也被共享。不同于今天的系统,一个参与者的私人程序被用来更新他们的私人账本,一个区块链系统已经共享程序来更新共享的账本。
由于能够通过共享的账本来协调业务网络,区块链网络可以减少与私人信息和处理相关的时间、成本和风险,同时还能提高信任度和可见度。
通过上文介绍,现在应该大致了解区块链是什么,以及它为什么有用。还有很多其它重要的细节,但是它们都与信息和过程共享的基本思想有关。
HyperLedger Fabric是什么?
Linux基金会在2015年创立了HyperLedger Fabric,以推进跨行业的区块链技术。它没有宣布单一的区块链标准,而是鼓励一种合作的方式,通过社区进程开发区块链技术,知识产权鼓励开放开发,并随着时间的推移采用关键标准。
HyperLedger Fabric是HyperLedger上的区块链项目之一,就如同其它区块链技术一样,它有一个账本,使用智能合约,并且是一个由参与者管理他们的交易的系统。
与其它区块链系统最大的不同点在于HyperLedger Fabric是私有的,而且是被许可的。不是一个允许未知身份参与网络的开放的无许可的系统(要求协议验证事务并确保网络的安全),HyperLedger Fabric组织的成员可以通过一个Membership Service Provider(成员服务提供者即MSP)来注册。
HyperLedger Fabric还提供了几个可插拔的组件。账本数据可以以多种格式存储,一致的机制可以被转换和输出,并且支持不同的MSPs。
HyperLedger Fabric也提供了创建通道(channel)的能力,允许一组参与者创建一个单独的共同维护的交易账本。对于有些参与者可能是竞争对手的网络来说,这是一个特别重要的选择,他们不希望自己的每笔交易都能获得——例如,他们向一些参与者提供了一个特别的价格,而不是其他参与者。如果两个参与者形成一个通道(channel),那么这些参与者——以及其他参与者——都有该渠道的分类账本。
共享账本
HyperLedger Fabric有一个分类子系统,包括两个组成部分:世界状态(world state)和事务日志(transaction log)。每个参与者都有一份账本的副本到他们所属的每一个HyperLedger Fabric的网络上。
在给定的时间点上,世界状态(world state)组件描述了总账的状态。它是账本的数据库。事务日志(transaction log)组件记录所有导致当前世界状态值的事务。这是世界状态(world state)的更新历史。那么,账本是世界状态(world state)数据库和事务日志(transaction log)历史的组合。
该账本为世界状态(world state)提供了可替换的数据存储方案。默认情况下,这是一个LevelDB键值存储数据库。事务日志(transaction log)不需要是可插拔的,它只是记录了区块链网络使用的账本数据库之前和之后的值。
智能合约
HyperLedger Fabric的智能契约是用Chaincode编写的,并且当应用程序需要与账本进行交互时,被应用程序外部的应用程序调用。在大多数情况下, Chaincode只与总账的数据库组件交互,例如世界状态(例如,查询它),而不是事务日志。
Chaincode可以用几种编程语言实现,目前支持的chaincode编写的是GO语言,在今后的发行版中将会逐步新增Java和其它语言的支持。
隐私
根据网络的需要,企业对企业(B2B)网络的参与者可能对他们所共享的信息非常敏感。对其他网络来说,隐私不会成为首要关注的问题。
HyperLedger Fabric支持需要将隐私(使用通道)作为关键操作需求的网络,同时也是相对开放的网络。
共识
事务必须按照它们发生的顺序写在账本上,即使它们可能是网络中不同的参与者生成的。要做到这一点,必须建立事务的顺序,并且必须在账本中建立一种拒绝错误事务(或恶意的)的方法。
这是一个经过彻底研究的计算机科学领域,有很多方法可以实现它,每一个都有不同的权衡。例如,PBFT(拜占庭式容错)可以为文件副本提供一种机制,使其能够相互通信,从而保持每个副本的一致性,即使是在出现腐化的情况下。或者,在比特币中,排序是通过一个名为“挖矿”的过程来实现的,在这个过程中,竞争的计算机竞相解决一个加密难题,该难题定义了所有流程随后构建的顺序。
HyperLedger Fabric的设计使得网络启动者可以选择一种最能代表参与者之间关系的共识机制。就像隐私一样,需要有一系列的需求;从人际关系高度结构化的网络到更加对等的网络。
关于HyperLedger Fabric共识机制,它目前包括SOLO和Kafka,并将很快扩展到SBFT(简化的拜占庭式容错)。
如何学习HyperLedger Fabric
可以参考Hyperledger Fabric 1.0 从零开始,英文阅读能力好的可以直接通过官网的教程Getting Started。
官网中提供了大量的教程,可以帮助了解一个区块链网络中的大多数关键组件,了解它们如何相互作用,还能在官网中得到代码等干货,并针对运行的区块链网络运行一些简单的事务。官网还为提供了一些教程,帮助可以考虑使用HyperLedger Fabric来操作一个区块链网络。
HyperLedger Fabric Introduction——区块链超级账本介绍的更多相关文章
- Hyperledger Fabric【区块链学习一】
Hyperledger Fabric 学习 什么是区块链 什么是区块链在我们没有接触的时候,只知道它是一个去中心化的存储方式.当我们发生交易,或者动作的时候我们会将记录通知给所有参与者共同维护,达到去 ...
- [转] 深度探索Hyperledger技术与应用之超级账本的典型交易流程
转自: https://blog.csdn.net/HiBlock/article/details/80212499 个人感觉对交易流程描述的比较清楚,转载以备查看. 1 典型交易流程 下图所示为Hy ...
- Hyperledger Fabric定制联盟链网络工程实践
总体来看,网络上成体系的可用的 Fabric 教程极少--不是直接在 Fabric 官网复制内容大谈基础理论就是在描述一个几乎无法复现的项目实践,以至于学习 Fabric 的效率极低,印象最深刻的就是 ...
- 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系
☞ ░ 前往老猿Python博文目录 ░ 一.超级账本(hyperledger) 超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,成员包括 ...
- 区块链学习7:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名
☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyper ...
- 区块链开源实现hyperledger fabric架构详解
hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链 ...
- [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...
- HyperLedger Fabric 学习思路分享
HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常 ...
- 区块链知识博文1: 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
注:这是本人读到的关于共识算法最全和最好的分享博文,系统的介绍了拜占庭容错技术以及共识算法的原理和常用共识算法,原文链接请见后. 目录 一.拜占庭容错技术(Byzantine Fault Tolera ...
随机推荐
- Material使用08 MdDialogModule、MdAutocompleteModule
1 MatDialog 1.1 简要描述 MdDialog是一个服务,可以利用它来打开一个具有material风格和动画效果的对话框 技巧01:虽然已经在模块级别导入了MdDialogModule但是 ...
- 「mysql优化专题」这大概是一篇最好的mysql优化入门文章(1)
优化,一直是面试最常问的一个问题.因为从优化的角度,优化的思路,完全可以看出一个人的技术积累.那么,关于系统优化,假设这么个场景,用户反映系统太卡(其实就是高并发),那么我们怎么优化? 如果请求过多, ...
- [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路--验证码
上一篇博客我们已经基本完成了部署工作,目前发现了验证码出现500错误,分析其代码,我们可以看到验证码使用的是System.Drawing命名空间下的类库, GDI+ 位图,这个在肯定是平台相关的,所以 ...
- 《程序设计语言——实践之路》【PDF】下载
程序设计语言--实践之路>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 本书在美国大学已有使用了十余年,目前被欧 ...
- 用Azure AD 实现Web 应用身份认证的Multi-Factor Authentication(MFA)
最近客户有个需求,希望把面向public的Web应用中的终端用户数据库由Azure AD来实现,同时希望可以用MFA来实现用户身份认证.这个想法非常好,通过使用Azure的managed servic ...
- (精选)Xcode极速代码,征服Xcode,xcode插件
插件 1 http://blog.csdn.net/qq_30513483/article/details/52349997 插件2 http://www.code4app.com/forum.ph ...
- 为了CET-4!
Directions For tiis part,you are allowed 30 minutes to write an essay.Suppose there are two options ...
- openstack操作之一 命令行
在openstack环境中提供了多种操作虚拟机的方法,有最简单直接的dashborad界面,有不直观但高效的命令行,还有进阶版的postman调用openstack restfulapi和命令行中使用 ...
- Java企业微信开发_11_异常:java.net.UnknownHostException: qyapi.weixin.qq.com
原因: 网络原因导致 dns解析失败. 解决方案: 方案一 : 1.查看你的服务器能否ping通外网,不过不行说明你的网络出了问题. (我的情况是客户的应用服务器只能内网访问,所以是网络出问题 ...
- LindDotNetCore~基于模块化注入的介绍
LindDotNetCore相关介绍 相关模块 全局都是依赖DI 消息队列 NoSql Caching 仓储 服务总线 Solr 调度 日志 Asspect拦截组件 UAA授权 各种组件环境的搭建 各 ...