Hyperledger系列(八)Channel 配置 (configtx)

Channel 配置(configtx)

Hyperledger Fabric区块链网络的共享配置,存储在collection configuration transactions中,每个Channel一个。 每个configuration transaction 通常使用一个较短的名称configtx

Channel配置具有以下重要属性:

  • Versioned(版本化):配置文件中的所有元素,都有一个关联的版本,每次修改都会更新版本号。 此外,每个提交的配置都会收到一个序列号。

  • Permissioned(权限):配置文件中的每个元素,都有一个关联的策略,用于控制是否允许对该元素进行修改。 任何拥有之前configtx副本(并且没有其他额外的信息)的人,都可以根据这些策略验证新配置的有效性。

  • Hierarchical(分层):根配置组包含子组,并且每个层次组都有关联的值和策略。 这些政策可以利用层次结构,从较低层次的政策中生成较高层次的政策(These policies can take advantage of the hierarchy to derive policies at one level from policies of lower levels)。

详解一个配置

配置作为HeaderType_CONFIG类型的transaction,存储在没有其它transaction的block(块)中。 这些块被称为Configuration Blocks(配置块),其中第一块被称为Genesis Block(创世区块)。

配置的原型结构(proto structures)存储在fabric/protos/common /configtx.proto中。HeaderType_CONFIG类型的Envelope(信封、包、封装)将ConfigEnvelope消息编码为Payload数据字段。 ConfigEnvelope的原型定义如下:

message ConfigEnvelope {
    Config config = 1;
    Envelope last_update = 2;
}

last_update字段在下面的 “Updates to configuration(更新到配置)” 部分中定义,它仅在验证配置时需要。 相反,当前提交的配置,存储在config字段中,其中包含Config消息。

message Config {
    uint64 sequence = 1;
    ConfigGroup channel_group = 2;
}

对于每个已提交的配置,序号(sequence numbe)都加1。 channel_group字段是包含配置的根group。 ConfigGroup结构是递归定义的,并构建一个group的树,其中每个group都包含值和策略。 它被定义如下:

message ConfigGroup {
    uint64 version = 1;
    map<string,ConfigGroup> groups = 2;
    map<string,ConfigValue> values = 3;
    map<string,ConfigPolicy> policies = 4;
    string mod_policy = 5;
}

由于ConfigGroup是一个递归结构,它具有分层结构。 下面的例子是为了使golang符号更清晰。

// 假设下面的 groups 如下定义
//var root, child1, child2, grandChild1, grandChild2, grandChild3 *ConfigGroup

// 设置下面的 values
root.Groups["child1"] = child1
root.Groups["child2"] = child2
child1.Groups["grandChild1"] = grandChild1
child2.Groups["grandChild2"] = grandChild2
child2.Groups["grandChild3"] = grandChild3

// groups的config structure 结果像下面:
// root:
//     child1:
//         grandChild1
//     child2:
//         grandChild2
//         grandChild3

每个group都在配置层次结构中定义一个级别,每个group都有一组关联的value(由字符串key索引)和Policies(策略,也由字符串key索引)。

values由以下定义:

message ConfigValue {
    uint64 version = 1;
    bytes value = 2;
    string mod_policy = 3;
}

Policies 由以下定义:

message ConfigPolicy {
    uint64 version = 1;
    Policy p
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值