我正在尝试使用通过网关连接到结构网络后获得的合约对象来提交交易。 网关已成功建立,但在尝试使用 gateway.getNetwork() 方法时出现此错误:
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)
下面是给出错误的函数:
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)
}
尝试将发现链接到 false 并且 gateway.getNetwork() 和 network.getContract() 有效,但在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: []
}
连接配置文件.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/F53UHbfo8TAKBggqhkjOPQQDAjCBjDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEq\nMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0\nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQK\nExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZv\ncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+Nvy\nBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4E\nIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwID\nSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3\nuV1vWo+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/F53UHbfo8TAKBggqhkjOPQQDAjCBjDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEq\nMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0\nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQK\nExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZv\ncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+Nvy\nBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4E\nIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwID\nSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3\nuV1vWo+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/F53UHbfo8TAKBggqhkjOPQQDAjCBjDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xJDAiBgNVBAoTG2ZvcmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTEq\nMCgGA1UEAxMhdGxzY2EuZm9yZW5zaWMuZXZpZGVuY2UtdmF1bHQuY29tMB4XDTI0\nMDMxNjExNDQwMFoXDTM0MDMxNDExNDQwMFowgYwxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMSQwIgYDVQQK\nExtmb3JlbnNpYy5ldmlkZW5jZS12YXVsdC5jb20xKjAoBgNVBAMTIXRsc2NhLmZv\ncmVuc2ljLmV2aWRlbmNlLXZhdWx0LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABAJKJcH6bgEWHUJEN0JzhqPPRGCWM63OE5sGSX0q+/x43PLLl9sUNnJU+Nvy\nBJtLaf+JrgcIEm9WsZ/fNFnhCSOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4E\nIgQgh68K4UsHX54tW1ysP5biODfzu1YjaIzRjRMl2v2/Uz8wCgYIKoZIzj0EAwID\nSAAwRQIhAP8dojrgaYh6LD9dETiU4ZMmz2+Y7bfbpjyLpKA6TBOPAiBw09paJld3\nuV1vWo+zP/g8cWor7fEI8rPjz4SLw/3Rpw==\n-----END CERTIFICATE-----\n"]
},
"httpOptions": {
"verify": false
}
}
}
}
使用的 core.yaml 是文档中提供的默认文件,我基本上通过 docker compose 使用环境变量来编辑它。
撰写包含所有对等点配置的文件 点击进入文件
Configtx.yaml 文件 点击进入文件
我正在使用 2.5.6 二进制文件以及 2.5.6 图像。
对于 Hyperledger Fabric v2.4 及更高版本(包括 v2.5),您应该使用较新的 Fabric Gateway 客户端 API。旧版 SDK(针对 Fabric v2.2 及更早版本)不再受支持或主动维护。话虽如此,旧版 SDK 应该可以继续正常工作。
您的错误消息表明您使用的客户端身份没有访问该频道的权限。您需要确保在连接网关时配置正确的凭据。
在旧客户端中禁用服务发现意味着它需要在其本地连接配置文件中定义足够的节点(对等点和排序者)才能成功与 Fabric 网络进行交易。这包括足够多的节点来满足背书要求,以及提交背书交易的订购者。通常,客户端使用服务发现从任何网络对等方获取此信息。使用较新的 Fabric Gateway 客户端 API,这是不必要的,因为客户端只需要与单个网络对等点交互。