HistorianRecord如何运作?我想根据资产ID保存所有交易的历史记录

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

HistorianRecord如何运作?我想根据资产ID保存所有交易的历史记录。我怎样才能在hyperldeger面料中实现这一目标?

hyperledger-fabric hyperledger hyperledger-composer
2个回答
0
投票

那段历史已经存在。每次资产发生变化时,都会创建一个新事务并将其转到分类帐,这意味着您已经拥有与一个资产相关的所有变更的历史记录。

您可以通过使用composer-playground进行验证,然后您将看到该行为。

区块链系统,例如Hyperledger是不可变的。但是,这并不意味着您无法更改资产。这意味着您无法更改已提交的事务。这真是最重要的事情。

如果使用composer-rest-api创建rest api,您将获得所有资产的端点,并且您将获得历史记录方面的端点。问题是功能尚未存在,因此您无法加载资产的所有状态更改。我相信有一张门票,但到目前为止还没有。


0
投票

对于编程方法(“我想获取历史记录”,而不是保存),请参阅此资产历史记录的堆栈溢出 - > Historian for a particular participant(资产历史记录),然后对于事务历史记录,您可以在事务REST API端点上使用某种环回过滤器例如。对于Trade事务类,类似于:

var options = {
    method: 'GET',
    uri: 'http://localhost:3000/api/Trade?filter='{%22where%22:{%22asset_id%22:%22resource:org.acme.biznet.Commodity#ABC%22}%2C %22include%22:%22resolve%22}'
    json: true
};

let results = await rp(options);
    //console.log("Return value from REST API is " + results);

results.sort(function(a, b) {
  if (a.timestamp > b.timestamp) return 1;
  if (a.timestamp < b.timestamp) return -1;
});

console.log(" ");
console.log(" ");
console.log(`TRANSACTION HISTORY for Asset ID:  ${results[0].commodity.tradingSymbol} is: `);
console.log("================================================== ");
console.log(" ");
for (const asset of results) {

      console.log("Type   Transaction Date          Transaction ID                                                     New Ownership     ");
     console.log("=====================================================================================================================");

     console.log(`${asset.$class.split(".").pop()}  ${asset.timestamp}  ${asset.transactionId}   ${asset.newOwner.tradeId}`);
 }
© www.soinside.com 2019 - 2024. All rights reserved.