6

似乎我误解了 Hyperledger Fabric 如何处理查询。我目前正在使用 fabric-go-sdk 从分​​类帐中查询资产,例如

asset, err := client.Query(channel.Request{ChaincodeID: someCCname, Fcn: "query", Args: [][]byte{[]byte(someID)}})

当我的系统处于负载状态时(许多与查询无关的新事务),我有时会收到以下错误消息:

背书验证失败:背书客户端状态代码:(3) ENDORSEMENT_MISMATCH。说明:ProposalResponsePayloads 不匹配。

如果只查询数据,为什么要涉及背书?对我来说,错误消息似乎表明多个对等方对查询的回答不同。这是否意味着一些对等方已经将资产提交到账本中,而另一些则没有?值得注意的是,查询是在资产创建后不久运行的,并且不会始终如一地发生。

查询链码非常直接且最小化:

func (c *TestChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response {
    data, err := stub.GetState(args[0])
    if err != nil {
        return shim.Error(err)
    }
    if data== nil {
        return shim.Error(err)
    }
    return shim.Success(data)
}
4

0 回答 0