【问题标题】:How to calculate "Data Hash" before submit to the ledger in Hyperledger Fabric (SDK Node)?提交到 Hyperledger Fabric(SDK 节点)中的账本之前如何计算“数据哈希”?
【发布时间】:2021-12-15 00:44:52
【问题描述】:

我正在使用 SDK Node v2.2 研究 Hyperledger Fabric v2.2,遇到了一个问题,我不知道如何在将“数据哈希”提交到分类帐之前计算它,我需要它在客户端之间进行验证数据和分类帐数据。

我的提交交易链码函数:

file: chaincode.js
...
async addNewDataToLedger(ctx, dataId, data){
    return await ctx.stub.putState(dataId, Buffer.from(data));
}

然后在我的应用程序中,我有一个 JSON 数据,例如

const dataSample = {a : 1, b : 2};
const transaction = contract.createTransaction('addNewDataToLedger');
const result = await transaction.submit('number1', JSON.stringify(dataSample));

提交到账本后。我将收到一个“数据哈希”,例如e2c07a0541f0b90ef0cea2174365719abeda50fd024468f9d7639b76cb1878fb

我猜它散列了我的Buffer.from(data) 和一些秘密,因为我意识到,即使输入数据相同,“数据散列”总是不同的。

如果data_hash被data: {...}部分加密,如下块,那么如何验证客户端的数据与账本中的数据是否匹配?

{
  header: {
    number: {}, 
    previous_hash: "e4617a6446d30628b723206d3f0a0e61308e08dc5eef502bb4c87d228c1c4d10", 
    data_hash: "38afae3941a400149c8508f7d8e4a26bf938cf60dd3a6f4be602ec829f7115fd"
  }, 
  data: { //IS 'data_hash' HASHED THIS SECTION OBJECT?
    data: [...]
  }, 
  metadata: {
    metadata: [...]
  }
}

我到处搜索但找不到“数据哈希”是由什么编码的,以及如何验证数据完整性,希望您能帮助我,非常感谢!

【问题讨论】:

    标签: hyperledger-fabric sha256 hyperledger-fabric-sdk-js


    【解决方案1】:

    块 data_hash 不是单个数据键甚至单个事务的哈希。

    块 data_hash 是块中所有交易的 SHA 256 哈希,如代码 here 所示。

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 2019-09-29
      • 2023-03-21
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多