Go 我如何知道Hyperledger结构中的交易转到了哪个对等方?

Go 我如何知道Hyperledger结构中的交易转到了哪个对等方?,go,hyperledger-fabric,blockchain,hyperledger,Go,Hyperledger Fabric,Blockchain,Hyperledger,我正在努力获取交易id信息,这将提供交易的对等详细信息。目前,我能够检索一个键的历史记录,这将为我提供提交给该键的事务列表 MyCode: historyRes, err := stub.GetHistoryForKey(userNameIndexKey) if err != nil { return shim.Error(fmt.Sprintf("Unable to get History key from the ledger: %v", err)) } for historyR

我正在努力获取交易id信息,这将提供交易的对等详细信息。目前,我能够检索一个键的历史记录,这将为我提供提交给该键的事务列表

MyCode:

historyRes, err := stub.GetHistoryForKey(userNameIndexKey)

if err != nil {
    return shim.Error(fmt.Sprintf("Unable to get History key from the ledger: %v", err))
}

for historyRes.HasNext() {

    history, errIt := historyRes.Next()

    if errIt != nil {
        return shim.Error(fmt.Sprintf("Unable to retrieve history in the ledger: %v", errIt))
    }

    deleted := history.GetIsDelete()

    ds := strconv.FormatBool(deleted)

    fmt.Println("History TxId = "+history.GetTxId()+" --  Delete = "+ds)
 }
输出

History TxId = 78c8d17c668d7a9df8373fd85df4fc398388976a1c642753bbf73abc5c648dd8 -- Deleted = false

History TxId = 102bbb64a7ca93367334a8c98f1f7be17e6a8d5277f0167c73da47072d302fa3 -- Deleted = true
但我不知道,是哪位同行做了这笔交易。fabric sdk go中是否有任何API可用于检索事务id的对等信息


请给我建议一些解决方案。

调用
存根。GetHistoryForKey(userNameIndexKey)
将查询状态数据库,而不是分类账(频道)。有关进行交易的身份的信息存储在块中

我已经用NodeJS SDK实现了同样的功能。然而,GoSDK也包含类似的API调用。以下步骤对我有效:

  • 使用SDK获取transactionId
  • 使用SDK函数按transactionId查询块。参考资料
  • 在这一步中,您将获得块。现在提交者的身份位于该块中。提示:有效负载->标题->签名标题->创建者->IdBytes
  • 这些标识字节是提交者的X509证书。您可以阅读证书信息以找出提交此事务的成员。主题和OU将指示执行事务的对等方的组织

  • 您是否专门寻找进行交易的对等方,或与之签署并广播交易以供背书的客户/会员身份?因为,同行大多参与模拟和认可交易,他们从不提出交易。我不确定,但我想知道,在网络中所有可用组织中,哪个组织进行了交易还有一件事,我通过txid收到了块,但是如何读取goDo中的blockheader散列字节数组你是说标识字节数组吗?在这篇文章中,我指定,请检查:是的,我正在获取字节数组,但无法查看数据如果您只需要MSP_ID,那么您可以从有效负载->标题->签名标题->创建者->MSP ID获取。但是,如果您需要签署交易的确切身份,您需要使用一些实用程序来解析IdBytes,它是证书的PEM字符串。我使用节点中可用的一个实用程序将此pem字符串转换为X509格式的证书。虽然还不太了解GoLang的语法/语义,但我相信可能有一些实用程序可以帮助您将PEM字符串转换为X509证书。