例如,我有一个car1
首先是manufacturer
的所有者,然后将其转移到retailer
,然后转移到user
在fabcar示例中,我不知道谁是前所有者,因此可以知道谁是它的当前所有者。
有办法吗?
这是我关注的http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html示例
答案 0 :(得分:0)
未在链码中实现。为此,您可以实现一个新方法,该方法返回资产的历史记录。
以下是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));
}
}
}