介绍

Hyperledger Fabric 是一个分布式账本解决方案的平台,采用模块化架构,提供高度机密性,弹性,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并适应经济生态系统中存在的复杂性。

我们建议初次使用的用户从通读下面的部分开始,以便熟悉区块链的工作原理以及 Hyperledger Fabric 的特性和组件。

如果您已经熟悉了区块链和 Hyperledger Fabric,那么可以访问 入门,然后在那里查看示例、技术规范和 API 等。

什么是区块链?

一个分布式账本

区块链网络的核心是一个分布式账本,记录网络上发生的所有交易。

区块链账本通常被描述为 去中心化的,因为它被复制到许多网络参与者中,每个参与者共同 协作 来维护它。我们将看到,去中心化和协作是反映现实世界中企业交换商品和服务方式的重要属性。

_images/basic_network.png

除了去中心和协作之外,记录到区块链的信息只可以追加,使用了加密技术来保证一旦将交易添加到账本中,就不能对其进行修改。这种“不可篡改”的属性使确定信息来源变得很简单,因为参与者可以确定信息在事后没有被更改。这就是为什么区块链有时被描述为 证明系统

智能合约

为了支持信息的一致更新——并启用所有账本功能(交易、查询等)——区块链网络使用**智能合约**提供对账本的受控访问。

_images/Smart_Contract.png

智能合约不仅是一种封装信息并使其在网络上保持简单的关键机制,还可以通过编写它们来允许参与者自动执行特定方面的交易。

例如,可以编写一个智能合约来规定货物的运输成本,其中运费根据货物到达的速度而变化。根据双方同意的条款并写在账本上,当收货时相应的资金自动转手。

共识

整个网络中保持账本交易同步的过程被称为 共识,该过程确保只有交易被适当的参与者批准时才更新账本,并且当账本确实更新时,它们以相同的交易顺序更新。

_images/consensus.png

以后你会学到更多关于账本、智能合约和共识的知识。现在,只要将区块链看作是一个共享和复制交易的系统就足够了,它通过智能合约进行更新,并通过一个称为共识的协作过程保持一致。

区块链为什么有用?

当今的记录系统

今天的交易网络只不过是自保留业务记录以来就存在的网络的稍加更新的版本。一个 业务网络 的成员彼此进行交易,但是他们维护各自的交易记录。无论是16世纪的佛兰德挂毯,还是今天的证券,他们所交易的东西都必须在每次出售时确定其来源,以确保出售物品的企业拥有一系列产权,来验证其所有权。

现在的商业网络看起来像这样:

_images/current_network.png

现代技术已经将这一过程从石碑和文件夹带到硬盘和云平台,但其底层结构是相同的。由于没有统一的系统来管理网络参与者的身份,因而建立追溯体系非常费力,通常需要数天清理证券交易(全世界有数万亿美元),合同必须手动签署和执行,每个数据库系统中都包含唯一的信息,因此代表了单点故障。

尽管对可见性和信任的需求是很明显的,今天的信息和流程共享方法也不可能构建一个跨越业务网络的记录系统。

区块链的不同之处

如果商业网络有标准的方法在网络上建立身份、执行交易和存储数据,而不是用“现代”交易系统来表示效率低下的老鼠洞,那会怎么样?如果可以通过查看一列交易来确定资产的来源,而这些交易一旦写入,就不能更改,因此可以信任,那会怎么样?

该业务网络看起来更像是这样的:

_images/future_net.png

这是一个区块链网络,每个参与者都有自己复的账本副本。除了共享账本信息,更新账本的过程也被共享。不像今天的系统,参与者的 私有 程序用于更新他们的 私有 账本,区块链系统有 共享 程序来更新 共享 账本。

区块链网络能够通过共享账本协调其业务网络,可以减少和私有信息相关的处理时间、成本和风险,同时提高信任和可见性。

您现在知道了区块链是什么以及它为什么有用。还有很多其他的重要细节,基本思想都与共享信息和过程有关。

什么是 Hyperledger Fabric?

Linux 基金会于 2015 年创建了 Hyperledger 项目,以推进跨行业的区块链技术。它不是用以宣布单一区块链标准,而是鼓励通过社区流程协作开发区块链技术的方法,其中包括鼓励开放式开发和随着时间的推移采用关键标准的知识产权。

