HyperLedger Fabric Introduction——区块链超级帐本介绍

介绍html

HyperLedger Fabric是一个基于模块化架构的分布式帐本解决方案平台,它拥有深度加密、便捷扩展、部署灵活及可插拔等特性。它设计之初的目的是支持不一样组件的可插拔实现,并适应整个经济生态系统中存在的复杂性和高精度性。golang

HyperLedger Fabric与其它的区块链平台解决方案相比,提供了一种独特的扩展便捷和灵活部署的架构。它更多的适用于联盟链形式,即适合企业级之间的区块链联盟方向,创建在可信任的基础上。若是是企业级区块链部署的话,建议能够采用HyperLedger Fabric提供的方案。数据库

首次接触HyperLedger Fabric的用户能够从下文的具体介绍开始,以了解区块链的工做原理和HyperLedger Fabric特定的特性及组件。编程

若是经过后续文章熟悉了区块链及HyperLedger Fabric的结构原理,那么就能够开始正式使用HyperLedger Fabric搭建属于你本身的平台,能够参考官网的Getting Started,而且从官网提供的示例中学习技术规范和api等。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来操做一个区块链网络。

相关文章
相关标签/搜索