首页 > 解决方案 > 如何知道 fabcar 示例中的链?

问题描述

例如,我有一个car1最初的所有者,manufacturer然后它被转移到了retailer,然后又转移到了user

在 fabcar 示例中,我可以通过不知道谁是以前的所有者来知道谁是它的当前所有者。

有没有办法做到这一点?

这是我关注的http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html示例

标签: hyperledger

解决方案


未在链代码中实现。为此,您可以实现一个返回资产历史记录的新方法。

这里是 nodeJS 官方文档的链接(你也可以在 GoLang 中找到它):

https://fabric-shim.github.io/ChaincodeStub.html#getHistoryForKey__anchor

这里有一个例子:

async queryValueHistory(stub,args){
  if (args.length != 1) {
    throw new Error('Incorrect number of arguments. Expecting identifier ex: CAR01');
  }

  let carId = args[0];

  let iterator = await stub.getHistoryForKey(carId);

  let allResults = [];
  while (true) {
    let res = await iterator.next();
    if (res.value && res.value.value.toString()) {
      let jsonRes = {};
      console.log(res.value.value.toString('utf8'));

      jsonRes.TxId = res.value.tx_id;
      jsonRes.Timestamp = res.value.timestamp;
      jsonRes.IsDelete = res.value.is_delete.toString();
      try {
        jsonRes.Value = JSON.parse(res.value.value.toString('utf8'));
      } catch (err) {
        console.log(err);
        jsonRes.Value = res.value.value.toString('utf8');
      }
      console.info(jsonRes);
      allResults.push(jsonRes);
    }
    if (res.done) {
      console.log('end of data');
      try{
        await iterator.close();
      }catch(err){
        console.log(err);
      }
      console.info(allResults);
      return Buffer.from(JSON.stringify(allResults));
    }
  }

}

推荐阅读