我知道sha256函数采用字符串输入并产生十六进制输出。我不确定如何准确使用输入。因此,在一个区块链的一个区块中,我假设它使用父哈希,数据和随机数作为输入。我认为父哈希和数据可能会串联在一起,并且现时值在其他地方的函数中使用。还是随机数是运行sha256函数以使用先前的输出哈希作为新输入来求解块的次数?有人可以给我正确解释一下吗,因为我还没有找到答案?
答案 0 :(得分:2)
在比特币中,以下数据被序列化(一个80字节的值),然后使用SHA256进行两次哈希运算以产生Block Hash:
merkle root是该区块中所有事务的merkle树的根,nBits描述了该区块哈希必须满足才能被视为有效的难度目标,以及随机数每次完成哈希功能之前,矿工可能会更改它,直到找到有效的块哈希为止。
抓取一个块(例如,块3):Block 3 in json或Block 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
还有区块哈希!