我正在尝试通过以下两种方式获取blockinfo。

##One way of getting Blockchain block

BlockchainInfo blockinfo = channel.queryBlockchainInfo(userContext);

currentHash1 = Hex.encodeHexString(blockinfo.getCurrentBlockHash());
Hex.encodeHexString(blockinfo.getPreviousBlockHash())

##Another way of iterating over blockchain block

BlockInfo returnedBlock = channel.queryBlockByNumber(blockinfo.getHeight() - 1);
currentHash2 = Hex.encodeHexString(returnedBlock.getDataHash())


因此,使用这两种获取块信息的方式,但在这些情况下,如果我必须使用后一种方法遍历区块链,则currentHash是不相同的。没有哈希与先前的哈希匹配。

我不确定是否应该像这样,但是当前块previousHash应该匹配上一个块的datahash

最佳答案

该块没有哈希,因此SDK无法公开它,但是有一种方法可以根据BlockInfo计算当前块的哈希

这是相关代码:
Hex.encodeHexString(SDKUtils.calculateBlockHash(client, returnedBlock.getBlockNumber(), returnedBlock.getPreviousHash(), returnedBlock.getDataHash()))

关于java - 使用hyperledger fabric java sdk获取块信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52045794/

10-10 04:41