Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
aminsolhi
on 28/11/2024, 13:43:41 UTC
If I were in Satoshi's place and had to create a puzzle, I would use a method like this. This way, I wouldn’t need to hold on to a bunch of private keys.


python code:

Code:
import hashlib 
import random 


def generate_hex_numbers(key, count): 
    hash_input = key.encode('utf-8') 
    hashed_value = hashlib.sha256(hash_input).hexdigest() 

    hex_numbers = set() 
    random.seed(hashed_value) 

    index_width = 7 
    hex_width = 25 
    start_range_width = 30 
    end_range_width = 30 

 
    print(f"{'Index':<{index_width}} {'Hex Value':<{hex_width}} {'Start Range':<{start_range_width}} {'End Range':<{end_range_width}}") 
    print("-" * (index_width + hex_width + start_range_width + end_range_width + 4)) 

    for i in range(scount, count + 1): 
        random_number = random.randint(2 ** i, 2 ** (i + 1)) 
        hex_number = hex(random_number).removeprefix('0x') 
        start_range = f'{2 ** i:x}' 
        end_range = f'{2 ** (i + 1):x}' 

     
        print(f"{i + 1:<{index_width}} {hex_number:<{hex_width}} {start_range:<{start_range_width}} {end_range:<{end_range_width}}") 

    return 


key = 'satoshi' 
scount = 1
count = 65 
key = input ("Enter Pharpass : ")
hex_values = generate_hex_numbers(key, count)



A program that tests with random letters

Code:
import hashlib 
import random 
import string
import main 

index_width = 7 
hex_width = 25 
start_range_width = 30 
end_range_width = 30

def generate_random_word(length): 
    characters = string.ascii_letters + string.digits 
    random_word = ''.join(random.choice(characters) for _ in range(length)) 
    return random_word

def generate_hex_numbers(key): 
    hash_input = key.encode('utf-8') 
    hashed_value = hashlib.sha256(hash_input).hexdigest() 
    hex_numbers = set() 
    random.seed(hashed_value)     
    random_number = random.randint(2**65, 2 **66) 
    hex_number = hex(random_number).removeprefix('0x') 
    start_range = f'{2 **65:x}' 
    end_range = f'{2 **66:x}'
    print(f"\r{hex_number:<{hex_width}} {start_range:<{start_range_width}} {end_range:<{end_range_width}} {'2832ed74f2b5e35ee':<{hex_width}} {key:<{15}}",end='') 
    if (hex_number == "2832ed74f2b5e35ee"):
        input ("Found!!!")
    return 


print(f"{'Hex Value':<{hex_width}} {'Start Range':<{start_range_width}} {'End Range':<{end_range_width}} {'Source':<{hex_width}} {'Key':<15}") 
print("-" * ((hex_width*3) + start_range_width + end_range_width))
while True:
    key = "satoshi "+generate_random_word(5) 
    hex_values = generate_hex_numbers(key)