5.4.3.5 Key Trust Mode invoking chaincode API
For key trust mode DApp, when the off-BSN system invokes the chaincode functions via PCN gateway, it is required to include the call parameters in the request. The gateway will return the execution result from the chaincode.
1. Interface address:
https://PCNGatewayAddress/api/fabric/v1/node/reqChainCode
This interface will directly respond the result without waiting for the generation of blocks. Please use the interface “Retrieving transaction information” described in section 5.4.3.8 to check the status of a block generated based on transaction ID.
Note: After a participant has successfully joined in a DApp service, the participant can view and download the DApp’s configuration parameters which are used for off-BSN systems to connect to this DApp’s chaincodes, including the PCN gateway address and Dapp access keys, as shown below:

2. Call Method: POST
3. Signature Algorithm: required and refer to Section 5.4.3.1
4. Call parameters
No. | Field name | Field | Type | Required | Remarks |
---|---|---|---|---|---|
1 | Header | header | Map | Y | |
2 | Body | body | Map | Y | |
3 | Signature Value | mac | String | Y | |
Header | |||||
1 | user unique ID | userCode | String | Y | |
2 | DApp unique ID | appCode | String | Y | |
3 | User and DApp mapping ID | tId | String | N | |
Body | |||||
1 | user name | userName | String | N | |
random string | nonce | String | Y | Use 24 random byte array of the base64 encoding | |
1 | chainCode | chainCode | String | Y | |
2 | function name | funcName | String | Y | |
3 | Call parameters | args | String[] | N | |
4 | Transient data | transientData | Map |
N |
Example:
{"header":{"userCode":"USER0001202004161009309407413","appCode":"app0001202004161017141233920","tId":""},"mac":"MEQCICJpE1jfeJKtw/ZboVuKSLy2RmmSdkhrEVPGFJhm9IaIAiA/Qqs6RNz0ndSS4/AFSwBj7vC76Py1hXnqO5zMD9pNtA==","body":{"userName":"","nonce":"lgH7Ozfv6npqg9D3pSbq9c6o+rAcpa5D","chainCode":"cc_app0001202004161017141233920_00","funcName":"set","args":["{\"baseKey\":\"test2020048\",\"baseValue\":\"this is string \"}"],"transientData":{}}}
5. Response parameters
No. | Field name | Field | Type | Required | Remarks |
---|---|---|---|---|---|
1 | Header | header | Map | Y | |
2 | Body | body | Map | Y | |
3 | Signature Value | mac | String | Y | |
Header | |||||
1 | Response ID | code | int | Y | 0: authentication successful -1: authentication failed |
2 | Response Message | msg | String | N | if code=0 then can be null |
Body | |||||
1 | block information | blockInfo | blockInfo | N | If code is not 0, then leave blank |
2 | chaincode response result | ccRes | ccRes | N | If code is not 0, then leave blank |
blockInfo | |||||
1 | Transaction ID | txId | String | Y | |
2 | Block HASH | blockHash | String | N | On synchronous mode returns Block HASH |
3 | status value | status | Int | Y | Refer to the detailed transaction status description in 6.3.13 |
ccRes | |||||
1 | chaincode response status | ccCode | Int | Y | 200: Successful500: Failed |
2 | chaincode response result | ccData | Str | N | Actual chaincode response result |
Example:
{
"header": {
"code": 0,
"msg": "Transaction Successful"
},
"mac": "MEUCIQCBtfO1AfYkoJ2hIlp8CfKK1iuhVEAYkPY8YFRAdvPJlAIgDjSqYgwlORJRyF6KZPU/uC5Fx/DxXxu9VgKwU9+JhjU=",
"body": {
"blockInfo": {
"txId": "a144149150ee615a9d11c68485600f43dc2c3eb2a98d7b36de53a6b99e03c495",
"blockHash": "",
"status": 0
},
"ccRes": {
"ccCode": 200,
"ccData": "SUCCESS"
}
}
}