Capability Requirement [Fabric 1.3]

Capability

因为Fabric是一个分布式系统,通常涉及多个组织(有时在不同的国家甚至大洲), 所以在网络中可能存在许多不同版本的Fabric代码。然而,重要的是网络需要以同样的方式处理事务, 以便每个节点对当前网络状态有相同的观点。

这意味着,每个网络 – 以及网络中的每个通道 – 必须定义一组我们称为“Capability”的东西,以便能够参与处理事务。 例如Fabric v1.1引入了新的MSP角色类型“Peer”和“Client”。但是,如果v1.0的Peer不理解这些新角色类型, 它将无法适当地评估引用它们的背书策略。这意味着在使用新的角色类型之前,网络必须同意启用v1.1 channel 的Capability, 确保所有Peer都做出相同的决定。

只有支持所需Capability的节点才能够参与到channel中,新的节点在启用相应Capability之前不会启用新的验证逻辑。 通过这种方式,Capability可以确保即使是不同的Fabric版本,网络也不可能产生状态分叉的结果。

定义Capability

Capability是在channel配置中的每个channel中定义的(在通道的最新配置块中可以找到)。channel配置包含三个位置,每个位置都定义了不同类型的Capability。

Capability TypeCanonical PathJSON Path
Channel/Channel/Capabilities.channel_group.values.Capabilities
Orderer/Channel/Orderer/Capabilities.channel_group.groups.Orderer.values.Capabilities
Application/Channel/Application/Capabilities.channel_group.groups.Application.values. Capabilities
  • Channel: 这些Capability适用于Peer和orders,并且位于根 Channel 组中。
  • Orderer: 仅适用于orders,并且位于 Orderer 组中。
  • Application: 仅适用于peers,并且位于 Application 组中。

为了与现有的管理结构保持一致,这些Capability被分解到这些组中。更新orderer Capability是ordering组织自己的事,独立与application orgs。 类似的,更新application Capability只是application管理员的事情, 与ordering无关。 通过将“Orderer”和“Application”之间的Capability分离,假设一个网络可以运行在v1.6的ordering service, 同时又支持运行在v1.3的peer网络。

译者注: 这里的application应该就是除了order service之外的任何一个application channel的Peer网络,可以简单理解为一个应用通道中的所有peers

然而,有些Capability跨越了“Application”和“Orderer”组。正如我们前面看到的,添加新的MSP角色类型是orderer管理员和application管理员都同意并且需要认识到的。 orderer必须理解MSP角色的含义,以便允许事务通过排序,而peers必须理解角色,以便验证事务。 这种Capability – 它跨越了applitaion和orderer组件 – 在顶层“Channel”组中定义。

设置Capability

Capability被设置为channel配置的一部分(或者作为初始配置的一部分(我们将稍后讨论),或者作为重新配置的一部分)。

因为在默认情况下,新通道会复制Orderer系统通道的配置,因此在新通道创建时会使用和Orderer系统通道 一样的Orderer和channel的Capability,以及application Capability自动配置新通道。 然而,已经存在的通道必须重新配置。

Capabilities在protobuf中定于的结构如下:

message Capabilities {
      map<string, Capability> capabilities = 1;
}

message Capability { }

 

As an example, rendered in JSON: 用JSON格式举例:

{
    "capabilities": {
        "V1_1": {}
    }
}

初始化配置中的Capabilities

Fabric源代码config路径下的 configtx.yaml 文件中, 在 Capabilities 部分列举了每种Capability类型 (Channel, Orderer, and Application)。

启用Capability的最简单方法是选择一个v1.1示例概要文件并为您的网络定制它。例如:

SampleSingleMSPSoloV1_1:
    Capabilities:
        <<: *GlobalCapabilities
    Orderer:
        <<: *OrdererDefaults
        Organizations:
            - *SampleOrg
        Capabilities:
            <<: *OrdererCapabilities
    Consortiums:
        SampleConsortium:
            Organizations:
                - *SampleOrg

注意,在根级别(用于channel capabilities)和在Orderer级别(用于Orderer Capability)定义了一个 Capabilities 部分。 上面的示例使用YAML引用的方式将定义在文件底部的capabilities部分包含进来。

在定义orderer系统通道时,不存在Application部分,因为这些Capability是在创建application通道时定义的。 要在通道创建时定义新通道(application channel)的application Capability,application管理员应该在 SampleSingleMSPChannelV1_1 中对其通道创建事务建模。

Applicatoin部分的 Capabilities 元素引用了定义在YAML文件底部的 ApplicationCapabilities 部分。

应用通道中的Channel和Orderer capabilities继承自ordering系统通道中的定义,在创建通道的时候被自动包含进来。

原文: https://fabric-docs-cn-baofengsun.readthedocs.io/en/latest/capability_requirements.html

Fabric version: 1.3

如有错误, 欢迎指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值