Getting error while invoking golang chaincode

41 views Asked by At

I written following a hyperledger chaincode. I am storing medicine details in public state & order details in private state. Inside this contract I am getting medicine details, order details, validate both, change ownership of medicine & then delete it from private collection.

func (c *MedicineContract) HandOver(ctx contractapi.TransactionContextInterface, medicineId, orderId, currentOwner, newOwner string) error {

    var dataBytes []byte
    var err error

    medicine, err := c.GetMedicine(ctx, medicineId)
    if err != nil {
        log.Println(err.Error())
        return nil
    }

    if medicine.OwnedBy != currentOwner {
        log.Printf("%v is not owner of this medicine, medicine owned by %v\n", currentOwner, medicine.OwnedBy)
        return fmt.Errorf("%v is not owner of this medicine, medicine owned by %v", currentOwner, medicine.OwnedBy)
    }

    log.Printf("medicine found for Id:%v and owned by %v\n", medicineId, medicine.OwnedBy)

    dataBytes, err = ctx.GetStub().GetPrivateDataHash(constant.OrderCollection, orderId)
    if err != nil {
        log.Println(err.Error())
        return nil
    }

    if len(dataBytes) <= 0 {
        log.Printf("empty hash found for orderId %v, dataBytes:%v", orderId, string(dataBytes))
        return fmt.Errorf("empty hash found for orderId %v, dataBytes:%v", orderId, string(dataBytes))
    }
    log.Println("orderdetails hash found for order: ", orderId)

    dataBytes, err = ctx.GetStub().GetPrivateData(constant.OrderCollection, orderId)
    if err != nil {
        log.Println(err.Error())
        return nil
    }

    if len(dataBytes) <= 0 {
        log.Printf("empty data found for orderId %v, dataBytes:%v", orderId, string(dataBytes))
        return fmt.Errorf("empty hash found for orderId %v, dataBytes:%v", orderId, string(dataBytes))
    }
    log.Println("details found for order: ", orderId)

    var order model.Order
    err = json.Unmarshal(dataBytes, &order)
    if err != nil {
        log.Println(err.Error())
        return nil
    }

    if order.MedicineID != medicine.Id {
        log.Printf("medicineId is diffent in order, medicineId:%v order having medicineId %v\n", medicineId, order.MedicineID)
        return err
    }

    if order.CreatedBy != newOwner {
        log.Printf("order is not created by %v, order is created by %v\n", newOwner, order.CreatedBy)
        return fmt.Errorf("order is not created by %v, order is created by %v", newOwner, order.CreatedBy)
    }

    medicine.OwnedBy = newOwner

    dataBytes, err = json.Marshal(medicine)
    if err != nil {
        log.Println(err.Error())
        return err
    }

    err = ctx.GetStub().PutState(medicineId, dataBytes)
    if err != nil {
        log.Println(err.Error())
        return err
    }
    log.Println("medicine details updated in statedb")

    err = ctx.GetStub().DelPrivateData(constant.OrderCollection, orderId)
    if err != nil {
        log.Println(err.Error())
        return err
    }
    log.Println("order details deleted from collectiondb")

    return nil
}

I am using minifab for invoking this contract. command I am using is minifab invoke -n KBA-Pharma -p '"HandOver","m01","ord01","producer-pharma-com","supplier-pharma-com"' -o "producer.pharma.com"

But I am getting error in response.

Minifab Execution Context:
    FABRIC_RELEASE=2.4.8
    CHANNEL_NAME=pharmachannel
    PEER_DATABASE_TYPE=couchdb
    CHAINCODE_LANGUAGE=go
    CHAINCODE_NAME=KBA-Pharma
    CHAINCODE_VERSION=2.0
    CHAINCODE_INIT_REQUIRED=false
    CHAINCODE_PARAMETERS="HandOver","m01","ord01","producer-pharma-com","supplier-pharma-com"
    CHAINCODE_PRIVATE=true
    CHAINCODE_POLICY=
    TRANSIENT_DATA={"ID":"b3JkMDE=","CreatedBy":"c3VwcGxpZXItcGhhcm1hLWNvbQ==","Producer":"cHJvZHVjZXItcGhhcm1hLWNvbQ==","CreatedAt":"MjIvMTAvMjAyMw==","MedicineID":"bTAx"}
    BLOCK_NUMBER=newest
    EXPOSE_ENDPOINTS=true
    CURRENT_ORG=producer.pharma.com
    HOST_ADDRESSES=179.100.0.2
    TARGET_ENV=DOCKER
    WORKING_DIRECTORY: /workspaces/kba/kba-pharma/deployment/minifab
