hyperledger - 如何知道 fabcar 示例中的链?
问题描述
例如,我有一个car1
最初的所有者,manufacturer
然后它被转移到了retailer
,然后又转移到了user
在 fabcar 示例中,我可以通过不知道谁是以前的所有者来知道谁是它的当前所有者。
有没有办法做到这一点?
这是我关注的http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html示例
解决方案
未在链代码中实现。为此,您可以实现一个返回资产历史记录的新方法。
这里是 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));
}
}
}
推荐阅读
- html - Safari中的盒子阴影动画不会褪色
- python - 如何减小表格宽度或使表格响应 chrome?(Django/Python 部署的网络应用程序)
- python - python3 ValueError: could not convert string to float , value = float(value) is not valid
- linux - 如何以 root 身份进入 pod?
- javascript - Javascript Array.Splice() 不会删除条目
- javascript - 我尝试使用 post 方法将值从 ajax 传递到 codeigniter 控制器,但它返回 void
- c# - 使用datareader读取数百万数据时如何避免数据库连接丢失问题?
- node.js - 在部署到 Heroku 之前,我是否应该在 app.js 源文件中继续要求 dotenv npm 模块?
- javascript - 如何在嵌套函数调用中使用 Promise
- java - ifPresent 返回一些东西 orElse