ENDORSEMENT_POLICY_FAILURE. Описание: получена недействительная транзакция - PullRequest
0 голосов
/ 04 июля 2019

Я работаю над вызовом транзакции с цепным кодом в Hyperledger Fabric Go SDK, но получаю сообщение об ошибке:

ENDORSEMENT_POLICY_FAILURE. Description: received invalid transaction

Я установил политику одобрения при создании цепного кода в виде двух Орг .

configtx.yaml

Organizations:

- &OrdererOrg
    Name: OrdererOrg
    ID: OrdererMSP
    MSPDir: crypto-config/ordererOrganizations/company.ledger.com/msp
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('OrdererMSP.member')"
        Writers:
            Type: Signature
            Rule: "OR('OrdererMSP.member')"
        Admins:
            Type: Signature
            Rule: "OR('OrdererMSP.admin')"

- &Org1
    Name: Org1MSP
    ID: Org1MSP
    MSPDir: crypto-config/peerOrganizations/org1.company.ledger.com/msp
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
        Writers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.peer')"
        Admins:
            Type: Signature
            Rule: "OR('Org1MSP.admin')"
        Endorsement:
            Type: Signature
            Rule: "OR('Org1MSP.peer', 'Org1MSP.member')" 
    AnchorPeers:
        - Host: peer0.org1.company.ledger.com
          Port: 7051

- &Org2
    Name: Org2MSP
    ID: Org2MSP
    MSPDir: crypto-config/peerOrganizations/org2.company.ledger.com/msp
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"
        Writers:
            Type: Signature
            Rule: "OR('Org2MSP.admin', 'Org2MSP.peer')"
        Admins:
            Type: Signature
            Rule: "OR('Org2MSP.admin')"
        Endorsement:
            Type: Signature
            Rule: "OR('Org2MSP.peer', 'Org2MSP.member')"    

    AnchorPeers:
        - Host: peer0.org2.company.ledger.com
          Port: 9051

Capabilities:
   Channel: &ChannelCapabilities
      V1_3: true

   Orderer: &OrdererCapabilities
      V1_1: true

   Application: &ApplicationCapabilities
      V1_3: true
      V1_2: false
      V1_1: false

Application: &ApplicationDefaults

   Organizations:

      Policies:
         Readers:
           Type: ImplicitMeta
           Rule: "ANY Readers"
         Writers:
           Type: ImplicitMeta
           Rule: "ANY Writers"
         Admins:
           Type: ImplicitMeta
           Rule: "MAJORITY Admins"

  Capabilities:
      <<: *ApplicationCapabilities

Orderer: &OrdererDefaults

    OrdererType: solo
       Addresses:
         - orderer.company.ledger.com:7050

       BatchTimeout: 2s

       BatchSize:

       MaxMessageCount: 10

       AbsoluteMaxBytes: 99 MB

       PreferredMaxBytes: 512 KB

   Kafka:
      Brokers:
         - 127.0.0.1:9092

 Organizations:

   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"


Channel: &ChannelDefaults

   Policies:
      Readers:
         Type: ImplicitMeta
         Rule: "ANY Readers"
      Writers:
         Type: ImplicitMeta
         Rule: "ANY Writers"
      Admins:
         Type: ImplicitMeta
         Rule: "MAJORITY Admins"

  Capabilities:
    <<: *ChannelCapabilities


Profiles:

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

код цепочки

ccPolicy := cauthdsl.SignedByAnyPeer([]string{"AND ('Org1MSP.peer', 'Org2MSP.peer')"})

resp, err := resMgmt.InstantiateCC(
    setup.Org.ChannelID,
    resmgmt.InstantiateCCRequest{
        Name:    chaincodeId,
        Path:    setup.Org.ChaincodeGoPath,
        Version: setup.Org.OrgChaincodeVersion,
        Args:    [][]byte{[]byte("init")},
        Policy:  ccPolicy,
    },resmgmt.WithRetry(retry.DefaultChannelOpts),resmgmt.WithTargets(setup.Org.OrgPeers[0]))

вызов цепочки

response, err := channelClient.Execute(channel.Request{

        ChaincodeID: chaincodeId, 
        Fcn: fcnName, 
        Args: args, 
        TransientMap: transientDataMap,
},channel.WithRetry(retry.DefaultChannelOpts),channel.WithTargetEndpoints("grpcs://localhost:7051", "grpcs://localhost:9051"))

Создание цепочки успешно завершено, и я вижу цепочечный код в контейнерах докеров обоих пиров, но при вызове данных в цепочку я получаю ENDORSEMENT_POLICY_FAILURE ошибка.

есть ли еще политика, мне нужно установить? Пожалуйста, предложите мне какое-нибудь решение, что я делаю не так?

...