Hyperledger Fabric 介绍Hyperledger Fabric 专题

1. Hyperledger Fabric 专题 - 核心技术构

2019-11-07  本文已影响0人  furnace

Hyperledger Fabric 专题 - 核心技术构件

共享账本

Hyperledger Fabric 具有一个账本子系统,该子系统包括两个组件:世界状态 (world state) 和交易日志 (transaction log)。每个参与者都有一份他们所属的那个 Hyperledger Fabric 网络的账本副本。

世界状态组件描述帐本在给定时间点的状态。这是帐本的数据库。交易日志组件记录所有导致世界状态当前值的交易,这是世界状态的更新历史。帐本是世界状态数据库和交易日志历史记录的组合。

帐本对于世界状态的数据存储采用可替换机制。默认情况下,这是一个 LevelDB 键值存储数据库。交易日志不需要是可插拔的。它仅记录区块链网络使用的帐本数据库的前后值。

智能合约 (Smart Contract)

Hyperledger Fabric 智能合约以链码编写,并在区块链外部的应用程序需要与账本交互时由该应用程序调用。在大多数情况下,链码 (chaincode) 仅与帐本的数据库组件,世界状态 (例如,查询状态) 交互,而不与交易日志交互。

链码可以用几种编程语言实现。当前,支持 Go 和 Node.js 还有 Java。

对端节点

Fabric 网络中的账本实例和链码实例都存储在对端节点上,管理员和应用程序都需要通过对端节点与 Fabric 网络交互。对端节点是 Fabric 网络中最重要的物理载体。

管理员

具有管理 Fabric 网络的某些权限,能够操作 Fabric 网络。

应用程序

外部应用程序,能够交互 Fabric 网络上的链码,或者访问 Fabric 的状态和交易日志。

交易排序器 (?)

交易排序器用于 Fabric 网络智能合约执行模型 execute-order-validate 中的 order 部分。

是共识算法中的一部分。

MSP

MSP (Membership Service Provider) 是 Hyperledger Fabric 中用于达成网络中各成员之间互相信任的构件,类似于比特币中的 POW (Proof Of Work) 机制。

注意,这里 MSP 并不具备达成数据共识的能力,它只是提供了 Fabric 网络中各对端节点之间的互信能力。

通道

Hyperledger Fabric 通过通道 (Channel) 允许一组参与者创建单独的交易账本。

这是一个特别重要的选项,因为网络中的某些参与者可能是竞争对手,同时他们也不希望进行的每笔交易 (例如,他们为某些参与者而不是其他人提供的特殊价格) 都被所有参与者知道,因为,只有这些参与者 (没有其他参与者) 拥有该通道的交易账本。

隐私性

根据网络的需求,企业对企业 (B2B) 网络的参与者可能对他们共享多少信息非常敏感。对于其他网络,隐私将不是头等大事。

Hyperledger Fabric 支持以隐私 (使用通道) 为主要操作要求的网络以及相对开放的网络。

共识机制

交易必须按它们发生的顺序写入账本,即使它们可能会处于网络中由参与者构成的不同的组中。为此,必须建立交易顺序,并且必须采用一种方法来拒绝错误 (或恶意) 插入帐本中的不良交易。

这是计算机科学领域中经过深入研究的领域,有很多方法可以实现,但都需要权衡取舍。例如,实用拜占庭式容错 (Practical Byzantine Fault Tolerance, PBFT) 可以为文件副本复制提供相互通信的机制,即使在出现损坏的情况下,也可以使每个副本保持一致。或者,在比特币中,排序通过称为挖矿的过程进行,在此过程中,竞争的计算机竞相解决一个密码难题,该难题定义了随后所有进程所依据的顺序。

Hyperledger Fabric 旨在允许网络参与者选择一种共识机制,以最能代表参与者之间存在的关系。与隐私一样,也有各种各样的需求。从关系高度结构化的网络到点对点的网络。

Hyperledger Fabric 共识机制目前包括 SOLO (?),Kafka 和 Raft。

Hyperledger Fabric 的特性

Reference

  1. Docs » Key Concepts » Introduction, https://hyperledger-fabric.readthedocs.io/en/release-1.4/blockchain.html

项目源代码

项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp

Contributor

  1. Windstamp, https://github.com/windstamp
上一篇下一篇

猜你喜欢

热点阅读