Hyperledger Fabric中configtx.yaml中的配置文件部分是什么

时间:2018-10-24 12:41:00

标签: hyperledger-fabric hyperledger-composer

TwoOrgsOrdererGenesis:
        <<: *ChannelDefaults
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
            Capabilities:
                <<: *OrdererCapabilities
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2

    TwoOrgsChannel:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities

该部分到底意味着什么?

让我们开始讨论第一个配置文件:TwoOrgsOrdererGenesis。谁能告诉我这到底意味着什么?什么是财团?为什么在示例中有一个创始块设置和通道设置的SampleConsortium名称?我检查了创世记块的内容,但找不到该名字的任何东西。 以一种非常理解的语言对整个代码进行很好的解释将是令人愉快和光荣的。谢谢

1 个答案:

答案 0 :(得分:4)

在此文件中,我们配置了创世纪模块,您可以通过实现该模块来构建自己的网络,因此让我们深入了解一些细节。

组织的文件中: 看起来像这样

Organizations:

# SampleOrg defines an MSP using the sampleconfig.  It should never be used
# in production but may be used as a template for other definitions
- &OrdererOrg
    # DefaultOrg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    Name: OrdererOrg

    # ID to load the MSP definition as
    ID: OrdererMSP

    # MSPDir is the filesystem path which contains the MSP configuration
    MSPDir: crypto-config/ordererOrganizations/example.com/msp

- &Org1
    # DefaultOrg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    Name: Org1MSP

    # ID to load the MSP definition as
    ID: Org1MSP

    MSPDir: crypto-config/peerOrganizations/org1.example.com/msp

    AnchorPeers:
        # AnchorPeers defines the location of peers which can be used
        # for cross org gossip communication.  Note, this value is only
        # encoded in the genesis block in the Application section context
        - Host: peer0.org1.example.com
          Port: 7051

- &Org2
    # DefaultOrg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    Name: Org2MSP

    # ID to load the MSP definition as
    ID: Org2MSP

    MSPDir: crypto-config/peerOrganizations/org2.example.com/msp

    AnchorPeers:
        # AnchorPeers defines the location of peers which can be used
        # for cross org gossip communication.  Note, this value is only
        # encoded in the genesis block in the Application section context
        - Host: peer0.org2.example.com
          Port: 7051

在这里,我们与对等方一起定义我们的组织,并向我们的结构提供这些组织的加密材料的链接。 因此,在此示例中,我们在文件顶部有3个组织,即订购者组织和2个其他peerOrganization,您可以注意到以下

Name: OrdererOrg
ID: OrdererMSP
MSPDir: crypto-config/ordererOrganizations/example.com/msp

这是订购者组织的配置,我们向会员服务提供商提供ID,该成员服务提供商是处理所有加密操作签名,验证,发行和链接的框架,我们将其与该组织的加密材料所在的位置链接我们的文件系统MSPDir。

和以下对等组织Org1和Org2遵循相同的结构,只不过它们必须包含在锚点对等点中,这使您的组织对等方可以与其他组织对等方进行通信,这是保持数据与多个组织同步的要点。必须在以下部分中为每个组织定义锚点对等点

AnchorPeers:
        # AnchorPeers defines the location of peers which can be used
        # for cross org gossip communication.  Note, this value is only
        # encoded in the genesis block in the Application section context
        - Host: peer0.org1.example.com
          Port: 7051

现在移到文件的另一部分,即 Orderer : 看起来像

Orderer: &OrdererDefaults

# Orderer Type: The orderer implementation to start
# Available types are "solo" and "kafka"
OrdererType: solo

Addresses:
    - orderer.example.com:7050

# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 2s

# Batch Size: Controls the number of messages batched into a block
BatchSize:

    # Max Message Count: The maximum number of messages to permit in a batch
    MaxMessageCount: 10

    # Absolute Max Bytes: The absolute maximum number of bytes allowed for
    # the serialized messages in a batch.
    AbsoluteMaxBytes: 99 MB

    # Preferred Max Bytes: The preferred maximum number of bytes allowed for
    # the serialized messages in a batch. A message larger than the preferred
    # max bytes will result in a batch larger than preferred max bytes.
    PreferredMaxBytes: 512 KB

Kafka:
    # Brokers: A list of Kafka brokers to which the orderer connects
    # NOTE: Use IP:port notation
    Brokers:
        - 127.0.0.1:9092

# Organizations is the list of orgs which are defined as participants on
# the orderer side of the network
Organizations:

如果您注意到订购者:&OrdererDefaults ,它是一个别名,其中包含以下设置,因此我们可以在个人资料部分中使用它,本节后面将对此进行解释

    OrdererType: solo

意味着我们使用适用于开发但不适用于生产的单独消息传递服务器,而在生产环境中使用kafka。

Addresses:
    - orderer.example.com:7050

这里的订购者地址只有一个订购者,但是在实际生产中我们可以有多个订购者,因此您可以在此处提供它的地址

BatchSize:

    # Max Message Count: The maximum number of messages to permit in a batch
    MaxMessageCount: 10

    # Absolute Max Bytes: The absolute maximum number of bytes allowed for
    # the serialized messages in a batch.
    AbsoluteMaxBytes: 99 MB

    # Preferred Max Bytes: The preferred maximum number of bytes allowed for
    # the serialized messages in a batch. A message larger than the preferred
    # max bytes will result in a batch larger than preferred max bytes.
    PreferredMaxBytes: 512 KB

在本节中,我们定义何时创建新块,因此它取决于您的业务用例,因此您可以依赖于创建新块的时间,该时间为 BatchTimeout BatchSize < / strong>该区块应保留多少笔交易,甚至该区块的最大大小都会仔细更改这些值以满足您的需求。

卡夫卡:         #Brokers:订购者连接的Kafka经纪人列表         #注意:使用IP:端口符号         经纪人:             -127.0.0.1:9092

如果您使用的是kafka,将使用此配置,并且在生产中,您将有多个代理,因此请提供代理的IP地址。

最后是个人资料部分:

Profiles:

TwoOrgsOrdererGenesis:
    Capabilities:
        <<: *ChannelCapabilities
    Orderer:
        <<: *OrdererDefaults
        Organizations:
            - *OrdererOrg
        Capabilities:
            <<: *OrdererCapabilities
    Consortiums:
        SampleConsortium:
            Organizations:
                - *Org1
                - *Org2
TwoOrgsChannel:
    Consortium: SampleConsortium
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org1
            - *Org2
        Capabilities:
            <<: *ApplicationCapabilities

本节将以良好的可读性语法组合我们的所有配置,换句话说,当您尝试创建创世块时,将执行本节,在第一部分中,我们将提供创建创世块的配置。

  <<: *ChannelCapabilities

表示要导入 ChannelCapabilities 别名在本节中引用的设置。

<<: *OrdererDefaults

这意味着要导入所有加密材料 OrdererDefaults 作为本节中引用的别名。

在提交的财团中,我们在这里指定此订购者将服务的组织,因为一个订购者可以为多个组织提供服务

TwoOrgsChannel 是我们组织要加入的渠道,请记住,每个组织可以加入多个渠道,因此我们也必须提供联盟渠道让频道知道谁是我们的加盟组织。

希望这对您有帮助。