Неявная оценка политики не удалась при создании нового канала - PullRequest
0 голосов
/ 08 октября 2019

Я использую пользовательскую сеть Hyperledger Fabric через Kubernetes, и теперь я пытаюсь автоматизировать создание и объединение каналов. Ошибка, которую я получаю сейчас, связана с созданием самого канала.

Следующий порядок, связанный с созданием каналов, следующий (пример канала называется глобальным):

  1. Создание genesis.block с использованием configtx.yaml:
configtxgen -profile OrgsOrdererGenesis -configPath /data/config -outputBlock /data/genesis.block --channelID orderersglobal
  1. Создание channel.tx с использованием ранее созданного genesis.block:
configtxgen -profile OrgsChannel -configPath /data/config -outputCreateChannelTx /data/global.tx -channelID global
  1. Скопируйте channel.tx в каждый CLI и org

  2. В каждом CLI я регистрируюсь как администратор и запускаю следующую команду для созданияблок канала:

peer channel create -o orderer0.org1:7050 --channelID global -f /data/global.tx

Однако я получаю эту ошибку:

2019-10-08 12:25:51.089 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: got unexpected status: BAD_REQUEST -- error validating channel creation transaction for new channel 'global', could not successfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group]  /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied

Как следствие, я не могу продолжать тестирование сети. Первоначально я использовал те же channelID для genesis.block и channel.block, но я изменил его. Я прочитал несколько постов по этому поводу, но, кажется, ничто не решает мою проблему. Я надеюсь, что некоторые из вас могут помочь мне.


Это моя сетевая архитектура (я не использую TLS)

  • org1
    • peer0 ( Якорь )
    • peer1
    • orderer0
  • org2
    • peer0 ( якорь )
    • peer1
    • orderer0
  • org3
    • orderer0

Это содержимое моего configtx.yaml файла:

Capabilities:
  Global: &ChannelCapabilities
    V1_3: true
  Orderer: &OrdererCapabilities
    V1_1: true
  Application: &ApplicationCapabilities
    V1_3: true
Organizations:
- &org1
  Name: org1
  ID: org1MSP
  MSPDir: /data/orgs/org1/msp
  AdminPrincipal: Role.ADMIN
  Policies:
    Readers:
      Type: Signature
      Rule: "OR('org1MSP.member')"
    Writers:
      Type: Signature
      Rule: "OR('org1MSP.member')"
    Admins:
      Type: Signature
      Rule: "OR('org1MSP.admin')"
  AnchorPeers:
    - Host: peer0.org1
      Port: 7051
- &org2
  Name: org2
  ID: org2MSP
  MSPDir: /data/orgs/org2/msp
  AdminPrincipal: Role.ADMIN
  Policies:
    Readers:
      Type: Signature
      Rule: "OR('org2MSP.member')"
    Writers:
      Type: Signature
      Rule: "OR('org2MSP.member')"
    Admins:
      Type: Signature
      Rule: "OR('org2MSP.admin')"
  AnchorPeers:
    - Host: peer0.org2
      Port: 7051
- &org3
  Name: org3
  ID: org3MSP
  MSPDir: /data/orgs/org3/msp
  AdminPrincipal: Role.ADMIN
  Policies:
    Readers:
      Type: Signature
      Rule: "OR('org3MSP.member')"
    Writers:
      Type: Signature
      Rule: "OR('org3MSP.member')"
    Admins:
      Type: Signature
      Rule: "OR('org3MSP.admin')"
Orderer: &OrdererDefaults
  OrdererType: kafka
  Addresses:
    - orderer0.org1:7050
    - orderer0.org2:7050
    - orderer0.org3:7050
  BatchTimeout: 2s
  BatchSize:
    MaxMessageCount: 10
    AbsoluteMaxBytes: 98 MB
    PreferredMaxBytes: 512 KB
  MaxChannels: 0
  Kafka:
    Brokers:
      - bootstrap.kafka:9092
  Organizations:
      - *org1
      - *org2
      - *org3
  Policies:
    Readers:
      Type: ImplicitMeta
      Rule: "ANY Readers"
    Writers:
      Type: ImplicitMeta
      Rule: "ANY Writers"
    Admins:
      Type: ImplicitMeta
      Rule: "MAJORITY Admins"
    BlockValidation:
      Type: ImplicitMeta
      Rule: "ANY Writers"
  Capabilities:
    <<: *OrdererCapabilities
