I am trying to submit a transaction using the contract object of the which is obtained after connecting to the fabric network through the gateway.
Gateway is being established successfully but when trying to use gateway.getNetwork() method gives out this error:
2024-04-24T14:55:04.414Z - error: [DiscoveryResultsProcessor]: parseDiscoveryResults[mainchannel] - Channel:mainchannel received discovery error:access denied
/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-common/lib/DiscoveryResultsProcessor.js:31
throw Error(`DiscoveryService: ${this.service.name} error: ${result.error.content}`);
^
Error: DiscoveryService: mainchannel error: access denied
at DiscoveryResultsProcessor.parseDiscoveryResults (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-common/lib/DiscoveryResultsProcessor.js:31:11)
at DiscoveryService.send (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-common/lib/DiscoveryService.js:341:35)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async NetworkImpl._initializeInternalChannel (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/network.js:303:13)
at async NetworkImpl._initialize (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/network.js:253:9)
at async Gateway.getNetwork (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/gateway.js:355:9)
at async connection (/home/kshitij/Desktop/api/fabric-test-task/server.js:133:21)
at async main (/home/kshitij/Desktop/api/fabric-test-task/server.js:168:5)
Below is the function which is giving out the error:
const connection = async (ccp, wallet, userName) => {
const gateway = new Gateway()
await gateway.connect(ccp, {
wallet,
identity: userName,
discovery: { enabled: true, asLocalhost: true } // using asLocalhost as this gateway is using a fabric network deployed locally
});
const network = await gateway.getNetwork(process.env.CHANNEL);
console.log(network)
// Get the contract from the network.
// const contract = network.getContract(process.env.CONTRACT);
// console.log(contract)
// const result = await contract.submitTransaction('CreateEvidence', "xyxyx", userName, "100", "Hacking", "xss.png", "png", "zzzzz")
// console.log(result)
}
Tried chainging the discovery to false and the gateway.getNetwork() and network.getContract() worked but produced below error at contract.submitTransaction()
2024-04-24T15:05:50.716Z - error: [Transaction]: Error: No valid responses from any peers. Errors:
at newEndorsementError (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:77:12)
at getResponsePayload (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:45:23)
at Transaction.submit (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:258:28)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async connection (/home/kshitij/Desktop/api/fabric-test-task/server.js:140:20)
at async main (/home/kshitij/Desktop/api/fabric-test-task/server.js:168:5)
node:internal/process/promises:289
triggerUncaughtException(err, true /* fromPromise */);
^
Error: No valid responses from any peers. Errors:
at newEndorsementError (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:77:12)
at getResponsePayload (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:45:23)
at Transaction.submit (/home/kshitij/Desktop/api/fabric-test-task/node_modules/fabric-network/lib/transaction.js:258:28)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async connection (/home/kshitij/Desktop/api/fabric-test-task/server.js:140:20)
at async main (/home/kshitij/Desktop/api/fabric-test-task/server.js:168:5) {
responses: [],
errors: []
}
the connection-profile.json
{
"name": "EvidenceVault-Forensic",
"version": "1.0.0",
"client": {
"organization": "Forensic",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
}
}
}
},
"organizations": {
"Police": {
"mspid": "ForensicMSP",
"peers": [
"FD100.forensic.evidence-vault.com",
"FD101.forensic.evidence-vault.com"
],
"certificateAuthorities": [
"ca.forensic.evidence-vault.com"
]
}
},
"peers": {
"FD100.forensic.evidence-vault.com": {
"url": "grpcs://localhost:9051",
"tlsCACerts": {
"pem": "-----BEGIN CERTIFICATE-----nMIIChTCCAiugAwIBAgIQTBZ9jk14oHC/F53UHbfo8TAKBggqhkjOPQQDAjCBjDELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEqnMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYDnVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQKnExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZvncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHnA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+NvynBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEnFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EnIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwIDnSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3nuV1vWo+zP/g8cWor7fEI8rPjz4SLw/3Rpw==n-----END CERTIFICATE-----n"
},
"grpcOptions": {
"ssl-target-name-override": "FD100.forensic.evidence-vault.com",
"hostnameOverride": "FD100.forensic.evidence-vault.com"
}
},
"FD101.forensic.evidence-vault.com": {
"url": "grpcs://localhost:10051",
"tlsCACerts": {
"pem": "-----BEGIN CERTIFICATE-----nMIIChTCCAiugAwIBAgIQTBZ9jk14oHC/F53UHbfo8TAKBggqhkjOPQQDAjCBjDELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEqnMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYDnVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQKnExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZvncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHnA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+NvynBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEnFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EnIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwIDnSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3nuV1vWo+zP/g8cWor7fEI8rPjz4SLw/3Rpw==n-----END CERTIFICATE-----n"
},
"grpcOptions": {
"ssl-target-name-override": "FD101.forensic.evidence-vault.com",
"hostnameOverride": "FD101.forensic.evidence-vault.com"
}
}
},
"certificateAuthorities": {
"ca.forensic.evidence-vault.com": {
"url": "https://localhost:8054",
"caName": "ca.forensic.evidence-vault.com",
"tlsCACerts": {
"pem": ["-----BEGIN CERTIFICATE-----nMIIChTCCAiugAwIBAgIQTBZ9jk14oHC/F53UHbfo8TAKBggqhkjOPQQDAjCBjDELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEqnMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYDnVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQKnExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZvncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHnA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+NvynBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEnFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EnIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwIDnSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3nuV1vWo+zP/g8cWor7fEI8rPjz4SLw/3Rpw==n-----END CERTIFICATE-----n"]
},
"httpOptions": {
"verify": false
}
}
}
}
the core.yaml which is ued is the default one provided in the documentation, i basically edit it using environmental variables through docker compose.
compose file containing configuartion for all the peers
Click to go to the file
Configtx.yaml file
Click to go the file
I am using 2.5.6 binaries as well as 2.5.6 images.
Kshitij Sonawane is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.