【问题标题】:hyperledger Fabric - channel.tx and genesis.block very unclearhyperledger Fabric - channel.tx 和 genesis.block 非常不清楚
【发布时间】:2020-04-05 14:19:57
【问题描述】:

下周我将使用 Hyperledger Fabric 开始一个新的区块链项目。我对 configtx 二进制文件有疑问。

我们使用这个二进制文件来创建一个 channel.tx 和一个 genesis.block。我已经阅读了文档,观看了教程并查看了互联网,但我仍然不明白为什么需要 genesis.block 和 channel.tx 以及为什么要这样创建它。例如:genesis.block不应该在包含通道配置的区块链中吗?

【问题讨论】:

    标签: configuration hyperledger-fabric blockchain channel


    【解决方案1】:

    一个简化的答案:

    创世区块被称为第一个区块。

    通道中的第一个(创世)区块是channel.tx(通道配置交易)。它只包含频道名称以及允许使用该频道的联盟

    orderer 创世块是在 orderer 启动时配置它的东西。它包含每个组织的 MSP ID,这些 MSP ID 是联盟的一部分,以及每个 MSP ID 的受信任证书。

    订购者需要有关组织的信息,因为订购者批准创建新渠道。频道创建请求必须来自受信任的实体(组织的一部分),否则将不会创建频道。

    由于你不能在没有 orderer 批准的情况下在 channel 中修改(执行交易),所以只让 orderer 拥有网络信息是有意义的。这样一来,您就不会冒着在渠道/订购者之间出现不一致信息的风险,以防万一发生任何变化。

    所有 Fabric 块都使用 protobuf 进行编码/序列化,因为内部通信依赖于 gRPC。因此,块是 binary 格式。

    【讨论】:

      【解决方案2】:

      这样想,如果你想改变区块链系统的配置,你会怎么做?关闭所有主机,编辑它们的配置并一一重启?那将是荒谬的,因为我们说区块链是去中心化的,没有人可以控制所有的主机。动态更改配置的唯一方法是在线达成共识。那么如何在线达成共识,显然,答案是使用交易(tx)。对于frabric中区块链的初始化,我们可以使用相同的方式,即channel.tx和genesis.block,通过重用编辑配置的逻辑来消除初始化成本。同时,tx 应该放在一个块中,这就是 genesis.block 存在的原因。

      【讨论】:

      • 感谢您的回复。我理解与配置相关的共识概念。但我不明白的是 channel.tx 包括什么?它是用来做什么的?对于通道配置?那么网络配置呢?任何地方都没有文件..希望你能帮助我!
      • hyperledger-fabric.readthedocs.io/en/latest/build_network.html 你可以在这个网站上找到一些信息。我建议您阅读 fabric 给出的示例中的 byfn.sh。而channel.tx中包含的内容是由configtx.yaml生成的,这是一种易于阅读和理解的文件。
      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2023-01-31
      • 2023-04-01
      • 2023-03-12
      相关资源
      最近更新 更多