我正在尝试像链表一样遍历区块链。 我只能通过提供的块号从该块中找到以前的哈希,如何使用节点js获取块的当前哈希,我有兴趣在视图页面上显示。
答案 0 :(得分:3)
sdk节点不提供当前哈希,但是可以使用类似于此的代码从块的头中计算出来。
var sha = require('js-sha256');
var asn = require('asn1.js');
var calculateBlockHash = function(header) {
let headerAsn = asn.define('headerAsn', function() {
this.seq().obj(
this.key('Number').int(),
this.key('PreviousHash').octstr(),
this.key('DataHash').octstr()
);
});
let output = headerAsn.encode({
Number: parseInt(header.number),
PreviousHash: Buffer.from(header.previous_hash, 'hex'),
DataHash: Buffer.from(header.data_hash, 'hex')
}, 'der');
let hash = sha.sha256(output);
return hash;
};
答案 1 :(得分:-1)
您已经使用NodeJS API获取了当前块的哈希值。
https://fabric-sdk-node.github.io/Channel.html#queryBlock__anchor
示例: https://github.com/hyperledger/fabric-samples/blob/release-1.2/balance-transfer/app.js#L340
当前块的哈希显示为数据哈希:
示例:
"header": {
"number": "1",
"previous_hash": "112016e79e2bbaa3f2682d0ec26a22dc85df5da2efcb6b6a4540e1ee486e5bb6",
"data_hash": "7a1541e32447bf92a1131f3e6f85d08ebf610a85baf4332f403fb89cabb7e0fd"
},
只需遍历分类帐高度并获取data_hash。