Hyperledger Fabric-如何解码data_hash以返回实际数据?

时间:2018-11-28 11:20:55

标签: hyperledger-fabric hyperledger hyperledger-fabric-ca

我参与了使用超账结构开发区块链应用程序。

我利用 fabric-node-sdk 与区块链层进行交互。

现在,我几乎没有将数据插入到块中,并且我们能够在CouchDB中看到它们并进行查询以检索数据。

调用 channel.queryBlock(1)时,我们得到 data_hash 作为响应,有没有办法 解码data_hash 以获取实际数据?

data_hash看起来像这样:0dafabc38a7d216426b9a9ab71057fe6c8b984c9e44f92b7265fbd3e2785e26c

任何建议都会有所帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

根据Fabric SDK docs,Channel.queryBlock返回一个块的Promise。可以查询返回的Block对象以提取各种字段,例如

channel = client.getChannel(channelName);
return channel.queryBlock(blockNumber);
}).then((block) => {
  console.log('Block Number: ' + block.header.number);
  console.log('Previous Hash: ' + block.header.previous_hash);
  console.log('Data Hash: ' + block.header.data_hash);
  console.log('Transactions: ' + block.data.data.length);
  block.data.data.forEach(transaction => {
    console.log('Transaction ID: ' + transaction.payload.header.channel_header.tx_id);
    console.log('Creator ID: ' + transaction.payload.header.signature_header.creator.Mspid);
    console.log('Data: ');
    console.log(JSON.stringify(transaction.payload.data));
  });
});

一些示例输出:

Block Number: 4
Previous Hash: b794ee910514f989c0bcb54c2d26d907fca65eb9dd60e86047b3c3c78b96cb96
Data Hash: 1e267340a5f57ea687bfd6b57aec51b5e16420921fb50f980d08f1302bd289be
Transactions: 1
Transaction ID: 49c1333402977a53ec2532a4d425ef8bd6e3efa546358d3d2e3be645ee32b6c0
Creator ID: Org1MSP
Data:
{"actions":[{"header":{"creator":{"Mspid":"Org1MSP","IdBytes":"-----BEGIN CERTIFICATE-----...

Block对象的结构已完整记录here

答案 1 :(得分:0)

哈希是不可逆函数,我们无法从哈希中获取数据。 当我们计算任何输入数据的哈希值时,我们都会得到哈希值,并且每次输入相同的数据时,也会得到相同的哈希值。

对于加密,我们可以通过解密作为可逆函数来获取输入数据。