gpt4 book ai didi

go - 如何在 Hyperledger Fabric 中解码交易负载

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:07 25 4
gpt4 key购买 nike

我需要从账本中的交易中获取交易字段。我能够通过调用 qscc 链代码从分类帐中成功查询交易,但无法解析获取的交易以检索交易字段。我想将交易内容解码为包含所有字段的结构。使用以下代码,我收到错误“无法解码 channel header ”。感谢您的帮助。

chainCodeArgs := toChaincodeArgs("GetTransactionByID", "myc", tid)
response := stub.InvokeChaincode("qscc", chainCodeArgs, "myc")
fmt.Printf("****************")
if response.Status != shim.OK {
errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload)
fmt.Printf(errStr)
return "", fmt.Errorf(errStr)
}

respStr := fmt.Sprintf("successfully queried qscc chaincode. Got response: %s", response.Payload)
fmt.Printf(respStr)

payload, err := utils.UnmarshalPayload(response.Payload)
if err != nil {
return "", fmt.Errorf("Error when unmarshalling transaction payload response")
}
fmt.Printf("++++++++++++++++++++++")
fmt.Println(payload)

if payload.Header == nil {
return "", fmt.Errorf("error getting txID from header: payload header is nil")
}

chdr, err := utils.UnmarshalChannelHeader(payload.GetHeader().ChannelHeader)
if err != nil {
return "", fmt.Errorf("failed to unmarshal channel header")
}

fmt.Printf("++++++++++++++++++++++")
fmt.Printf(chdr.TxId)

错误截图:

enter image description here

最佳答案

响应负载以[]字节为单位

你可以使用string(response.Payload)

以上代码等同于.toString("utf8")

------ 或 ------

使用

var data interface{}

err = json.Unmarshal(responseBody, &data)

关于go - 如何在 Hyperledger Fabric 中解码交易负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57470536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com