Проблема с политикой одобрения в Fabric GO SDK

У меня есть тестовая сеть Hyperledger Fabric с 2 организациями, 3 одноранговыми узлами в org1 и 2 одноранговыми узлами в org2. Peer0 каждой организации является узловым узлом. Я хочу создать экземпляр чейнкода с политикой одобрения только с одной организацией: Org1, поэтому я указываю политику: «И ('org1MSP.member')».

Я установил чейнкод только на одноранговых узлах org1, потому что org2 не является индоссантом. Однако чейнкод не создает экземпляр, поскольку он отправляет предложение одноранговым узлам, находящимся в другой организации (org2).

Проблема в том, что у этих одноранговых узлов в org2 не установлен код цепочки, но... почему SDK отправляет запрос подтверждения одноранговым узлам, которые не относятся к политике подтверждения?

Вот мой конфигурационный файл, как видите, у меня есть только один одноранговый узел org1: https://gist.github.com/mtnieto/02dd17097de64a73bd627594056598ed

Я добавил в конфигурацию следующие функции, но они не работают.

channels:

  # multi-org test channel
  examplechannel:

    peers:
      peer0.org1.example.com:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
      peer1.org1.example.com:
        endorsingPeer: false
        chaincodeQuery: false
        ledgerQuery: true
        eventSource: true


      peer2.org1.example.com:
        endorsingPeer: false
        chaincodeQuery: false
        ledgerQuery: true
        eventSource: true

      peer0.org2.example.com:
        endorsingPeer: false
        chaincodeQuery: false
        ledgerQuery: true
        eventSource: true

      peer1.org2.example.com:
        endorsingPeer: false
        chaincodeQuery: false
        ledgerQuery: true
        eventSource: true

Журналы следующие:

"error": "Error creating Chaincode: sending deploy transaction proposal failed: Multiple errors occurred: - Transaction processing for endorser [peer0.org2.example.com:8051]: Endorser Client Status Code: (23) CHAINCODE_NAME_NOT_FOUND. Description: cannot get package for chaincode (examplecc:2) - Transaction processing for endorser [peer1.org2.example.com:6051]: Endorser Client Status Code: (23) CHAINCODE_NAME_NOT_FOUND. Description: cannot get package for chaincode (examplecc:2)"

Код для создания экземпляра чейнкода следующий. (На предыдущем этапе я уже установил чейнкод)

sdk, err = fabsdk.New(config.FromFile("config.yaml"))
    if err != nil {
        log.Errorf("Failed to create new SDK: ", err)
        return nil, err
    }

adminContext := sdk.Context("admin", "org1"))
// Org resource management client
orgResMgmt, err := resmgmt.New(adminContext)
if err != nil {
    log.Errorf("Failed to create resource management client %v: ", err)
    return nil, err

}


ccPolicy, err := cauthdsl.FromString(instantiateReq.EndorsmentPolicy)
if err != nil {
    log.Errorf(" Error parsing endorsment policy %v: ", err)
    return "", err
}   

instantiateRequest := resmgmt.InstantiateCCRequest{Name: instantiateReq.Name, Path: instantiateReq.Path, Version: instantiateReq.Version, Args: instantiateReq.Args, Policy: ccPolicy}

Это происходит, когда одноранговый узел обновляется до уровня привязки. Другими словами, если я не выполняю следующие команды на одноранговых узлах при инициализации сети, ошибка не возникает.

(в контексте peer0 org1)

peer channel update -o orderer0.example.com:7050 -c $CHANNEL_NAME --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -f ./channel-artifacts/org1MSPanchors.tx >&log.txt

в контексте peer0 org2

peer channel update -o orderer0.example.com:7050 -c $CHANNEL_NAME --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -f ./channel-artifacts/org2MSPanchors.tx >&log.txt

Можете ли вы поделиться кодом создания чейнкода? Это означает, что вы можете разорвать сеть и снова запустить сеть.

Risabh Sharma 18.07.2019 11:29
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
1
515
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ошибка в версии 1.4.1, организация, не являющаяся индоссантом, пытается выполнить lscc и подтвердить транзакцию.

Я обновил сеть до 1.4.2, и теперь кажется, что проблема исчезла.

Другие вопросы по теме