Политика одобрения Hyperledger и ошибка при вызове цепного кода (без обновления книги)

#hyperledger-fabric #hyperledger

Вопрос:

Я использую Hyperledger Fabric 1.4.8

Я развернул цепной код, используя следующие команды:

 peer chaincode install -n davidcodeEndorseAnd -v vAlfaBeta1 -p github.com/chaincode/chaincode_example02/go/

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n davidcodeEndorseAnd -v vAlfaBeta1 -c '{"Args":["init","a","0","b","10000"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
 

Параметр одобрения: И («Одноранговый узел Org1MSP»,»одноранговый узел Org2MSP»).

Когда я пытаюсь вызвать цепной код с помощью следующей команды, я получаю ответ 200, но значение не обновляется:

 peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C mychannel -n davidcodeEndorseAnd  -c '{"Args":["invoke","a","b","900"]}
 

Результат выполнения:

 root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","a"]}'
0

root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C mychannel -n davidcodeEndorseAnd -c '{"Args":["invoke","b","a","900"]}'
2021-07-28 19:55:55.757 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 

root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","a"]}'
0
 

Примечание: Я использую образец кода цепочки образцов ткани: /образцы ткани/код цепочки/chaincode_example02/go

Я попытался выполнить следующую команду вызова, но безуспешно:

 peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n davidcodeEndorseAnd --peerAddresses peer0.org1.example.com:7051 --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --tlsRootCertFiles "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"Args":["invoke","a","b","100"]}'
 

Результат выполнения:

 Error: error sending transaction for invoke: could not send: EOF - proposal response: version:1 response:<status:200 > payload:"n 14IU17b3633522260301%347 32sv264s25623204z17251210163472733543573563532222101ng22@n23davidcodeEndorseAnd22)n07n01a22021016n07n01b2202101632tn01a3204-10032nn01b32051010022#n04lscc2233n31n23davidcodeEndorseAnd2202101632031031001"!2223davidcodeEndorseAnd32nvAlfaBeta1" endorsement:<endorser:"n07Org1MSP2225206-----BEGIN CERTIFICATE-----nMIICKDCCAc6gAwIBAgIQWdbqnSydfjum3L3K 6YISTAKBggqhkjOPQQDAjBzMQswnCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZynYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eunb3JnMS5leGFtcGxlLmNvbTAeFw0yMTA3MjgxNzU2MDBaFw0zMTA3MjYxNzU2MDBanMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TnYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcxnLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkcU5Enp3gweinAM4r7IHPbIjaEI AH tM2teIZDHGJGDjeBtjA/vLSH2ngb/9H9DiG2agKmTHJsifnHxppCcUuJqNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jnBCQwIoAgnaRyyHIgBgevWkF1kAgjunZH1joAPFpRTZ2gy X2RLIwCgYIKoZIzj0EnAwIDSAAwRQIhAOyZZ sdZg S HgyRqg7lO716OYc59/Yc9Iuabvs h7ZAiBFIN2Jn3894dwxHteNaD9 FF6HNklKt9tWPnKdJ4szuOQ==n-----END CERTIFICATE-----n" signature:"0D02 :252206j`345217362:233330262313325201367245q3311426417Z303722J2762455n02 t9227AW-M31124200324242E30026w00enJN340253vR316*2042309Z202" > 
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# 
 

Ответ №1:

Мне успешно удалось обновить бухгалтерскую книгу:

Вывод выполнения в соответствии с Org1:

 root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","a"]}'
-10
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n davidcodeEndorseAnd --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","b","a","100"]}' 
2021-07-28 20:17:56.431 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","a"]}'
90
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# 
 

Выполнение запроса в рамках Org2:

 root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","a"]}'
90
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n davidcodeEndorseAnd -c '{"Args":["query","b"]}'
9910
root@50179e3b3e32:/opt/gopath/src/github.com/hyperledger/fabric/peer# 
 

Проблема заключалась в том, что я пропустил следующий параметр для упорядочителя команды invoke:

 --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem