Как я узнаю, какой Пир сделал Транзакцию в Hyperledger Fabric Go? - PullRequest
0 голосов
/ 09 июля 2019

Я работаю над получением информации об идентификаторе транзакции, которая предоставит информацию о партнере для транзакции. В настоящее время я могу получить историю для ключа, которая дает мне список транзакций, совершенных с этим ключом.

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 для получения информации о партнере для идентификатора транзакции.

пожалуйста, предложите мне какое-нибудь решение.

1 Ответ

2 голосов
/ 09 июля 2019

Вызов stub.GetHistoryForKey(userNameIndexKey) будет запрашивать базу данных состояний, а не регистр (канал). Информация о личности, совершившей транзакцию, хранится в блоке.

Я реализовал то же самое с NodeJS SDK. Однако Go SDK также содержит аналогичные вызовы API. У меня сработали следующие шаги:

  1. Используя ваш SDK, получите идентификатор транзакции
  2. Используйте функцию SDK для запроса блока по транзакции. Список литературы здесь .
  3. На этом этапе вы получите блок. Теперь личность отправителя находится внутри этого блока. Подсказки: Полезная нагрузка -> Заголовок -> Заголовок подписи -> Создатель -> IdBytes.
  4. Эти байты идентичности являются сертификатами X509 отправителя. Вы можете прочитать информацию о сертификате, чтобы узнать, какой участник отправил эту транзакцию. Субъект и подразделения указывают организацию партнера, который совершил транзакцию.
...