首页区块链技术智能合约Hyperledger Fabric中通道配置更新
  • 评论(0)

分享到

微博

微信

QQ

Hyperledger Fabric中通道配置更新

配置更新

配置更新作为HeaderType_CONFIG_UPDATE类型的Envelope消息提交。 事务的Payload数据是封送的ConfigUpdateEnvelope。 ConfigUpdateEnvelope定义如下:

message ConfigUpdateEnvelope {
    bytes config_update = 1;
    repeated ConfigSignature signatures = 2;
}

签名字段包含授权配置更新的签名集。 它的消息定义是:

message ConfigSignature {
    bytes signature_header = 1;
    bytes signature = 2;
}

signature_header是为标准事务定义的,而签名是通过ConfigUpdateEnvelope消息中的signature_header字节和config_update字节的串联。

ConfigUpdateEnvelope config_update字节是封送的ConfigUpdate消息,其定义如下:

message ConfigUpdate {
    string channel_id = 1;
    ConfigGroup read_set = 2;
    ConfigGroup write_set = 3;
}

channel_id是更新绑定的通道ID,这对于支持此重新配置的签名范围是必要的。

read_set指定现有配置的子集,稀疏地指定,其中仅设置版本字段,并且不必填充其他字段。永远不应在read_set中设置特定的ConfigValue值或ConfigPolicy策略字段。 

ConfigGroup可以填充其映射字段的子集,以便引用配置树中更深的元素。例如,要在read_set中包含Application组,其父级(Channel组)也必须包含在读取集中,但Channel组不需要填充所有键,例如Orderer组键,或任何值或政策密钥。

write_set指定要修改的配置片段。由于配置的分层特性,对层次结构深处的元素的写入也必须在其write_set中包含更高级别的元素。但是,对于write_set中也在同一版本的read_set中指定的任何元素,应该稀疏地指定该元素,就像在read_set中一样。

例如,给定配置:

Channel: (version 0)
    Orderer (version 0)
    Application (version 3)
       Org1 (version 2)

要提交修改Org1的配置更新,read_set将为:

Channel: (version 0)
    Application: (version 3)

而write_set将是

Channel: (version 0)
    Application: (version 3)
        Org1 (version 3)

收到CONFIG_UPDATE后,订货人通过执行以下操作来计算生成的CONFIG:

  1. 验证channel_id和read_set。 read_set中的所有元素必须存在于给定版本中。

  2. 通过收集write_set中未出现在read_set中相同版本的所有元素来计算更新集。

  3. 验证更新集中的每个元素是否将元素更新的版本号精确增加1。

  4. 验证附加到ConfigUpdateEnvelope的签名集是否满足更新集中每个元素的mod_policy。

  5. 通过将更新集应用于当前配置来计算配置的新完整版本。

  6. 将新配置写入ConfigEnvelope,其中包括CONFIG_UPDATE作为last_update字段和配置字段中编码的新配置,以及递增的序列值。

  7. 将新的ConfigEnvelope写入CONFIG类型的Envelope,并最终将其作为新配置块中的唯一事务写入。

当对等方(或任何其他接收方)收到此配置块时,它应通过将last_update消息应用于当前配置并验证orderer-computed配置字段包含正确的新配置来验证配置是否已正确验证。

©免责声明和风险提示:本文系用户自行发布或转载,不代表比特万象任何观点,如有任何形式的转载请联系原作者。文章中的所有内容均不构成比特万象任何的投资建议及意见、立场,请您根据自身评估做出理性决策。比特万象仅提供网络存储空间服务,如文章侵犯到您的合法权利,请您通知比特万象予以删除。
粤ICP备17084271号-2 Copyright © 比特万象 版权所有