Как получить все блочные транзакции в структуре Hyperledger? - PullRequest
0 голосов
/ 08 января 2019

Как вы знаете, существует вероятность иметь несколько транзакций в одном блоке, в зависимости от размера пакета и конфигурации заказчика. Мне нужно сделать только один вызов, чтобы вернуть все транзакции внутри блока, а не одну за другой.

Я мог бы получить одну транзакцию с помощью queryTransaction, используя Fabric SDK. как

let response_payload = await channel.queryTransaction(trxnID, peer);

Первый подход: реализовать функцию chanincode и передать номер блока, который приходит из eventHub, по методу, затем внутри цепочки кодов получить все идентификаторы транзакций, а затем сделать запрос, чтобы найти все транзакции, а затем объединить все вместе как результат.

Второй подход: получить блок внутри с помощью фабрики sdk, а затем проанализировать все подписанные предложения в содержимом блока.

Третий подход: получить блок внутри с помощью фабрики sdk, затем получить идентификаторы транзакций или ключи в полезной нагрузке, а затем выполнить запрос базы данных couch для получения всего содержимого.

Какой подход, по вашему мнению, является более разумным, если нет, каково ваше предложение?

1 Ответ

0 голосов
/ 01 февраля 2019

Если у вас правильно настроен клиент, должен быть

LedgerClient, которая имеет функцию, подобную

QueryBlock(blockNumber uint64, options ...ledger.RequestOption) (*common.Block, error)

Получив блок, вы можете извлечь из него данные

block, _ := QueryBlock(37)
data := block.GetData().GetData()

data - это [][]byte, и каждая запись представляет собой одну транзакцию.

...