【问题标题】:Facing issue "DiscoveryService: basic error: failed constructing descriptor for chaincodes" while submitting transaction through Nodejs SDK通过 Nodejs SDK 提交事务时面临问题“DiscoveryService:基本错误:构建链码描述符失败”
【发布时间】:2021-01-08 17:31:21
【问题描述】:

我在 docker swarm 上运行 Fabric 网络。我能够通过 CLI 执行事务和查询,但在从 NodeJS SDK 调用事务时遇到此问题。我正在使用织物样本中提供的测试网络,并对其进行了一些补充。我正在使用默认的背书策略

{
"message": "DiscoveryService: basic error: failed constructing descriptor for chaincodes:<name:\"basic\" > ",
"stack": "Error: DiscoveryService: basic error: failed constructing descriptor for chaincodes:<name:\"basic\" > \n    at DiscoveryService.send (/usr/src/app/node_modules/fabric-common/lib/DiscoveryService.js:363:11)\n    at async ContractImpl.getDiscoveryHandler (/usr/src/app/node_modules/fabric-network/lib/contract.js:231:13)\n    at async Transaction.submit (/usr/src/app/node_modules/fabric-network/lib/transaction.js:190:43)\n    at async tx (/usr/src/app/tx.js:21:16)\n    at async /usr/src/app/app.js:34:18"}

和对等日志是

2021-01-08 16:46:44.687 UTC [comm.grpc.server] 1 -> INFO 0a0 unary call completed grpc.service=discovery.Discovery grpc.method=Discover grpc.peer_address=10.0.1.211:40120 grpc.peer_subject="CN=fabric-common" grpc.code=OK grpc.call_duration=549.379µs
2021-01-08 16:46:44.731 UTC [discovery] chaincodeQuery -> ERRO 0a1 Failed constructing descriptor for chaincode chaincodes:<name:"basic" > ,: no peer combination can satisfy the endorsement policy

这是我的连接配置文件:

{
"name": "test-network-org1",
"version": "1.0.0",
"client": {
    "organization": "Org1",
    "connection": {
        "timeout": {
            "peer": {
                "endorser": "300"
            }
        }
    }
},
"organizations": {
    "Org1MSP": {
        "mspid": "Org1MSP",
        "peers": [
            "peer0.org1.example.com"
        ],
        "certificateAuthorities": [
            "ca.org1.example.com"
        ]
    }
},
"peers": {
    "peer0.org1.example.com": {
        "url": "grpcs://peer0.org1.example.com:7051",
        "tlsCACerts": {
            "pem": "-----BEGIN CERTIFICATE-----\nMIICJjCCAc2gAwIBAgIUTVUhB44O0shRtEQRrWwSONwBVLswCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjEwMTA4MTAyNzAwWhcNMzYwMTA1MTAyNzAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfr\nnYwHd4KPh6A5VC7rEy/PBxGX/yb/MQe6S7JXCL1ceLRUa7JOsEaFRnqoVP0hGjWv\nnfRpu60xHEb5ypkRtGOjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBQuKfHt6oR9p2LQzzjPZE673W+FmDAKBggqhkjOPQQD\nAgNHADBEAiBMhPVZCDZ1oeGf5XFKBngc80Tt+MsPYIUzc7gzcttq2AIgQZsHm8dP\n2cWNHIeoLdNcJ3yZB6eem80QQj08GFzepjA=\n-----END CERTIFICATE-----\n"
        },
        "grpcOptions": {
            "ssl-target-name-override": "peer0.org1.example.com",
            "hostnameOverride": "peer0.org1.example.com"
        }
    }
},
"certificateAuthorities": {
    "ca.org1.example.com": {
        "url": "https://ca.org1.example.com:7054",
        "caName": "ca-org1",
        "tlsCACerts": {
            "pem": [
                "-----BEGIN CERTIFICATE-----\nMIICJjCCAc2gAwIBAgIUTVUhB44O0shRtEQRrWwSONwBVLswCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjEwMTA4MTAyNzAwWhcNMzYwMTA1MTAyNzAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfr\nnYwHd4KPh6A5VC7rEy/PBxGX/yb/MQe6S7JXCL1ceLRUa7JOsEaFRnqoVP0hGjWv\nnfRpu60xHEb5ypkRtGOjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBQuKfHt6oR9p2LQzzjPZE673W+FmDAKBggqhkjOPQQD\nAgNHADBEAiBMhPVZCDZ1oeGf5XFKBngc80Tt+MsPYIUzc7gzcttq2AIgQZsHm8dP\n2cWNHIeoLdNcJ3yZB6eem80QQj08GFzepjA=\n-----END CERTIFICATE-----\n"
            ]
        },
        "httpOptions": {
            "verify": false
        }
    }
}

}

我的 docker-compose 文件

这是 Nodejs 代码

const ccp = buildCCPOrg1();

const wallet = await buildWallet(Wallets, walletPath);
const gateway = new Gateway();

await gateway.connect(ccp, {
    wallet,
    identity: request.org1UserId,
    discovery: { enabled: true, asLocalhost: false },
});
console.log(gateway);
const network = await gateway.getNetwork(request.channelName);

const contract = network.getContract(request.chaincodeName);

var result = await contract.submitTransaction(
    "CreateAsset",
    Date.now().toString(),
    "yellow",
    "5",
    "Tom",
    "1300"
);

【问题讨论】:

    标签: hyperledger-fabric hyperledger hyperledger-fabric-sdk-js


    【解决方案1】:

    我找到了解决此错误的方法。就我而言,错误是由于锚点同行造成的。当我创建频道并加入频道时,我忘记更新锚节点。由于我的链码使用的是默认背书策略(我有 3 个 ORG 网络),这是 AND 策略。这就是我收到此错误的原因。

    锚节点用于跨组织通信,而我的锚节点没有其他组织的信息,因为它们在加入频道后没有更新。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 2019-07-24
      • 2012-01-15
      • 2019-08-30
      • 2017-11-18
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多