HyperLedger Fabric获取区块信息 - Fabric Go SDK

6

我曾经搭建过一个Fabric网络并使用Fabric和Fabric GoLang SDK部署了一个基本应用程序。我可以进行链上查询和写入。 是否有方法可以检索区块信息?例如区块高度和当前哈希值?

+ I'm unable to find out a documentation for GoLang Fabric SDK.

我跟随下面的代码和教程: Fabric基础应用 - 教程 https://chainhero.io/2017/07/tutorial-build-blockchain-app/ 使用GoLang SDK的Fabric基础应用 - 代码 https://github.com/chainHero/heroes-service/ GoLang SDK - 官方SDK https://github.com/hyperledger/fabric-sdk-go
3个回答

7

总的来说,SDK会提供基本方法,例如您所说的GetBlockInfo,我已经搜索了GoLang SDK,但未找到此方法。而Java SDK提供了此类方法 参考此Java测试

另一种使用这些方法的方法(您必须了解一些Fabric源代码),实际上这些方法包含在系统链码中,您可以像调用普通链码一样调用系统链码。

以下是一个示例:来自Go SDK测试,您可以看到:

response, err := chClient.Query(chclient.Request{ChaincodeID: ccID, Fcn: "invoke", Args: integration.ExampleCCQueryArgs()})

只需更改参数

response, err := chClient.Query(chclient.Request{ChaincodeID: "qscc", Fcn: "invoke", Args: integration.ExampleCCQueryArgs("GetChainInfo")})

qscc 是一个系统通道代码,您可以下载 fabric源代码,从 qscc文件 中查看(它提供了许多调用服务):

GetChainInfo       string = "GetChainInfo"
GetBlockByNumber   string = "GetBlockByNumber"
GetBlockByHash     string = "GetBlockByHash"
GetTransactionByID string = "GetTransactionByID"
GetBlockByTxID     string = "GetBlockByTxID"

你好Jim,感谢你的回答。它仍然很有帮助。我有一个问题,现在是否有任何替代方法可以使用fabric-sdk-go通过TxnID获取数据?例如,我已经将A存储在分类账中并获得了TxnHash B,现在我想使用TxnHash B查询分类账以获取存储的数据。我遇到了ledger.QueryTransaction(),但它需要良好的解析逻辑才能从中获取详细信息。 - metadata

1
Go SDK(fabric-sdk-go/pkg/client/ledger)提供了多种获取区块链信息的方法。例如:
...
client, err := ledger.New(channelContext)
block, err := client.QueryBlockByHash(blockHash)
block, err = client.QueryBlock(blockNumber)

-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接