我正在尝试构建一个Historian Query,它允许我查看Transactions(及其原始输入)。我试图根据这个问题尝试一个想法https://github.com/hyperledger/composer/issues/1850,但这已在Composer Playground中修复。所以现在我想知道如何在REST API中实现这一点,而不依赖事件来保存事务输入信息。
我在查询文档后面使用的查询是:
query HistorianRecords {
description: "Select from HistorianRecords"
statement: SELECT org.hyperledger.composer.system.HistorianRecord
}
这会返回我这样的信息
{
"$class": "org.hyperledger.composer.system.HistorianRecord",
"transactionId": "c1bcd961-41bb-43a3-b5ee-c1c3694f7736",
"transactionType": "Transfer",
"transactionInvoked": "resource:org.hyperledger.composer.system.Transaction#c1bcd961-41bb-43a3-b5ee-c1c3694f7736",
"eventsEmitted": [],
"transactionTimestamp": "2017-09-04T07:55:54.405Z"
}
没有显示交易的输入信息。
我希望获得有关在线游乐场如何显示它的信息,其中基本上包括交易输入,即。在示例网络中输入资产和 newValue
{
"$class": "org.acme.sample.SampleTransaction",
"asset": "resource:org.acme.sample.SampleAsset#a",
"newValue": "123",
"transactionId": "0b7aa7b5-ffed-4fe7-9a60-c883085b88e8",
"timestamp": "2017-09-04T08:50:53.346Z"
}
我的网络涉及从参与者向参与者发送付款,而无法看到谁传递了多少基本上使区块链无意义的人。
如何使用查询执行此操作?
答案 0 :(得分:4)
所以实际上,我没有费心去查询历史学家,而是使用这个查询来解决这个问题
query myTransactions{
description: "return all transactions made (not system transactions)"
statement: SELECT org.acme.sample.NAME_OF_TRANSACTION_CLASS
}
答案 1 :(得分:2)
正确,这将起作用,因为它直接查询交易注册表(或注册管理机构)。最终,您应该能够通过Historian Registry查询 - 也就是说,事务的输入也应该在历史记录中完整显示。历史交易记录与调用的交易(来自Txn注册表)有关,以找出对资产的更改(比如说)是什么'即一个游乐场。查询意味着增加价值'对于历史学家来说,'历史记录 - 例如"查询类型x的期间1到期间2"的交易历史(以及它改变了什么)。关于Historian功能中的REST支持 - 我们也计划为Historian提供REST支持,并且它正处于管道中(将在发布后更新答案)。