HyperLedger Fabric获取块信息 - Fabric Go SDK

时间:2018-02-11 06:02:13

标签: go hyperledger-fabric hyperledger

我曾经使用Fabric和Fabric GoLang SDK建立Fabric网络并部署了Fabric网络和基本应用程序。我能够进行查询并写入链。 有没有办法检索阻止信息?像块高度和当前哈希一样?

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

我遵循了以下代码和教程,

Fabric Basic App - Tutorial https://chainhero.io/2017/07/tutorial-build-blockchain-app/

Fabric Basic App using GoLang SDK - Code https://github.com/chainHero/heroes-service/

GoLang SDK - Official SDK https://github.com/hyperledger/fabric-sdk-go

3 个答案:

答案 0 :(得分:4)

一般情况下,sdk会提供基本的方法,比如说GetBlockInfo,我搜索了GoLang SDK,找不到它。虽然Java sdk提供了这样的方法reference this java test

使用这些方法的另一种方法(你必须知道一点结构源代码),实际上这些方法都包含在系统链代码中,你可以像调用普通链代码一样调用系统代码。

以下是一个例子: from the go sdk test,你可以看到这个,

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 source code,而qscc file,您可以看到(它提供了许多调用服务):

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

答案 1 :(得分:0)

Go sdk(fabric-sdk-go / pkg / client / ledger)提供了几种获取有关区块链信息的方法。例如:

...
client, err := ledger.New(channelContext)
block, err := client.QueryBlockByHash(blockHash)
block, err = client.QueryBlock(blockNumber)

答案 2 :(得分:-1)

Go SDK现在包含查询块信息的方法。这些方法包含在ledger client package

您可以在ledger client integration test中看到一个示例。