如何在 hyperledger 锯齿波中查询特定资源的交易
How to query transactions for a particular resource in hyperledger sawtooth
我正在进行多项交易,例如资产的位置更新,但找不到任何方法来查询基于该资源的交易:
例如,如果我创建一个资产 fish1
,然后进行交易以更新鱼的位置,现在我想获取 fish1
的交易,这样我就可以获得一个列表geopoints
并将它们绘制在地图上。
如果有人做过这样的事情,请帮忙。谢谢
链上解决方案
根据您'update'位置的方式,有两种方法。
- 如果您在同一地址更新信息,则必须采取预防措施以捕获所有更新。这假设资产有一个可以在交易时添加的集合。使用这种方法,只需获取地址数据(使用
/state/
REST-API 调用)并根据需要展开数据更新集合即可。
- 另一方面,如果每次更新都会将一条新数据添加到区块链中,那么您将使用某种地址方案(我假设),您可以在其中使用前缀 '/state?address =xxx` 调用以收集所有资产更新。您可能还想获取块以确定顺序,除非每个地址的数据捕获某种时间信息以进行排序。
当然,这两种方法各有利弊。
链下解决方案
Sawtooth 提供了一个事件注册表,客户端(某种)可以在其中注册事件侦听器,以应用程序需要的任何形式在链外存储数据。这通常被建议用于具有 broad/rich 查询需求的解决方案,因为锯齿 Merkle Trie(存储区块链数据的地方)不提供这种灵活性。
我正在进行多项交易,例如资产的位置更新,但找不到任何方法来查询基于该资源的交易:
例如,如果我创建一个资产 fish1
,然后进行交易以更新鱼的位置,现在我想获取 fish1
的交易,这样我就可以获得一个列表geopoints
并将它们绘制在地图上。
如果有人做过这样的事情,请帮忙。谢谢
链上解决方案
根据您'update'位置的方式,有两种方法。
- 如果您在同一地址更新信息,则必须采取预防措施以捕获所有更新。这假设资产有一个可以在交易时添加的集合。使用这种方法,只需获取地址数据(使用
/state/
REST-API 调用)并根据需要展开数据更新集合即可。 - 另一方面,如果每次更新都会将一条新数据添加到区块链中,那么您将使用某种地址方案(我假设),您可以在其中使用前缀 '/state?address =xxx` 调用以收集所有资产更新。您可能还想获取块以确定顺序,除非每个地址的数据捕获某种时间信息以进行排序。
当然,这两种方法各有利弊。
链下解决方案
Sawtooth 提供了一个事件注册表,客户端(某种)可以在其中注册事件侦听器,以应用程序需要的任何形式在链外存储数据。这通常被建议用于具有 broad/rich 查询需求的解决方案,因为锯齿 Merkle Trie(存储区块链数据的地方)不提供这种灵活性。