Ошибка при вызове цепного кода: набор подписей не удовлетворяет политике - PullRequest
0 голосов
/ 06 марта 2019

У меня есть небольшая сеть в Hyperledger Fabric 1.4, которая очень похожа на базовую сеть из примеров.Он имеет:

Одна организация-заказчик с партнером-заказчиком Одна организация-больница с двумя партнерами.Единственный канал, на котором находятся пэры больницы.

Я попытался написать очень простой демонстрационный умный контракт / цепной код и вызвать его.(Интеллектуальный контракт называется bananascc)

При запуске из док-контейнера cli / bin / bash, связанного с одноранговым узлом peer0.hospital1.health.com, я успешно установил и создал:

peer chaincode install -n bananascc -v 1.0 -l node -p /opt/gopath/src/github.com/chaincode/chaincode_bananas/node

peer chaincode instantiate -o orderer.health.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/health.com/orderers/orderer.health.com/msp/tlscacerts/tlsca.health.com-cert.pem -C hospital1channel -n bananascc -l node -v 1.0 -c '{"Args":["init","edo","100"]}' -P "OR ('Hospital1MSP.admin', 'Hospital1MSP.peer' )"

С политикой -P "OR ('Hospital1MSP.admin', 'Hospital1MSP.peer' )"

Но когда я пытаюсь вызвать цепной код, транзакция успешно отправляется, но операция не выполняется, так как я получаю

peer0.hospital1.health.com    | 2019-03-06 10:36:44.525 UTC [vscc] Validate -> ERRO 07e VSCC error: stateBasedValidator.Validate failed, err validation of endorsement policy for chaincode bananascc in tx 6:0 failed: signature set did not satisfy policy

peer0.hospital1.health.com    | 2019-03-06 10:36:44.525 UTC [committer.txvalidator] validateTx -> ERRO 07f VSCCValidateTx for transaction txId = d6726e0b2daf11d0e3ef24e86fa0e7a5530f2d98dcc4ad1f0d266ca642be1ee3 returned error: validation of endorsement policy for chaincode bananascc in tx 6:0 failed: signature set did not satisfy policy

Я считаю, чтотранзакция должна быть оценена по действительному набору подписей, но я не могу понять, где я могу указать это или почему это должно быть неправильно в соответствии с VSCC.

Я был бы очень рад, если бы кто-нибудь мог мне помочьВычислять.Я уже широко искал ответ, которого не нашел.

Дайте мне знать, если вам нужна другая информация по этому вопросу.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Если существует только одна организация, не имеет смысла в необходимости политики (используется только между организациями), поэтому я удалил и она заработала!

Моя строка кода:

peer chaincode instantiate -o orderer.orgX.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -l ${LANGUAGE} -v 1.0 -c '{"Args":["init","a","100","b","200"]}'  >&log.txt
0 голосов
/ 06 марта 2019

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

Можете ли вы просто поменять объявление на:

peer chaincode instantiate -o orderer.health.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/health.com/orderers/orderer.health.com/msp/tlscacerts/tlsca.health.com-cert.pem -C hospital1channel -n bananascc -l node -v 1.0 -c '{"Args":["init","edo","100"]}' -P "OR ('Hospital1MSP.peer','Hospital1MSP.admin')"

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

Читайте здесь: https://hyperledger -fabric.readthedocs.io / en / release-1.4 /icies.html

...