HyperLedger Fabric获取块信息 - Fabric Go SDK

问题描述 投票:2回答:3

我曾经使用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

go hyperledger-fabric hyperledger
3个回答
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是一个系统chancode,你可以下载fabric source code,从qscc file,你可以看到(它提供了许多调用服务):

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

1
投票

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

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

-1
投票

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

你可以在ledger client integration test中看到一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.