Hyperledger Fabric 是超级账本中的区块链项目之一。和其他区块链技术一样,它有一个账本,使用智能合约,是一个参与者管理交易的系统。

Hyperledger Fabric 与其他区块链系统的不同之处在于,它是 私有的许可的。与允许匿名参与网络的开放无许可系统(需要像“工作证明”这样的协议来验证交易并保护网络)不同,Hyperledger Fabric 网络成员通过一个受信任的 成员服务提供者(MSP) 来注册。

Hyperledger Fabric 还提供多种可插拔选项。账本数据可以以多种格式存储,共识机制可以在内部和外部交换,并且支持不同的 MSP。

Hyperledger Fabric 还提供了创建 通道 的功能,支持构成通道的一组参与者创建不同于通道外成员的交易账本。对于某些网络而言,这是一个特别重要的选项。这些网络中,一些参与者可能是竞争对手,并且不希望他们做出的每笔交易被每个参与者知晓, 例如,他们向某些特定参与者提供的特殊价格。如果两个参与者组成一个通道,那么这两个参与者就拥有该通道的账本副本,而其他参与者没有。

共享账本

Hyperledger Fabric 有一个账本子系统,包括两个组件:世界状态交易日志。对于所属的 Hyperledger Fabric 网络,每个参与者都有一份账本的副本。

世界状态组件描述在给定时间点的账本状态。它是账本的数据库。交易日志组件记录产生当前世界状态的所有交易;它是世界状态的更新历史。因此,账本是世界状态数据库和交易日志历史记录的组合。

账本为世界状态提供了一个可替换的数据存储。默认情况下,这是一个 LevelDB 键值存储数据库。交易日志是不需要可插拔的。它只简单地记录区块链网络使用的账本数据库的之前和之后的值。

智能合约

智能合约是用 链码 编写的,当区块链网络之外的某个应用程序需要与账本交互时,该应用程序就会调用此网络中的智能合约。多数情况下,链码仅与账本的数据库组件,即世界状态,进行交互(例如,查询世界状态),而不与交易日志交互。

链码可以用多种编程语言实现。目前支持 Go 和 Node。

隐私

根据网络的需要,企业对企业(B2B)网络中的参与者可能对他们共享的信息量非常敏感。对于其他网络来说,隐私不会是他们最关心的问题。

Hyperledger Fabric所支持的网络有:将隐私作为一项关键运行要求的网络;相对开放的网络。

共识

交易必须按照发生的顺序写在账本上,即使它们可能位于网络中不同的参与者之间。为了做到这一点,必须建立交易的顺序,且必须采用一种方法来拒绝错误(或恶意)插入到账本中的错误交易。

这是计算机科学深入研究的一个领域,有许多方法可以实现它,每种方法都有不同的权衡。例如,PBFT(实用拜占庭容错)可以为文件副本提供一种相互通信的机制,使其能够保持各个副本的一致性,即使在发生损坏的情况下也是如此。或者,在比特币中,通过称为挖掘的过程进行排序,在这个过程中,相互竞争的计算机竞相解决一个密码谜题,这个谜题定义了所有过程随后建立的顺序。

Hyperledger Fabric 的设计允许网络启动者选择一种最能代表参与者之间关系的共识机制。就像隐私一样,有一系列的需求:从关系中高度结构化的网络到更加对等的网络。

我们将学习更多关于 Hyperledger Fabric 的共识机制,目前包括 SOLO 、Kafka 和 Raft。

我在哪里可以了解更多?

概念文档,将带您了解身份在 Fabric 网络中扮演的关键角色(使用已建立的 PKI 结构和 x.509 证书)。

讨论成员服务提供者(MSP)的角色,该角色将身份转换为 Fabric 网络中的角色。

节点为组织所有,承载着账本和智能合约,构成了 Fabric 网络的物理结构。

了解如何使用示例脚本下载 Fabric 二进制文件并引导你自己的示例网络。然后拆解网络,了解它是如何一步一步构建的。

部署一个非常简单的网络,甚至比构建第一个网络还要简单,使用一个简单的智能合约和应用程序。

整体看一个简单的交易流程。

本文整体介绍了一些组件和概念,还有一些其他内容并描述了他们如何在示例交易流中协同工作。