主页 > imtoken手机下载 > Hyperledger Fabric 如何查询历史交易?
Hyperledger Fabric 如何查询历史交易?
imtoken手机下载 2023-03-15 07:35:06
从以太坊、比特币等其他区块链进入Hyperledger Fabric的新手经常会问:如何查询Hyperledger Fabric区块链上的历史交易? 的确,既然区块链或账本上都有交易记录,为什么我们就不能找到一个简单的API来查询历史交易呢?
在以太坊、比特币等区块链平台中,通常会提供简单的JSON RPC API接口,应用程序只需要调用这些RPC API即可查询区块或历史交易。 Hyperledger Fabric 也有类似的 API,但情况略有不同。 根据查询的目的如何查询usdt区块记录,可以分为两种方法。
1.使用系统链码qscc
如果你正在寻找类似以太坊/比特币的区块查询和交易查询API,你应该使用系统链代码QSCC,它提供了以下方法:
调用系统链码和调用你自己的链码没有区别。 例如下面是调用qscc链码的GetChainInfo()方法的go语言测试代码:
1
2
3
4
5
6
response, err := chClient.Query(
chclient.Request{
ChaincodeID: "qscc",
Fcn: "invoke",
Args: integration.ExampleCCQueryArgs("GetChainInfo")
})
原代码可以参考:go sdk test
2.查询指定key的历史交易
如果要查询特定链码中指定状态键的历史交易如何查询usdt区块记录,可以使用链码中ChaincodeStubInterface接口的GetHistoryForKey()方法查询其历史记录。 例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
historyIter, err := stub.GetHistoryForKey(yourKey)
if err != nil {
fmt.Println(errMsg)
return shim.Error(errMsg)
}
if historyIter.HasNext() {
modification, err := historyIter.Next()
if err != nil {
fmt.Println(errMsg)
return shim.Error(errMsg)
}
fmt.Println("Returning information related to", string(modification.Value))
}
为了使上述链码正常工作,需要在 core.yaml 中将 enableHistoryDatabase 设置为 true:
1
2
3
ledger:
history:
enableHistoryDatabase: true