Channel: &ChannelDefaults
  Policies:
    Readers:
      Type: ImplicitMeta
      Rule: "ANY Readers"
    Writers:
      Type: ImplicitMeta
      Rule: "ANY Writers"
    Admins:
      Type: ImplicitMeta
      Rule: "MAJORITY Admins"
  Capabilities:
    <<: *ChannelCapabilities
Application: &ApplicationDefaults
  ACLs: &ACLsDefault
    lscc/ChaincodeExists: /Channel/Application/Readers
    lscc/GetDeploymentSpec: /Channel/Application/Readers
    lscc/GetChaincodeData: /Channel/Application/Readers
    lscc/GetInstantiatedChaincodes: /Channel/Application/Readers
    qscc/GetChainInfo: /Channel/Application/Readers
    qscc/GetBlockByNumber: /Channel/Application/Readers
    qscc/GetBlockByHash: /Channel/Application/Readers
    qscc/GetTransactionByID: /Channel/Application/Readers
    qscc/GetBlockByTxID: /Channel/Application/Readers
    cscc/GetConfigBlock: /Channel/Application/Readers
    cscc/GetConfigTree: /Channel/Application/Readers
    cscc/SimulateConfigTreeUpdate: /Channel/Application/Readers
    peer/Propose: /Channel/Application/Writers
    peer/ChaincodeToChaincode: /Channel/Application/Readers
    event/Block: /Channel/Application/Readers
    event/FilteredBlock: /Channel/Application/Readers
  Organizations:
  Policies: &ApplicationDefaultPolicies
    Readers:
      Type: ImplicitMeta
      Rule: "ANY Readers"
    Writers:
      Type: ImplicitMeta
      Rule: "ANY Writers"
    Admins:
      Type: ImplicitMeta
      Rule: "MAJORITY Admins"
  Capabilities:
    <<: *ApplicationCapabilities
Profiles:
  OrgsOrdererGenesis:
    <<: *ChannelDefaults
    Orderer:
      <<: *OrdererDefaults
      Organizations:
      - *org1
      - *org2
      - *org3
      Capabilities:
        <<: *OrdererCapabilities
    Application:
      <<: *ApplicationDefaults
      Organizations:
      - *org1
      - *org2
      - *org3
      Capabilities:
        <<: *ApplicationCapabilities
    Consortiums:
      SampleConsortium:
        Organizations:
        - *org1
        - *org2
  OrgsChannel:
    Capabilities:
      <<: *ChannelCapabilities
    Consortium: SampleConsortium
    Application:
      <<: *ApplicationDefaults
      Organizations:
      - *org1
      - *org2
      Capabilities:
        <<: *ApplicationCapabilities

1 Ответ

1 голос
/ 08 октября 2019

Самое вероятное, что происходит: сертификат, который вы пытаетесь использовать в качестве администратора, на самом деле не является администратором. Вещи, которые вы можете проверить и увидеть, где вы ошиблись:

  • В папке MSP, которую вы использовали для configtx.yaml (/ data / orgs / org1 / msp и / data / orgs / org2 / msp)эта папка является папкой на вашем компьютере (на самом деле это компьютер / контейнер, на котором выполняется команда configtxgen), в первую очередь вам необходимо проверить, правильно ли создается папка.
  • Есть ли сертификат на admincerts папка внутри папки MSP? Если у вас его нет, то у MSP нет администратора.
  • Еще одна вещь, о которой следует помнить, - это использовать постоянный том для «передачи» сертификатов, сгенерированных либо Fabric CA, cryptogen, либолюбой другой CA
  • Я точно знаю, что MSPDir работает с относительным путем к configtx.yaml. Я не знаю, работает ли он, используя абсолютный путь, который вы используете.

Еще одна вещь, которую вы можете сделать, чтобы проверить, какой сертификат используется для каждого MSP, - это извлечь последний блок конфигурации peer channel fetch config иconfigtxlator proto_decode --input <channel name>_config.block --type common.Block --output config.json и затем проверка этого файла JSON

...