为什么我们需要渠道? 问题 1问题 2问题 3

问题描述

问题 1

来自documentation(强调我的),

Hyperledger Fabric 还提供了创建渠道的能力, 允许一组参与者创建一个单独的分类帐 交易。

这似乎意味着,所有节点的所有渠道都有一个交易的“主分类账”。显然,that is not true。即使这是真的,也不清楚渠道分类帐和“主分类帐”之间的相关性是什么。 “主分类帐”中是否存在通道分类帐指向的区块?

问题 2

来自documentation on Transaction Flow (4. Client assembles endorsements into a transaction)(强调我的),

排序服务不需要检查一个的全部内容 交易为了执行它的操作,它简单地接收 来自网络中所有渠道的交易,订购它们 按时间顺序按渠道,并创建交易块 频道。

当通道分类帐(显然)不是基于“主分类帐”中的块(假设,“主账本甚至存在!)?

问题 3

考虑一个有 10 个成员的网络。可能有两种情况 w.r.t.渠道。

场景 1 - 一个频道包含所有 10 名成员。

场景 2 - 三个频道覆盖所有 10 名成员,例如 2 + 3 + 5 格式。

如果我们单独查看场景 2 中的每个通道,那么它们与场景 1 相同——也就是说,场景 2 中的每个通道都有一个网络。现在,鉴于此,通道分类帐是独立的,为什么要为网络成员的组合创建单独的频道?为什么不将它们集中到单独的网络中,仅使用一个通道?

解决方法

下面我会一一一一解答。

  1. 对问题 1 的回答:没有主分类帐。分类帐是按通道创建的。请参阅Ledger definition in Hyperledger Fabric documentation.

分类帐由一个区块链(“链”)组成,用于在块中存储不可变的、有序的记录,以及一个用于维护当前状态的状态数据库。 每个通道有一个分类帐。每个对等节点为其所属的每个通道维护一份分类帐副本。

  1. 对问题 2 的回答:订购服务可以是多个渠道通用的。在这种情况下,同一个排序服务将从多个客户端应用程序接收交易(这些应用程序又可能连接到不同渠道的成员)。没有主分类账。通道为 HLF 提供实现隐私所需的数据隔离(根据 Hyperledger Fabric 文档,数据隔离和机密性)。实施总账会在隐私和统一账本原则之间产生冲突。
  2. 对问题 3 的回答:当您与所有 10 个成员建立通道时,您在所有 10 个成员中拥有一个公共分类帐,因此有一个数据集在所有这 10 个成员中是公共的[当前状态 + 历史]。现在,如果您要创建另一个拥有 2 个成员的频道,应该只是因为您想让这 2 个成员做一些您不想让其他 8 个成员知道的事情。否则,这简直是错误的。创建通道是关于决定必须共享哪些数据。这不应该是将它们分组到池中。