关键概念 --------------------------- .. note:: 完整的Hyperledger Fabric介绍,请参考 `Hyperledger Fabric Document `_ **账本** 账本是 Fabric 中所有 **状态转换** 有序的、防篡改的记录。 **状态转换** 是参与方提交的 **链码** 调用 **交易** 的结果。每个交易都会生成一组键值对,这些键值对以创建、更新或删除形式提交到 **账本**。 Hyperledger Fabric 的账本包括两个组件: **世界状态** 和 **交易日志** 。每个参与者都拥有他们所属的每个 Hyperledger Fabric 网络的账本副本。 世界状态组件是账本的数据库,描述了在给定时间点的账本的状态。 交易日志组件是世界状态的更新历史,记录产生世界状态中当前值的所有交易。 账本中世界状态的数据存储是可替换的(默认使用 LevelDB 键值存储数据库)。交易日志只记录区块链网络使用账本数据库前后的值,不需要是可插拔的。 **共识** **交易** 必须按照发生的顺序写入 **账本**,即使它们可能位于网络中不同的参与者集合之中。因此,必须建立 **排序** ,即交易的顺序确认,且必须采用一种方法来拒绝错误(或恶意)插入到账本中的非法交易。 共识就是交易参与方为达成严格交易排序,共同为排序服务选择实现方式的过程。 Hyperledger Fabric 历史上支持Solo、Kafka和Raft三种排序服务,但在V2.0中前两者均被弃用,并推荐使用Raft排序服务。 教育联盟链成员达成共识,使用Raft作为联盟链的排序服务。 **智能合约** Hyperledger Fabric 智能合约用 **链码** 编写。 区块链外部的应用程序通过调用链码与账本交进行交互。在大多数情况下,链码只与账本的数据库、世界状态(例如,查询)交互,而不与交易日志交互。 Hyperledger Fabric 目前支持 Go、Node.js 和 Java 链码。 **安全和MSP成员服务** Hyperledger Fabric 支持的交易网络中,所有参与者都拥有已知的身份。公钥基础设施用于生成与组织、网络组件以及终端用户或客户端应用程序相关联的加密证书,可以在更广泛的网络和通道级别上操纵和管理数据访问控制。 **隐私** 根据网络的需求,企业对企业(B2B)网络中的参与者可能对他们共享的信息量非常敏感。 Hyperledger Fabric 在每个 **通道** 上使用不可变的账本,以及可操纵和修改当前状态(即更新键值对)的链码。账本存在于通道范围内,它可以在整个网络中共享(假设每个参与者都在同一个公共通道上),也可以被私有化,仅包括一组特定的参与者。 Fabric 通过 **私有数据集合** 支持单个成员在通道上定义的组织子集能够背书、提交或查询私有数据,而无需创建单独的通道。 Fabric 通过 **通道** 支持两个或多个特定网络成员之间进行私有和机密的交易。