如何在超分类帐结构的视图页面上使用节点js显示当前哈希,先前哈希

时间:2018-08-03 11:07:21

标签: node.js hyperledger-fabric

我正在尝试像链表一样遍历区块链。 我只能通过提供的块号从该块中找到以前的哈希,如何使用节点js获取块的当前哈希,我有兴趣在视图页面上显示。

2 个答案:

答案 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。