对等通道更新是否会创建事务



在Hyperledger Fabric中,您可以使用peer channel update向下一个网络提交更新。例如,一旦你准备好了protobuf格式的块,你就可以这样提交:

peer channel update -f .someupdate.pb -c somechannel

但是,您也可以使用它来提交通道事务,例如:

peer channel update -f someTransaction.tx -c somechannel

我真的很困惑。peer update channel在提交更新块时是否创建事务?使用而不是事务的情况是什么?

cyptotxgen工具也是如此。你可以用它来创建一个起源区块:

configtxgen -outputBlock ./genesis.block  -profile SomeProfile  -channelID somechannel

或者您可以使用创建交易:

configtxgen -outputCreateChannelTx ./sometransaction.tx  -profile SomeProfile  -channelID somechannel

关于peer channel update的官方文档介绍了-f参数:

-f,--file-string由configtxgen等工具生成的用于提交给订购方的配置事务文件

所以它指的是交易,而不是区块。但显然,你确实可以使用提交一个块。该命令是否在后台创建事务?

据我所见,peer channel update只接受配置更新事务。它不在乎文件的名称(例如,可能以.pb或.tx结尾(。该文件将是protobufs的串行集合,肯定不会是块,其格式如下所述https://hyperledger-fabric.readthedocs.io/en/latest/configtx.html#configuration-更新,但足以说明配置更新事务是一组diff,订购者将使用这些diff将其作为唯一的事务放入块中,从而生成完整的通道配置。对等方将接收此块,对其进行验证,并使其成为新的通道配置块

2.3之前的织物中的密码有两个目的。

第一个目的是生成一个包含系统通道配置的成因块。当订购者第一次启动且系统通道尚未创建时,它将读取此文件并创建系统通道,随后重新启动订购者将忽略此文件,因为该块现在存储在订购者的适当位置。

configtxgen 2.3之前版本的第二个目的是生成可供peer channel create使用的应用程序通道创建事务文件。这将提交给订购者,订购者将为包含通道配置的应用程序通道生成一个genesis块。

在结构2.3中,删除了对系统通道的需求,现在cryptogen有了第三个目的(因为它现在仍然需要支持系统通道机制(,即生成应用程序通道生成块。然后将其作为osnadmin命令的输入发送给第一个订购者,该订购者基本上用该genesis块引导应用程序通道。然后,更多的订购者(通过osnadmin(和对等方可以使用相同的genesis块加入该通道(通过对等通道加入(。