1. Hyperledger 项目
Hyperledger 下有两类项目:第一类是区块链框架项目;第二类是支持这些区块链的相关工具或模块。
在 Hyperledger 框架下,目前有 5 个区块链框架项目:Fabric、Sawtooth Lake、Iroha、Burrow 和 Indy。
在模块类下,则有 Hyperledger Cello、Hyperledger Composer、Hyperledger Explorer 和 Hyperledger Quilt。
Hyperledger 项目目前有 200 多个成员组织,并且有许多非常活跃的贡献者,在全球范围内定期定期组织聚会和演讲。
1.1 Fabric
Fabric 是 IBM 和区块链创业公司 DAH(Digital Asset Holdings) 提出的一个区块链项目。该区块链框架旨在为开发具有模块化架构的区块链解决方案提供基础。它基于可插拔的架构,可以根据需要将各种组件 (例如共识引擎和成员资格服务) 插入系统。它还利用容器技术,该技术用于在隔离你的封闭环境中运行智能合约。目前,它的状态是活跃的,这是第一个经历从孵化到活跃状态的项目。
注意: Fabric 的源代码可从以下网址获得: https://github.com/hyperledger/fabric |
1.2 Sawtooth Lake
Sawtooth Lake (锯齿湖)是 Intel 公司于 2016 年 4 月提出的一个区块链项目,其一些关键创新着眼于帐本与交易的脱钩、跨多个业务领域的灵活使用,以及可插入的共识。
对于这里所谓的脱钩 (Decoupling,也称为解耦),更精确的解释是,通过使用称为交易族(Transaction Families) 的新概念将交易与共识层脱钩。
交易族不是使用单独的帐本来耦合交易,它提供了更大的灵活性、更丰富的语义以及业务逻辑的开放式设计。交易遵循交易族中定义的模式和结构。
Intel 公司推出的一些创新元素包括缩写为 PoET 的新颖共识算法,即消逝时间量证明(Proof of Elapsed Time), 该算法利用英特尔软件保护扩展(Intel Software Guard Extensions, Intel SGX) 提供的可信执行环境(Trusted Execution Environment,TEE) 来提供安全而随机的领导者选举处理。它还支持许可和无许可设置。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/sawtooth-core |
1.3 Iroha
Iroha 由 Soramitsu、Hitachi、NTT Data 和 Colu 于 2016 年 9 月 贡献。 Iroha 的目标是建立可重用组件的库,用户可以选择在基于 Hyperledger 的分布式帐本上运行它们。
Iroha 的主要目标是通过提供用 C++ 编写的可重用组件 (重点是移动开发) 来补充其他 Hyperledger 项目。该项目还提出了一种称为 Sumeragi 的新型共识算法,该算法是基于链的拜占庭容错共识算法。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/iroha |
Iroha 已提出和使用各种库,其中包括但不限于数字签名库(ed25519)、SHA-3 哈希库、交易序列化库、P2P 库、API 服务器库、iOS 库、Android 库 和 JavaScript 库。
1.4 Burrow
Burrow 项目当前处于孵化状态。Hyperledger Burrow 由 Monax 公司贡献,Monax 公司开发了一个业务的区块链开发和部署平台。
Hyperledger Burrow 引入了模块区区块链平台和基于以太坊虚拟机的智能合约执行环境。Burrow 使用权益证明、拜占庭容错 Tendermint 共识机制,其结果就是,Burrow 提供了高吞吐量和交易的不可改变性。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/burrow |
1.5 Indy
该项目正在 Hyperledger 下进行孵化。Indy 是为建立去中心化身份而开发的分布式帐本。它提供了可用于构建基于区块链的数字身份的工具、实用程序和模块。这些身份可以跨多个区块链、域和应用程序使用。
Indy 拥有自己的分布式帐本,并使用冗余拜占庭容错(Redundant Byzantine Fault Tolerance, RBFT) 达成共识。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/indy-node |
1.6 Explorer
该项目旨在为 Hyperledger Fabric 构建一个区块链浏览器,可用于查看和查询来自区块链的交易、区块和关联数据,它还提供网络信息以及与链代码进行交互的能力。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/blockchain-explorer |
当前还有若干正在 Hyperledger 下孵化的其他项目,这些项目旨在提供工具和实用程序来支持区块链网络。
1.7 Cello
Cello 的目的是允许轻松部署区块链,这将提供一种允许 “作为一种服务" 部署区块链服务的能力。目前,该项目处于孵化阶段。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/cello |
1.8 Composer
该实用程序允许以一种业务语言描述业务流程,同时抽象出低级智能合约开发的细节,从而使区块链解决方案的开发更加容易。
注意: 该项目的源代码可以从以下网址获得: https://hyperledger.github.io/composer/ |
1.9 Quit
该实用程序实现了 Interledger 协议,Interledger 协议促进了不同分布式和非分布式帐本网络之间的互操作性。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/quilt |
2. Hyperledger 即协议
Hyperledger 旨在构建由行业用例驱动的新区块链平台。由于社区对 Hyperledger 项目做出许多贡献,因此 Hyperledger 区块链平台正在演变为业务交易协议。
与仅解决特定类型的行业或要求的早期区块链解决方案相比,Hyperledger 也正在发展成为可以用作构建区块链平台的参考规范。
3. 参考架构
Hyperledger 发布了一份白皮书,该白皮书提供了一种参考架构,可以用作构建许可分布式帐本的指南。参考架构由形成业务区块链的各种组件组成,下图显示了这些高级组件。
在上图中,可以看到 5 个提供各种服务的顶级组件。现在我们就来探讨一下这些组件。
首先是 Identity (身份),它将在成员资格服务下提供授权、标识和身份验证服务。
其次是 Policy (策略)组件,它将提供策略服务。
再次是 Blockchain ( 区块链 )和 Transaction (交易),其中包括分布式帐本、排序服务、网络协议以及背书(Endorsement) 和验证服务。该帐本只能通过区块链网络参与者之间的共识来更新。
最后是 Smart Contract (智能合约)。该层可以在 Hyperledger 中提供链码(Chaincode) 服务,并利用安全容器技术托管智能合约。
一般来说,从组件的角度来看,Hyperledger 包含以下元素:
- 共识层:这些服务负责促进区块链网络上参与者之间的协议流程。需要达成共识以确保交易的顺序和状态在区块链网络中得到验证和同意。
- 智能合约层:这些服务负责根据用户要求实现业务逻辑。根据驻留在区块链上的智能合约中定义的逻辑来处理交易。
- 通信层:该层负责区块链网络上节点之间的消息传输和交换。
- 安全和加密层:这些服务负责提供一种功能,以允许各种加密算法或模块提供隐私、机密性和不可否认性服务。
- 数据存储:该层提供使用不同的数据存储来存储帐本状态的功能。这意味着数据存储也是可插入的,并允许使用任何数据库后端。
- 策略服务:这组服务提供了管理区块链网络所需的不同策略的能力,它包括背书政策和共识政策。
- API 和 SDK :该层允许客户端和应用程序与区块链进行交互。SDK 用于提供在链上部署和执行链码、查询区块和监视事件的机制。
4. Hyperledger Fabric 的要求和设计目标
区块链服务有一定的要求。上述参考架构将由 Hyperledger 项目参与者提出的需求和要求驱动,并且是在研究了行业用例之后的结果。从工业用例的研究中,可以得出若干需求分类,在以下各节中将分别进行讨论。
4.1 模块化方法
Hyperledger 的主要需求是模块化结构。作为跨行业结构(区块链),它将在许多业务场景中使用。因此,与存储、策略、链码、访问控制、共识和许多其他区块链服务相关的功能应模块化且可插入。该规范建议模块应即插即用,并且用户应该能够轻松地删除和添加满足业务要求的其他模块。
4.2 隐私性和机密性
隐私性和机密性要求是最关键的因素之一。由于传统的区块链是无须许可的,因此,在像 Hyperledger Fabric 这样的许可模型中,最重要的一点是:网络上的交易仅对那些被允许查看的人可见。
交易和合约的隐私性和机密性在商业区块链中至关重要。因此,Hyperledger 的愿景是为各种加密协议和算法提供支持。
用户预计能够根据其业务需求选择适当的模块。例如,如果业务区块链仅需要在已经受信任的各方之间运行并执行非常基本的业务操作,那么也许就不需要针结机密性和隐私性的高级加密支持。因此,用户应该能够删除该功能(模块)或将其替找为更适合其需求的模块。
如果用户需要运行跨行业的区块链,那么隐私性和机密性可能是至关重要的。在这种情况下,用户应该能够将高级加密和访问控制机制(模块)插入区块链(结构)中,甚至可以允许使用安全模块硬件(Hardware of Security Modules,HSM)。
同样,区块链应该能够处理复杂的密码算法而不会影响其性能。除了前面提到的方案之外,由于业务中的合规性要求,因此还应该有一条规定:允许根据监管和合规性要求实施隐私性和机密性策略。
4.3 可伸缩性
可伸缩性(Scalability,也称为可扩展性)是 Hyperledger 的一个要求,满足该要求意味着允许合理的交易吞吐量,这将满足所有业务需求以及大量用户的需求。
4.4 确定性交易
确定性交易(Deterministic Transaction) 是任何区块链都必须满足的核心要求。如果不能做到无论执行交易的人是谁、执行交易的地点在哪里,每次执行交易的结果者相同,那么就不可能达成共识。因此,确定性交易成为任何区块链网络中的关键要求。
4.5 身份识别
为了提供隐私性和机密性服务,还需要可用于处理访问控制功能的灵活 PKI 模型。密码机制的强义和类型应该能够根据用户的需求而变化。在某些情况下,可能需要用户隐藏其身份,因此 Hyperledger 也应该提供此功能。
4.6 可审核性
可审核性(Auditability)是 Hyperledger Fabric 的一个要求,应该保留所有身份、相关操作和任何更改的不可变记录,以便跟踪审核。
4.7 互通性
互通性(Interoperability)也称为互操作性。目前有许多可用的区块链平台,但是它们之间无法相互通信,这可能是基于区块链的全球商业生态系统增长的一种限制因素。可以预见,许多区块链网络将根据特定需求在商业环境中运行,但重要的是它们之间应该能够相互通信。所有区块链都应该遵循一套通用的标准,以允许不同帐本之间的通信。因此,有必要开发出一种协议,以允许在诸多结构之间交换信息。
4.8 可移植性
可移植性(Portability) 指的是能够跨多个平台和环境运行而无须在代码级别进行任何更改。Hyperledger Fabric 应该不仅在基础架构级别,而且在代码、库和 API 级别都是可移植的,因此它可以支持在 Hyperledger 各种实现之间的统一开发。
4.9 丰富的数据查询
区块链网络应允许在网络上运行丰富的查询,可以使用传统查询语言来查询帐本的当前状态,满足这一易用性要求将有助于区块链网络的广泛推展。
上述 9 项就是 Hyperledger Fabric 的要求,开发符合 Hyperledger 设计理念的区块链解决方案应满足这些要求。