开发学习者 2019-06-28
Hyperledger Fabric是分布式分类账解决方案的平台,采用模块化架构,提供高度机密性,弹性,灵活性和可扩展性,它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的错综复杂的事物和复杂性。
我们建议首次使用的用户首先阅读下面的介绍,以便熟悉区块链的工作方式以及Hyperledger Fabric的特定功能和组件。
一旦熟悉 - 或者如果你已经熟悉区块链和Hyperledger Fabric - 请转到“入门”,然后从那里探索演示,技术规范,API等。
区块链网络的核心是一个分布式分类账,记录网络上发生的所有交易。
区块链分类账通常被描述为分散的,因为它被许多网络参与者复制,每个参与者都在维护中进行协作,我们将看到分散化和协作是反映现实世界中企业交换商品和服务方式的强大属性。
除了分散和协作之外,记录到区块链的信息是仅附加的,使用加密技术保证一旦将交易添加到分类账,就无法修改,这种“不变性”属性使得确定信息的出处变得简单,因为参与者可以确定信息在事后没有改变,这就是为什么区块链有时被描述为证明系统的原因。
为了支持信息的一致更新 - 并启用整个分类账功能(交易,查询等) - 区块链网络使用智能合约来提供对分类账的访问控制。
智能合约不仅是封装信息并在整个网络中保持简单的关键机制,还可以编写它们以允许参与者自动执行交易的某些方面。
例如,可以编写智能合约来规定运输物品的成本,其中运费根据物品到达的速度而变化,根据双方同意的条款并写入分类账,当收到物品时适当的资金会自动转手。
保持分类账交易在网络中同步的过程 - 确保分类账仅在交易被相应参与者批准时更新,并且当分类账更新时,它们以相同的顺序更新相同的交易 - 称为共识。
稍后你将学习更多关于分类账,智能合约和共识的知识,就目前而言,将区块链视为共享的复制交易系统就足够了,该系统通过智能合约进行更新,并通过称为共识的协作流程保持一致。
现今的交易网络只不过是自商业记录保存以来一直存在的略微更新的网络版本,业务网络的成员彼此进行交易,但他们维护他们交易的单独记录,并且他们所交易的东西 - 无论是16世纪的Flemish挂毯还是今天的证券 - 必须在每次出售时确定其出处,以确保出售物品的企业拥有一个产权链,以验证其所有权。
你剩下的是一个如下所示的商业网络:
现代技术已经从石碑和纸质文件夹到硬盘驱动器和云平台,但底层结构是一样的。用于管理网络参与者身份的统一系统不存在,建立出处是如此费力,需要数天来清理证券交易(其世界交易量达到数万亿美元),合约必须手动签署和执行,并且系统中的每个数据库都包含唯一信息,因此代表单点故障。
利用当今分散的信息和流程共享方法来构建跨越业务网络的记录系统是不可能的,即使可见性和信任的需求是明确的。
如果业务网络不是由“现代”交易系统代表效率低下的老鼠窝,而是在网络上建立身份,执行交易和存储数据的标准方法,那该怎么办?如果确定资产的出处可以通过查看一旦写入、无法更改、并且因此可被信任的交易列表来确定,那该怎么办?
该业务网络看起来更像是这样的:
这是一个区块链网络,其中每个参与者都有自己的分类账副本。除了共享分类账信息之外,更新分类帐的过程也是共享的。与现今的系统不同,在参与者的私人程序用于更新其私人分类帐的情况下,区块链系统具有共享程序来更新共享分类帐。
通过共享分类账协调其业务网络的能力,区块链网络可以减少与私有信息和处理相关的时间,成本和风险,同时提高信任和可见性。
你现在知道了区块链是什么以及为什么它有用,还有许多重要的其他细节,但它们都与信息和流程共享的这些基本思想有关。
Linux基金会于2015年创建了Hyperledger项目,以推进跨行业的区块链技术,而不是声明单个区块链标准,它鼓励通过社区流程采用协作方式开发区块链技术,鼓励开放式发展的知识产权,并且随着时间的推移采用关键标准。
Hyperledger Fabric是Hyperledger中的区块链项目之一,与其他区块链技术一样,它有一个分类账,使用智能合约,是参与者管理他们交易的系统。
Hyperledger Fabric与其他区块链系统不同的地方是私有和许可的,而不是允许未知身份参与网络的开放式无权限系统(需要诸如“proof of work”之类的协议来验证交易并保护网络),Hyperledger Fabric网络的成员通过可信赖的成员资格服务提供商(MSP)登记。
Hyperledger Fabric还提供多种可插拔选项,分类账数据可以以多种格式存储,共识机制可以互换,并且支持不同的MSP。
Hyperledger Fabric还提供创建通道的功能,允许一组参与者创建单独的交易分类账。对于网络来说,这是一个特别重要的选择,其中一些参与者可能是竞争对手而不想要他们做的每笔交易 - 他们向一些参与者而不是其他参与者提供的特殊价格,例如 - 每个参与者都知道。如果两个参与者组成一个通道,那么这些参与者 - 而不是其他参与者 - 拥有该通道的分类账副本。
Hyperledger Fabric有一个包含两个组件的分类账子系统:世界状态和交易日志,每个参与者都拥有他们所属的每个Hyperledger Fabric网络的分类账副本。
世界状态组件描述了在给定时间点的分类账的状态,它是分类账的数据库。交易日志组件记录导致世界状态的当前值的所有交易;这是世界状态的更新历史,然后,分类账是世界状态数据库和交易日志历史记录的组合。
分类帐具有可替换的世界状态数据存储,默认情况下,这是LevelDB键值存储数据库,交易日志不需要是可插拔的,它只记录区块链网络使用的分类帐数据库的前后值。
Hyperledger Fabric智能合约以链码编写,当该应用程序需要与分类帐交互时,由区块链外部的应用程序调用。在大多数情况下,链码只与分类帐的数据库组件,世界状态(例如,查询它)交互,而不与交易日志交互。
链码可以用几种编程语言实现,目前,支持Go和Node。
取决于网络的需求,企业对企业(B2B)网络的参与者可能对他们共享的信息量非常敏感,对于其他网络,隐私不是最受关注的问题。
Hyperledger Fabric支持隐私(使用通道)是关键操作要求的网络以及相对开放的网络。
交易必须按照发生的顺序写入分类账,即使它们可能位于网络中不同的参与者组之间。为此,必须建立交易的顺序,并且必须采用一种方法来拒绝错误(或恶意)插入到分类帐中的不良交易。
这是一个深入研究的计算机科学领域,有很多方法可以实现它,每种方法都有不同的权衡。例如,PBFT(Practical Byzantine Fault Tolerance)可以为文件副本提供一种机制,使其能够相互通信以保持每个副本的一致性,即使在发生损坏的情况下也是如此。或者,在比特币中,通过称为挖掘的过程进行排序,竞争计算机竞相解决加密难题,定义随后构建的所有进程的顺序。
Hyperledger Fabric旨在允许网络启动者选择最能代表参与者之间存在的关系的共识机制,与隐私一样,存在一系列需求;从在他们的关系中高度结构化的网络到更加点对点的网络。
我们将了解有关Hyperledger Fabric共识机制的更多信息,目前包括SOLO和Kafka。
一份概念文档将引导你了解Fabric网络中的关键角色身份(使用已建立的PKI结构和x.509证书)。
讨论成员资格服务提供商(MSP)的角色,该服务提供商将身份转换为Fabric网络中的角色。
由组织拥有的对等点 - 托管分类帐和智能合约,构成Fabric网络的物理结构。
了解如何使用示例脚本下载Fabric二进制文件并引导你自己的示例网络,然后分解网络,了解它是如何一步一步构建的。
部署一个非常简单的网络 - 甚至比构建您的第一个网络更简单 - 与简单的智能合约和应用程序一起使用。
从高层次看一看示例交易流
高级别介绍本简介中介绍的一些组件和概念以及其他一些组件和概念,并介绍它们如何在示例交易流中一起工作。