【问题标题】:How retrieve all block transactions in the Hyperledger fabric?如何检索 Hyperledger 结构中的所有区块交易?
【发布时间】:2019-02-19 20:39:01
【问题描述】:

如您所知,一个区块中可能有多个交易,具体取决于批量大小和排序器配置。 我只需要调用一次即可返回块内的所有事务,而不是一一返回。

我可以使用 Fabric SDK 检索带有 queryTransaction 的一笔交易。 喜欢

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

第一种方法:实现一个 chanincode 函数并将来自 eventHub 的块号沿方法传递,然后在链码中检索所有交易 ID,然后进行查询以找到所有交易,然后将所有交易拼接在一起作为结果。

第二种方法: 用fabric sdk检索里面的块,然后解析块内容的payload中的所有签名提案。

第三种方法: 使用fabric sdk检索内部块,然后检索有效负载中的事务ID或键,然后进行沙发数据库查询以检索所有内容。

如果不是您的建议,您认为哪种方法更合理?

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

    如果您的客户端设置正确,则应该有一个

    LedgerClient 具有类似

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

    一旦你有了块,你就可以从中提取数据

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

    data 是一个[][]byte,每个条目是一个事务。

    【讨论】:

    • “如果您的客户端设置正确”,请指导如何操作?
    • 我对node客户端不熟悉。我希望它采用标准的 fabric-sdk 配置。设置 fabric-sdk 配置需要了解网络,这就是我所指的设置。
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多