.....
# Preparing for the following operations: *********************
  verify options, cc invoke
.......
# Running operation: ******************************************
  verify options
..
# Running operation: ******************************************
  cc invoke
..............
# Run the chaincode invoke script on cli container ************
  non-zero return code
  Error: could not assemble transaction: ProposalResponsePayloads do not match (base64): 'CiDbHCRxlJhQR4CqB0bVMaL5Zn2M0mj+SN/o0KoMhERRShL2AgrbAhJdCgpLQkEtUGhhcm1hEgsKCQoDbTAxEgIIChpCChZPcmRlckRldGFpbHNDb2xsZWN0aW9uEigKJgogCv20WWr9y/NadOJgs+YxxnzGdN6cpgEj4s0BUC0b1lkSAggLEvkBCgpfbGlmZWN5Y2xlEuoBCi4KKG5hbWVzcGFjZXMvZmllbGRzL0tCQS1QaGFybWEvQ29sbGVjdGlvbnMSAggJCjIKLG5hbWVzcGFjZXMvZmllbGRzL0tCQS1QaGFybWEvRW5kb3JzZW1lbnRJbmZvEgIICQorCiVuYW1lc3BhY2VzL2ZpZWxkcy9LQkEtUGhhcm1hL1NlcXVlbmNlEgIICQoxCituYW1lc3BhY2VzL2ZpZWxkcy9LQkEtUGhhcm1hL1ZhbGlkYXRpb25JbmZvEgIICQokCh5uYW1lc3BhY2VzL21ldGFkYXRhL0tCQS1QaGFybWESAggJGgMIyAEiERIKS0JBLVBoYXJtYRoDMi4w' vs 'CiDbHCRxlJhQR4CqB0bVMaL5Zn2M0mj+SN/o0KoMhERRShLzBArYBBLZAgoKS0JBLVBoYXJtYRK9AQoJCgNtMDESAggKGq8BCgNtMDEapwF7ImlkIjoibTAxIiwiZG9jdHlwZSI6Im1lZGljaW5lIiwic3RhdHVzIjoiY3JlYXRlZCBieSBwcm9kdWNlciIsInByb2R1Y2VyIjoicHJvZHVjZXItcGhhcm1hLWNvbSIsIm93bmVkYnkiOiJzdXBwbGllci1waGFybWEtY29tIiwicXVhbnRpdHkiOjEsImNyZWF0ZWRhdCI6IjIyLzA0LzIwMjMifRqKAQoWT3JkZXJEZXRhaWxzQ29sbGVjdGlvbhJOCiYKIAr9tFlq/cvzWnTiYLPmMcZ8xnTenKYBI+LNAVAtG9ZZEgIICxIkCiAK/bRZav3L81p04mCz5jHGfMZ03pymASPizQFQLRvWWRABGiDMsXUgHzK31EKxS5I35kIl/nrO/gOdq7xar3mIsP5c6BL5AQoKX2xpZmVjeWNsZRLqAQouCihuYW1lc3BhY2VzL2ZpZWxkcy9LQkEtUGhhcm1hL0NvbGxlY3Rpb25zEgIICQoyCixuYW1lc3BhY2VzL2ZpZWxkcy9LQkEtUGhhcm1hL0VuZG9yc2VtZW50SW5mbxICCAkKKwolbmFtZXNwYWNlcy9maWVsZHMvS0JBLVBoYXJtYS9TZXF1ZW5jZRICCAkKMQorbmFtZXNwYWNlcy9maWVsZHMvS0JBLVBoYXJtYS9WYWxpZGF0aW9uSW5mbxICCAkKJAoebmFtZXNwYWNlcy9tZXRhZGF0YS9LQkEtUGhhcm1hEgIICRoDCMgBIhESCktCQS1QaGFybWEaAzIuMA==' - proposal response: version:1 response:<status:200 > payload:"\n \333\034$q\224\230PG\200\252\007F\3251\242\371f}\214\322h\376H\337\350\320\252\014\204DQJ\022\363\004\n\330\004\022\331\002\n\nKBA-Pharma\022\275\001\n\t\n\003m01\022\002\010\n\032\257\001\n\003m01\032\247\001{\"id\":\"m01\",\"doctype\":\"medicine\",\"status\":\"created by producer\",\"producer\":\"producer-pharma-com\",\"ownedby\":\"supplier-pharma-com\",\"quantity\":1,\"createdat\":\"22/04/2023\"}\032\212\001\n\026OrderDetailsCollection\022N\n&\n \n\375\264Yj\375\313\363Zt\342`\263\3461\306|\306t\336\234\246\001#\342\315\001P-\033\326Y\022\002\010\013\022$\n \n\375\264Yj\375\313\363Zt\342`\263\3461\306|\306t\336\234\246\001#\342\315\001P-\033\326Y\020\001\032 \314\261u \0372\267\324B\261K\2227\346B%\376z\316\376\003\235\253\274Z\257y\210\260\376\\\350\022\371\001\n\n_lifecycle\022\352\001\n.\n(namespaces/fields/KBA-Pharma/Collections\022\002\010\t\n2\n,namespaces/fields/KBA-Pharma/EndorsementInfo\022\002\010\t\n+\n%namespaces/fields/KBA-Pharma/Sequence\022\002\010\t\n1\n+namespaces/fields/KBA-Pharma/ValidationInfo\022\002\010\t\n$\n\036namespaces/metadata/KBA-Pharma\022\002\010\t\032\003\010\310\001\"\021\022\nKBA-Pharma\032\0032.0" endorsement:<endorser:"\n\023supplier-pharma-com\022\240\007-----BEGIN CERTIFICATE-----\nMIICfzCCAiagAwIBAgIUBgXwK6Q0EClfj6wtDPtIkPCdat4wCgYIKoZIzj0EAwIw\neDELMAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYDVQQH\nDAdSYWxlaWdoMRwwGgYDVQQKDBNzdXBwbGllci5waGFybWEuY29tMSAwHgYDVQQD\nDBdjYTEuc3VwcGxpZXIucGhhcm1hLmNvbTAeFw0yMzExMTEwNjEyNTlaFw0zMzA4\nMTAwNjEyNTlaMGsxCzAJBgNVBAYTAlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTEQMA4GA1UEBwwHUmFsZWlnaDENMAsGA1UECwwEcGVlcjEiMCAGA1UEAwwZcGVl\ncjEuc3VwcGxpZXIucGhhcm1hLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBPOyW9Q0KsQSUfBNIUsB0X7MOqe/GD2Gbjm4hT1dj5m2nlNC9DwwGMcXwH0ACrse\nhu5VuaHdR9QXdiAGYQOFc2KjgZowgZcwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB\n/wQCMAAwVgYDVR0RBE8wTYcEs2QAAoIZcGVlcjEuc3VwcGxpZXIucGhhcm1hLmNv\nbYIZcGVlcjEtc3VwcGxpZXItcGhhcm1hLWNvbYIJbG9jYWxob3N0hwR/AAABMB8G\nA1UdIwQYMBaAFM5n1lKBZAWv++pxUno+82alMD+XMAoGCCqGSM49BAMCA0cAMEQC\nID9XQuDPJVRcjnJeG3NlcqdyAvKUR3kjYkFUt46wSHNeAiAD+X1c/vmMqKcXW0vz\nGHroY3UsENa0xiLL1ypRNUr7XA==\n-----END CERTIFICATE-----\n" signature:"0E\002!\000\333\361E\367`W\275\361\271\032\322;\237\246j.\307\336\305\212\245\321\\\331\035K\036\2103\343|-\002 x\r\016\237NGx\202\250(\371O\003\004\261\235PU\037\332\256\316J\356\\\005\234\346\307\005\220P" > interest:<chaincodes:<name:"KBA-Pharma" collection_names:"OrderDetailsCollection" > chaincodes:<name:"KBA-Pharma" > >

# STATS *******************************************************
minifab: ok=32  failed=1

real    0m6.336s
user    0m5.745s
sys     0m0.768s

But when I checked logs of dev-peer1 container, all logs are success logs as I am sharing bellow:

2023/11/11 06:18:58 Medicine.go:267: medicine found for Id:m01 and owned by producer-pharma-com
2023/11/11 06:18:58 Medicine.go:279: orderdetails hash found for order:  ord01
2023/11/11 06:18:58 Medicine.go:291: details found for order:  ord01
2023/11/11 06:18:58 Medicine.go:323: medicine details updated in statedb
2023/11/11 06:18:58 Medicine.go:330: order details deleted from collectiondb

What could be reason of this?

I am expecting successfully committing of data & changing ownership inside worldstate

0

There are 0 answers