it can be done in 1 second
It can be done in 1 millisecond if you hit the random seed, believe it or not.
You need to crack random.seed for each Puzzle. Here is example:
import random
import os
import time
import secp256k1 as ice
puzzle = 30
target = "d39c4704664e1deb76c9331e637564c257d68a08"
lower_range_limit = 2 ** (puzzle - 1)
upper_range_limit = (2 ** puzzle) - 1
start_time = time.time()
for x in range(10000000):
#Random seed Config
#constant_prefix = b'' #back to no constant
constant_prefix = b'yx\xcb\x08\xb70l'
prefix_length = len(constant_prefix)
length = 8
ending_length = length - prefix_length
ending_bytes = os.urandom(ending_length)
random_bytes = constant_prefix + ending_bytes
random.seed(random_bytes)
dec = random.randint(lower_range_limit, upper_range_limit)
h160 = ice.privatekey_to_h160(0, True, dec).hex()
if h160 == target:
HEX = "%064x" % dec
caddr = ice.privatekey_to_address(0, True, dec)
wifc = ice.btc_pvk_to_wif(HEX)
print(f"Puzzle: {puzzle}")
print("Bitcoin address Compressed: " + caddr)
print("Private Key (decimal): " + str(dec))
print("Private key (wif) Compressed : " + wifc)
print(f"Random seed: {random_bytes}")
break
end_time = time.time()
execution_time_ms = (end_time - start_time) * 1000
print("Execution Time (ms):", execution_time_ms)
Puzzle: 30
Bitcoin address Compressed: 1LHtnpd8nU5VHEMkG2TMYYNUjjLc992bps
Private Key (decimal): 1033162084
Private key (wif) Compressed : KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M8diLSC5MyERoW
Random seed: b'yx\xcb\x08\xb70l\xf1'
Execution Time (ms): 1.9545555114746094