【发布时间】:2018-08-06 06:18:50
【问题描述】:
我正在通过一些在线示例学习区块链。 我有这个高级代码,我正在使用以前的哈希创建一个新块,然后向它添加一个事务,然后生成该块的一个困难哈希(带有 8 个前导零)
Block block1 = new Block(previousHash);
block1.addTransaction(new SomeTransaction());
block1.mineBlock(difficulty);
blockchain.add(block1);
public void mineBlock(int difficulty) {
String target = StringUtil.getDificultyString(difficulty); //Create a string with difficulty * "0"
while(!hash.substring( 0, difficulty).equals(target)) {
nonce ++;
hash = calculateHash();
}
System.out.println("Block Mined!!! : " + hash);
}
这很好用。但我有一个问题是,在向区块链添加区块之前如何验证这个工作量证明。
即 假设生成了一个带有 8 个前导零的哈希
000000005ed2248f32d7f2509e6291a998a6119b96b1227d27fe03cf21b8c908
区块链如何确保这个散列实际上是一个有效的散列,而不仅仅是一个带有 8 个前导零的随机字符序列?
【问题讨论】:
-
借助之前的hash和nonce值?
标签: java blockchain bitcoin