【问题标题】:Choose only endorsing peers when performing query transaction - Node SDK执行查询交易时仅选择背书节点 - Node SDK
【发布时间】:2019-10-18 13:57:46
【问题描述】:

有没有办法在调用contract.evaluateTransaction() 时调用setEndorsingPeers()? 还有其他方法可以实现吗? 我遇到的问题如下:

我有两个组织,每个组织都有两个对等点:peer0peer1。 但是,只有节点 peer0 是背书节点。因此,在查询状态时,有时事务会到达对等点 peer1 并抛出 Error。 我在Querying chaincode is only successful in ~3/5 cases with nodejs 找到了一种解决方法,但这需要我将所有同行提升为支持同行。 我只提交同行的方法是否有效和正确? 先感谢您。

附:没有人在另一个线程上响应,我相信这是一个有效的单独问题,其解决方案不是那种解决方法。

【问题讨论】:

  • 我建议您在 jira.hyperledger.org 上提出有关此问题的 jira。如果您不使用发现,那么您的连接配置文件可以定义对等点的角色,并且默认查询处理程序将仅选择具有chaincodeQuery 角色的对等点(请注意,除非已定义对等点将具有所有角色)。如果您使用发现,则默认情况下对等方将拥有所有角色,除非它们可以被覆盖(不知道这一点)。或者,您可以编写自己的查询处理程序,只要您可以确定要查询的对等点(例如,通过检查发现结果,但可能需要另一个 jira)
  • @david_k 我在哪里可以找到有关查询处理程序和链码查询的文档?

标签: node.js hyperledger-fabric blockchain ibm-blockchain


【解决方案1】:

我遇到了同样的问题。以下是我的解决方案。

1) 在连接配置文件上,确保设置哪个对等方是背书者/提交者:

    "channels": {
    "mychannel": {
        "orderers": [],
        "peers": {
            "peer0.example.com": {
                "endorsingPeer": true,
                "chaincodeQuery": true,
                "ledgerQuery": true,
                "eventSource": true
            },
            "peer1.example.com": {
                "endorsingPeer": false,
                "chaincodeQuery": false,
                "ledgerQuery": false,
                "eventSource": true
            }
        },
        "chaincodes": []
    }
},

2)使用fabric-network SDK查询:link

我希望这会有所帮助。

【讨论】:

  • 我应该在哪里插入这个 JSON?每次创建网关连接时?
  • 是的,这个cpp可以先创建,每次你想创建一个新的网关时添加到gateway.connect()。您可以找到连接配置文件示例here
猜你喜欢
  • 2019-11-13
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多