无法理解区块链中的Sha256

时间:2018-11-29 00:56:24

标签: algorithm function blockchain sha256

我知道sha256函数采用字符串输入并产生十六进制输出。我不确定如何准确使用输入。因此,在一个区块链的一个区块中,我假设它使用父哈希,数据和随机数作为输入。我认为父哈希和数据可能会串联在一起,并且现时值在其他地方的函数中使用。还是随机数是运行sha256函数以使用先前的输出哈希作为新输入来求解块的次数?有人可以给我正确解释一下吗,因为我还没有找到答案?

1 个答案:

答案 0 :(得分:2)

在比特币中,以下数据被序列化(一个80字节的值),然后使用SHA256进行两次哈希运算以产生Block Hash

  • 版本(4个字节)
  • 上一个块哈希(32个字节)
  • Merkle Root Hash(32字节)
  • 时间戳(4个字节)
  • nBits(4个字节)
  • 一次(4个字节)

merkle root是该区块中所有事务的merkle树的根,nBits描述了该区块哈希必须满足才能被视为有效的难度目标,以及随机数每次完成哈希功能之前,矿工可能会更改它,直到找到有效的块哈希为止。

示例

抓取一个块(例如,块3):Block 3 in jsonBlock 3 in hex

将版本,上一个块哈希,merkle根,unix历元时间,难度目标(位)和随机数(按此顺序,以小字节序,十六进制格式)连接。您会看到可以复制Block 3 in hex link中的前160个字符。

01000000bddd99ccfda39da1b108ce1a5d70038d0a967bacb68b6b63065f626a0000000044f672226090d85db9a9f2fbfe5f0f9609b387af7be5b7fbb7a1767c831c9e995dbe6649ffff001d05e0ed6d

运行命令:

echo 01000000bddd99ccfda39da1b108ce1a5d70038d0a967bacb68b6b63065f626a0000000044f672226090d85db9a9f2fbfe5f0f9609b387af7be5b7fbb7a1767c831c9e995dbe6649ffff001d05e0ed6d | xxd -r -p | openssl sha -sha256 | xxd -r -p | openssl sha -sha256

Reverse the output from

4944469562ae1c2c74d9a535e00b6f3e40ffbad4f2fda3895501b58200000000

0000000082b5015589a3fdf2d4baff403e6f0be035a5d9742c1cae6295464449

还有区块哈希!