手动生成/验证PrimeCoin测试网首区块哈希失败,求排查原因
PrimeCoin测试网首区块哈希计算出错,求指点问题所在
我最近在尝试手动计算PrimeCoin测试网首个区块的哈希,按照自己理解的步骤操作后,结果始终和预期的对不上,想请大家帮我看看哪里漏了或者错了?
区块原始字段信息
version: 2 "previousblockhash" : "221156cf301bc3585e72de34fe1efdb6fbd703bc27cfc468faa1cdd889d0efa0" "merkleroot" : "ec89e34f446bab9d7bbe0c14bea9a01a45c9eafbd383c3c7bfdc3e3c91433d81" "time" : 1373071487, "nonce" : 141, "bits" : "05000000", bnPrimeChainMultiplier "969371"
预期得到的区块哈希:"hash" : "faba12d46bef122f04929195b29cd0d1cc1ecc0b66d6b35967f3f9c4d8c28fe3"
我的操作流程
我按照「字段转十六进制→反转字节转小端序→拼接所有字段→双重SHA256哈希」的步骤操作,但结果不符,具体过程如下:
# Version字段处理:转十六进制并补为4字节小端序 Version: 02000000 # PreviousBlockHash反转字节 echo 221156cf301bc3585e72de34fe1efdb6fbd703bc27cfc468faa1cdd889d0efa0 | grep -o .. | tac | paste -sd '' - PreviousBlockHash: a0efd089d8cda1fa68c4cf27bc03d7fbb6fd1efe34de725e58c31b30cf561122 # MerkleRoot反转字节 echo ec89e34f446bab9d7bbe0c14bea9a01a45c9eafbd383c3c7bfdc3e3c91433d81 | grep -o .. | tac | paste -sd '' - MerkleRoot: 813d43913c3edcbfc7c383d3fbeac9451aa0a9be140cbe7b9dab6b444fe389ec # Timestamp处理:转十六进制后反转字节 echo "obase=16; 1373071487" | bc # 输出:51D7687F echo 51D7687F | grep -o .. | tac | paste -sd '' - Timestamp: 7F68D751 # Bits反转字节 echo 05000000 | grep -o .. | tac | paste -sd '' - Bits: 00000005 # Nonce处理:转十六进制后尝试补全为4字节 echo "obase=16; 141" | bc # 输出:8D echo 8D | grep -o .. | tac | paste -sd '' - # 手动补全为8D00 Nonce: 8D 2s; 8D00 # bnPrimeChainMultiplier处理:转十六进制后补全为4字节并反转 echo "obase=16; 969371" | bc # 输出:ECA9B echo ECA9B | grep -o .. | tac | paste -sd '' - # 补全为9BCA0E00 Multiplier: A9EC 2s; 9BCA0E00
拼接后的原始数据
02000000a0efd089d8cda1fa68c4cf27bc03d7fbb6fd1efe34de725e58c31b30cf561122813d43913c3edcbfc7c383d3fbeac9451aa0a9be140cbe7b9dab6b444fe389ec7F68D751000000058D009BCA0E00
最终计算出的双重SHA256哈希
Double 256 Hash: cfbef7bb528e767a5de9295befaa1a14be0c2dca6bc89fcd1d99cb46d4a96aba
请问我在字段处理或者哈希计算的过程中,遗漏了什么关键步骤吗?
内容的提问来源于stack exchange,提问作者The Applicationist
相关产品推荐
相关产品推荐

