【问题标题】:Bluemix blockchain: How can i query out this?Bluemix 区块链:我如何查询这个?
【发布时间】:2024-01-07 20:36:01
【问题描述】:

当我初始化这个时,我需要知道如何查询以下调用(AC(123456A)或(user_type1_c19a5f0b7e):

   {
        "jsonrpc": "2.0",
        "method": "deploy",
        "params": {
            "type": 1,
            "chaincodeID": {
                "path": "https://github.com/johndoe/learn-chaincode/finished"
            },
            "ctorMsg": {
                "function": "init",
                "args": [
                    "hi there"
                ]
            },
            "secureContext": "user_type1_191b8c2993"
        },
        "id": 1
    }

这是我的(成功的)调用:

{
    "jsonrpc": "2.0",
    "method": "invoke",
    "params": {
        "type": 1,
        "chaincodeID": {
            "name": "b42b506c13fg1157520d585841a691f4b598d9aac53adc95277ed710c7f1f5aaa59a89a8dca8ddf3e46d5241562f3316956a04ad8a33181d30cb01b1c4c9adb2f"
        },
        "ctorMsg": {
            "function": "AC(123456A)",
            "args": [
               "AcctId:949392949233 ","Year2015 Sem1 ", "IT1234:A ", " IT2345:B+ ", "IT3456:A ", "Year 2015 Sem2 ", "IT4567:B ", "IT5678: B", "IT5678:A ","Year 2016 Sem1 ", "IT6789:C ", "IT7890:C ", "Cumulative GPA: 3"

            ]
        },
        "secureContext": "user_type1_c19a5f0b7e"
    },
    "id": 4
}

这是我正在尝试的查询,但我无法得到我想要的结果:

{
    "jsonrpc": "2.0",
    "method": "query",
    "params": {
        "type": 1,
        "chaincodeID": {
            "name": "b42b506c13fg1157520d585841a691f4b598d9aac53adc95277ed710c7f1f5aaa59a89a8dca8ddf3e46d5241562f3316956a04ad8a33181d30cb01b1c4c9adb2f"
        },
        "ctorMsg": {
            "function": "AC(123456A)",
            "args": [
               "AcctId:949392949233 "
            ]
        },
        "secureContext": "user_type1_c19a5f0b7e"
    },
    "id": 2
}

这是查询的响应。

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32003,
    "message": "Query failure",
    "data": "Error when querying chaincode: Error:Transaction or query returned with failure: Received unknown function query"
  },
  "id": 2
}

现在,我正在试用 IBM Bluemix 提供的本教程: https://github.com/IBM-Blockchain/learn-chaincode

我已经使用他们的示例尝试了一个 init 并调用(成功)以满足我的需要。我尝试了之前提到的 Bluemix 教程,并且能够实现文档中所述的内容。因此,我决定调用一些东西来满足我自己的需要。但是,我无法通过显示“Year2015 Sem1”、“IT1234:A”、“IT3456:B+”等项目来查询人 AC(123456A) 或 user_type1_c19a5f0b7e。如何查询(调用)以满足我自己的需要?

【问题讨论】:

    标签: post ibm-cloud blockchain hyperledger hyperledger-fabric


    【解决方案1】:

    我们的理解是,您正在 IBM Bluemix 上使用 IBM Blockchain Starter Developer Network。使用此环境,已遵循“学习链码”教程 (https://github.com/IBM-Blockchain/learn-chaincode)。在遵循本教程时,我们想确认我们对您的结果的理解。我们的理解是,按照本教程进行操作时,Init、Invoke 和 Query 链码函数都按预期运行。可以成功遵循所编写的教程的理解是否正确?

    然后我们了解到示例链代码已被修改以应用不同的逻辑。使用 AC(123456A) 函数和 user_type1_c19a5f0b7e 的用户调用此修改后的链代码似乎已成功。但是,也使用 AC(123456A) 函数的查询不成功。这种理解正确吗?

    能否提供一些额外的细节以便进一步考虑?

    1. 您是否编写了自己的自定义链代码?如果可以,能否提供这个链码(包括 AC(123456A) 函数定义)?

    2. AC(123456A) 函数是否与链代码的其余部分位于同一个 Go 源文件中?

    3. 我们假设名为 user_type1_c19a5f0b7e 的用户已注册,因为 Invoke 确实有效。注册该用户的步骤是否按照“学习链码”教程的“安全注册”部分中的说明进行?

    4. AC(123456A) 函数能否将值写入账本(通过 Invoke)并从账本中读取值(尝试通过 Query)?

    【讨论】: