我试图重现以下内容:
========================================= 来自比特币Wiki的
交易难题
交易'...'是一个有趣的难题。
given hash = 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
要花费该事务,您需要提供一些数据,以便对数据进行两次哈希导致给定的哈希值。所需数据恰好是Genesis块,给定的哈希是创世块哈希
==========================================
genesis ='000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
以下函数双重输入(适用于this example中的步骤14)
def function(input):
data = input.decode('hex_codec')
result = binascii.hexlify(hashlib.sha256(hashlib.sha256(data).digest()).digest())
print result
但输入genesis哈希值会产生以下结果:
字符串: “ae253ca2a54debcac7ecf414f6734f48c56421a08bb59182ff9f39a6fffdb588”
己烷: “61 65 32 35 33 63 61 32 61 35 34 64 65 34 63 61 63 37 65 63 66 34 31 34 66 36 37 33 34 66 34 38 63 35 36 34 32 31 61 30 38 62 62 35 39 31 38 32 66 66 39 66 33 39 61 36 66 66 66 64 62 35 38 38 0d 0a“
我显然做错了什么但似乎无法弄清楚是什么。
答案:如Falsaltru所述;
之前使用了所需的哈希来计算blockhash,因此哈希本身为什么“不难找到”。
答案 0 :(得分:1)
您可以通过反转genesis
(字节):
>>> import binascii
>>> genesis = '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
>>> given_hash = '6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000'
>>> binascii.unhexlify(given_hash) == binascii.unhexlify(genesis)[::-1]
True