如您所知,一个批次中可能有多个事务,具体取决于批次大小和订购者配置。 我只需要调用一次即可返回块内的所有事务,而不是一个接一个。
我可以使用Fabric SDK通过queryTransaction检索一个事务。 像
let response_payload = await channel.queryTransaction(trxnID, peer);
第一种方法:实现chanincode函数,并沿该方法传递来自eventHub的块号,然后在链码内部检索所有交易ID,然后进行查询以查找所有交易,然后将所有交易缝合在一起作为结果。
第二种方法: 在结构sdk中检索该块,然后在块内容的有效负载中解析所有已签名的投标。
第三种方法: 检索带有fabric sdk的内部块,然后检索有效负载中的事务ID或密钥,然后进行沙发数据库查询以检索所有内容。
您认为哪种方法更合理?
答案 0 :(得分:0)
如果您的客户端设置正确,则应该有一个
LedgerClient
具有
QueryBlock(blockNumber uint64, options ...ledger.RequestOption) (*common.Block, error)
一旦有了该块,就可以从中取出数据
block, _ := QueryBlock(37)
data := block.GetData().GetData()
data
是[][]byte
,每个条目都是一个事务。