Настройка подмножества заказчиков для канала приложения RAFT

Я пытаюсь создать канал приложения, используя first-network из fabric-samples.

  1. Я создаю развертывание для запуска 4 узлов заказа, работающих в кластере RAFT. Ниже приведен раздел профиля, используемый для создания блока Orderer Genesis в файле configtx.yaml.

    SampleMultiNodeEtcdRaft
        <<: *ChannelDefaults
        Capabilities:
        <<: *ChannelCapabilities
        Orderer:
            <<: *OrdererDefaults
            OrdererType: etcdraft
            EtcdRaft:
                Consenters:
                - Host: orderer.example.com
                  Port: 7050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
                - Host: orderer2.example.com
                  Port: 8050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
                - Host: orderer3.example.com
                  Port: 9050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
                - Host: orderer4.example.com
                  Port: 10050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt
            Addresses:
                - orderer.example.com:7050
                - orderer2.example.com:8050
                - orderer3.example.com:9050
                - orderer4.example.com:10050
            Organizations:
            - *OrdererOrg
            Capabilities:
                <<: *OrdererCapabilities
        Application:
            <<: *ApplicationDefaults
            Organizations:
            - <<: *OrdererOrg
        Consortiums:
            SampleConsortium:
                Organizations:
                - *Org1
                - *Org2
    
  2. Теперь я хочу создать канал приложения, в котором будет только 3 узла заказа (из 4): orderer, orderer2, orderer3. Поэтому я установил раздел профиля для канала приложения следующим образом (в файле configtx.yaml):

    TwoOrgsChannel:
        Consortium: SampleConsortium
        <<: *ChannelDefaults
        Capabilities:
            <<: *ChannelCapabilities
        Orderer:
            <<: *OrdererDefaults
            OrdererType: etcdraft
            EtcdRaft:
                Consenters:
                - Host: orderer.example.com
                  Port: 7050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
                - Host: orderer2.example.com
                  Port: 8050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
                - Host: orderer3.example.com
                  Port: 9050
                  ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
                  ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
            Addresses:
                - orderer.example.com:7050
                - orderer2.example.com:8050
                - orderer3.example.com:9050
            Organizations:
                - *OrdererOrg
            Capabilities:
                <<: *OrdererCapabilities
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities
    
  3. Я использую сценарий byfn.sh по умолчанию для подключения к сети.

Но все же, когда я пытаюсь получить блок конфигурации канала приложения из контейнера cli, используя orderer4 envrionment, я успешно могу это сделать, и, декодируя его в файл JSON, я вижу, что все 4 заказчика являются частью consenters, а также адрес каждого покупателя присутствует в разделе адреса покупателя.

Итак, почему канал приложения не начинается только с первых трех заказчиков, несмотря на то, что в качестве участников указаны только они?


person Chintan Rajvir    schedule 07.04.2020    source источник


Ответы (1)


В команде создания канала должен быть аргумент -channelCreateTxBaseProfile, а значением аргумента должно быть имя профиля создания канала (здесь SampleMultiNodeEtcdRaft).

Кроме того, идентификатор, пытающийся выполнить команду peer channel create, должен соответствовать следующему ACL: /Channel/Orderer/ConsensusType (который по умолчанию настроен на следующую политику: /Channel/Application/Admins).

person Chintan Rajvir    schedule 07.04.2020
comment
Я пробую ту же настройку для настройки Orderer для канала приложения, но получаю implicit policy evaluation failed ошибку. Не могли бы вы предложить, где и как установить политику ACL? - person chitresh; 28.06.2021