问题描述
问题 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 的回答:没有主分类帐。分类帐是按通道创建的。请参阅Ledger definition in Hyperledger Fabric documentation.
分类帐由一个区块链(“链”)组成,用于在块中存储不可变的、有序的记录,以及一个用于维护当前状态的状态数据库。 每个通道有一个分类帐。每个对等节点为其所属的每个通道维护一份分类帐副本。
- 对问题 2 的回答:订购服务可以是多个渠道通用的。在这种情况下,同一个排序服务将从多个客户端应用程序接收交易(这些应用程序又可能连接到不同渠道的成员)。没有主分类账。通道为 HLF 提供实现隐私所需的数据隔离(根据 Hyperledger Fabric 文档,数据隔离和机密性)。实施总账会在隐私和统一账本原则之间产生冲突。
- 对问题 3 的回答:当您与所有 10 个成员建立通道时,您在所有 10 个成员中拥有一个公共分类帐,因此有一个数据集在所有这 10 个成员中是公共的[当前状态 + 历史]。现在,如果您要创建另一个拥有 2 个成员的频道,应该只是因为您想让这 2 个成员做一些您不想让其他 8 个成员知道的事情。否则,这简直是错误的。创建通道是关于决定必须共享哪些数据。这不应该是将它们分组到池中。