Author

Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it - page 130. (Read 215611 times)

full member
Activity: 1162
Merit: 237
Shooters Shoot...
Like you said, we do not know the target, only the range.
So let's say the target's key is 199,999
Alrighty then, to be exact, when it comes to slapping me suddenly the secure random generator gives us 199,999? And when we are working with 6 digits then as an example use 14, 15 etc, suddenly we go high as 2^130 and compare the numbers?
So why not scaling up all the values and use actual 2^130 range/keys? Though you forgot that I was asking if the stride idea could be tweaked to find a perfect stride or not.

Even if the key is e.g, 189776, we could still divide the end range and subtract from our target by different subranges, like 200,000 - 189776 = 10224, we could then try subtracting the result from endrange/4, er/6, er/8 etc.

Nvm that, I don't know anything about math, I'm not even working actively on 130, my target is much bigger.

Btw, Legends_Never_Die is my alter ego account, time for a paint job on trust wall.😉
I know you are used to spitting out random things and some are like ooooohhhhh ahhhhhhhhh, but you seldom listen lol.

You could be working in a 50 bit range or a 256 bit range; and you can subtract, divide, multiply, etc. whatever you want to do, or you can use whatever stride you can some up with, 14, 87, 1234344564, 47398573854734834, etc., it won't work because again, you could go around the curve and you won't know where the key lies or where to start your stride function from.

There is truly only one way to take advantage of a stride function; and I stated that months ago. My problem was, I could not create a stride function inside of CUDA. Or else I would have found 130's key already lol.
member
Activity: 462
Merit: 24
the secure random generator gives us 199,999

Try non-secure random generator

Code:
import random
puzzle = 18
lower_range_limit = 2 ** (puzzle - 1)
upper_range_limit = (2 ** puzzle) - 1
seed = b'\x97h6\xd9\x7f\xcbh\xc4'
random.seed(seed)
dec = random.randint(lower_range_limit, upper_range_limit)
print(f"{dec}, {seed}")

 Grin
copper member
Activity: 1330
Merit: 899
🖤😏
Like you said, we do not know the target, only the range.
So let's say the target's key is 199,999
Alrighty then, to be exact, when it comes to slapping me suddenly the secure random generator gives us 199,999? And when we are working with 6 digits then as an example use 14, 15 etc, suddenly we go high as 2^130 and compare the numbers?
So why not scaling up all the values and use actual 2^130 range/keys? Though you forgot that I was asking if the stride idea could be tweaked to find a perfect stride or not.

Even if the key is e.g, 189776, we could still divide the end range and subtract from our target by different subranges, like 200,000 - 189776 = 10224, we could then try subtracting the result from endrange/4, er/6, er/8 etc.

Nvm that, I don't know anything about math, I'm not even working actively on 130, my target is much bigger.

Btw, Legends_Never_Die is my alter ego account, time for a paint job on trust wall.😉
member
Activity: 462
Merit: 24
Here is new script....
Bytea HASH160 Search.
Bitcoin addresses and hashes are typically represented as byte sequences. When you work with bytes, you can directly perform binary operations and comparisons, which is faster and more efficient than dealing with hexadecimal or string representations.
In this context, the script generates private keys as integers and converts them into bytes to derive Bitcoin addresses. It then calculates the Hash160 of these addresses and compares it to the target Hash160.
Script uses puzzle creator method - the b'\x00' * 32 line creates a 32-byte value composed entirely of zero bytes. This is just an initial placeholder value, and as the script progresses, it replaces parts of these zeros with the random bytes generated to create a valid private key for Bitcoin.
You can also play with patterns and random seed values at the same time.

Code:
import sys
import os
import time
import random
import binascii
import base58
import hashlib
import ecdsa
from multiprocessing import cpu_count
import threading

# Set the Hash 160 address you want to check for
target_hex = "20d45a6a762535700ce9e0b216e31994335db8a5"
add_set = bytes.fromhex(target_hex)

puzzle = 66
min_number = 2 ** (puzzle - 1)
max_number = (2 ** puzzle) - 1

# Clear the terminal screen
if os.name == 'nt':
    os.system('cls')
else:
    os.system('clear')

# Print information about the program
t = time.ctime()
sys.stdout.write("\033[01;33m")
sys.stdout.write("\033[?25l")
sys.stdout.write(f"[+] [Bytea HASH160 Search] {t}" + "\n")
sys.stdout.write(f"[+] [Puzzle]: {puzzle}" + "\n")
sys.stdout.write(f"[+] [Lower range limit]: {min_number}" + "\n")
sys.stdout.write(f"[+] [Upper range limit]: {max_number}" + "\n")
sys.stdout.flush()

# Define the check_private_key function
def check_private_key(add_set):
    while True:
        constant_prefix = b''  #Can be b'\xbc\x9b' or any random_bytes
        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(min_number, max_number)
        dec_bytes = dec.to_bytes((dec.bit_length() + 7) // 8, 'big')
        private_key_bytes = b'\x00' * 32
        private_key_bytes = private_key_bytes[:-len(dec_bytes)] + dec_bytes
        signing_key = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1)
        compressed_public_key = signing_key.get_verifying_key().to_string("compressed")
        sha256_hash = hashlib.sha256(compressed_public_key).digest()
        HASH160 = hashlib.new('ripemd160', sha256_hash).digest()
        extended_private_key = b'\x80' + private_key_bytes + b'\x01'
        extended_ripe160_hash = b'\x00' + HASH160
        checksum = hashlib.sha256(hashlib.sha256(extended_private_key).digest()).digest()[:4]
        checksum_ripe160 = hashlib.sha256(hashlib.sha256(extended_ripe160_hash).digest()).digest()[:4]
        private_key_with_checksum = extended_private_key + checksum
        HASH160_wif = base58.b58encode(private_key_with_checksum).decode()
        address_bytes = extended_ripe160_hash + checksum_ripe160
        bitcoin_address = base58.b58encode(address_bytes).decode()
        message = "\r[+] Public Key Hash (Hash 160): {}             ".format(HASH160.hex())
        messages = []
        messages.append(message)
        output = "\033[01;33m" + ''.join(messages) + "\r"
        sys.stdout.write(output)
        sys.stdout.flush()
        if bitcoin_address.startswith("13zb1h"):
            sys.stdout.write(f"\n[+]\033[32m Pattern Found: {bitcoin_address}, {dec}, {random_bytes}              \033[0m")
            sys.stdout.write(f"\n[+] continue...\n")
        if HASH160 == add_set:
            dec_to_hex = hex(dec).split('x')[-1]
            t = time.ctime()
            sys.stdout.write(f"\033[0m\n\n")
            sys.stdout.write(f"[+] SOLVED:    |\033[32m{t}                                                                 \033[0m\n")
            sys.stdout.write(f"[+] Key Found: |\033[32m {dec_to_hex}                                               \033[0m\n"
                                        f"[+] WIF:       |\033[32m {HASH160_wif}                                                 \033[0m\n"
                                        f"[+] Address:   |\033[32m {bitcoin_address}                                          \033[0m\n"
                                        f"[+] Seed:      |\033[32m {random_bytes}                                               \033[0m\n\n")
            sys.stdout.flush()
            with open("KEYFOUNDKEYFOUND.txt", "a") as f:
                f.write("SOLVED: " + str(t) + '\n' + "HEX: " + str(dec_to_hex) + '\n' + "Address: " + str(bitcoin_address) + '\n' + "Private Key:  " + str(HASH160_wif)+ '\n' + "Random Seed:  " + str(random_bytes) + '\n\n')
                f.flush()
                f.close()
            sys.stdout.write("\033[?25h")
            sys.stdout.flush()
            return

# Create multiple threads for generating addresses
num_threads = cpu_count()
threads = []

for _ in range(num_threads):
    thread = threading.Thread(target=check_private_key, args=(add_set,))
    thread.start()
    threads.append(thread)

# Wait for all threads to finish
for thread in threads:
    thread.join()
full member
Activity: 1162
Merit: 237
Shooters Shoot...
Guys/gals, don't waste your time with random search, random mode etc, there is no such a thing as "random" all events follow a pattern,  we as humans have to interfere and change these patterns, by following logic and the power of our minds.

Instead of "hoping" for a "lucky" hit in a random search, start working on ways to find a stride for public key brute force.
Example:
Target = 127654 (unknown) we only know it's between 100,000 and 200,000.
So we subtract it from 200,000 - 127654 = 72,346.  Now we are certain our result is 100% smaller than 100,000 (start range), but since we don't know how much smaller, we'd just subtract it from half of start range, 50,000 - 72,346 = 22,346. And now we are 100% certain the result is smaller than 50,000 but we don't know how much, again we subtract it from 1/4 of start range 25,000 - 22,346 = 2,654.

Now tell me what do you see?
127654
2654
127654 - 2654 = 125000
What you need to work on is figuring out a stride to add to 125,000 till we reach our target, whether we add 13 at each step, 14 or 15, what happens when we reach 127698? Can we save the keys between 127654 and 127700 so when we are adding stride and land on one of the saved keys, we know right away and easily solve the key or not?

These things should be your priority, enough of running this tool/script and that tool/script, come up with an algorithm which doesn't require "random" and "luck" but requires math equations and numbers.

Sorry man, this either will not work because you went around the curve, or you will have trillions^trillions of strides to go through/take.

Your example:
Target = 127654
range = 100,000 - 200,000

Like you said, we do not know the target, only the range.
So let's say the target's key is 199,999
Watch the math:
200,000 - 199,999 = 1
1 - 50,000 = -49,999
-49,999 - 25,000 = -74,999

You have now went backwards around the curve. So now, you can't even start your program to start striding from 0 or 1.

But let's deal with your math above and talk about the strides.

It's ok when a range is only 200,000 but now imagine a much larger range, say 2^130. If you have a stride of 13, 14, 15, etc., it will take you more than a lifetime to still get through that range.
jr. member
Activity: 64
Merit: 1
34Sf4DnMt3z6XKKoWmZRw2nGyfGkDgNJZZ
member
Activity: 462
Merit: 24
Except these safes are publicly reachable unlike private safes inside houses.

ATMs are publicly reachable. Try to hack them.  I'm kidding...  
🤣
I understand the whole story.    Grin
newbie
Activity: 4
Merit: 1
this isn't conceptually different from picking up someone's safe and finding its lock combination, then claiming the safe's contents for the sake of science.   Grin
Except these safes are publicly reachable unlike private safes inside houses. Consider yourself a security team member working on security issues, your payment is in puzzle addresses, find a hole and grab your payment, if the designer was a professional programmer, he wouldn't have made this puzzle, he is a good scientist but not a good programmer, as early bitcoin clients were full of bugs/code related issues, but the concept was perfect and it is to this day.  Scientists act based on science, puzzle hunters act based on monetary incentive.

"They asked someone, imagine you are in the middle of the ocean and sharks are approaching, what will you do?"
"He said I will climb a tree"
-They said but there are no trees in the middle of the ocean-
"He said I know, but I don't have any other choice"
🤣
member
Activity: 462
Merit: 24
I'm delusional by relying on mathematics, whilst you and a few others are delusional relying on "random" search

It doesn't matter what method did you use if you succeed in your intention. And no matter how crazy the way may seem,
this isn't conceptually different from picking up someone's safe and finding its lock combination, then claiming the safe's contents for the sake of science.   Grin
copper member
Activity: 1330
Merit: 899
🖤😏
I still believe that the random mode is more effective than the subtraction that you have been mentioning for a while and you are only looking for a solution where there is none
We keep looking until we find one, if there was an easy to spot solution then we wouldn't be here at all, and my solution is not based on subtraction, it also includes division, however I'm working on a new method to multiply and divide 2 points, I know something impossible, right? At least I'm delusional by relying on mathematics, whilst you and a few others are delusional relying on "random" search without even realizing the probabilities of successfully landing on a target in a big range like 130 is beyond your comprehension.  You insist on a "luck" which doesn't exist, if you input 1 address and generate a random key and land on that 1 address, it's not called luck, God wanted it.

by the way, you do some stupid calculations in which only you see something....Do you somehow see the Eiffel Tower on the left side?

Yet I haven't seen you slapping me with these stupid calculations, proving me wrong and embarrassing me for everyone to see. ( wait there is a unicorn asking for directions for Champs-Élysées, let me give him an equation to solve for the address.) 😉🤣


Please learn how to quote and trim the unnecessary previous quotes, @everyone. Thanks
jr. member
Activity: 64
Merit: 1
34Sf4DnMt3z6XKKoWmZRw2nGyfGkDgNJZZ
member
Activity: 462
Merit: 24
@nomachin WTF? You just ignore what i write and started to talking about something that is not related.

Artificial Intelligence, singularity, simulations? WTF?? What is the relationship between that and this TOPIC?

You keep insisting that the RNG must be safe and by some (security) rules.. .I assume written by the NSA itself?
You need slow and safe/secure (unpredictable) when you create and protect BTC,  not when you hack it.
The rule is that when you hacking there are no rules. Grin


Is all this a robbery/steal/theft attempt?


It is definitely a hacker attempt/attack.  Tell the truth and . . .run   Roll Eyes
newbie
Activity: 30
Merit: 0
Guys/gals, don't waste your time with random search, random mode etc, there is no such a thing as "random" all events follow a pattern,  we as humans have to interfere and change these patterns, by following logic and the power of our minds.
.................

I still believe that the random mode is more effective than the subtraction that you have been mentioning for a while and you are only looking for a solution where there is none, but I wish you success. Everyone applies their own way. Let's see who can do it first, shall we?
...by the way, you do some stupid calculations in which only you see something....Do you somehow see the Eiffel Tower on the left side?
copper member
Activity: 1330
Merit: 899
🖤😏
Guys/gals, don't waste your time with random search, random mode etc, there is no such a thing as "random" all events follow a pattern,  we as humans have to interfere and change these patterns, by following logic and the power of our minds.

Instead of "hoping" for a "lucky" hit in a random search, start working on ways to find a stride for public key brute force.
Example:
Target = 127654 (unknown) we only know it's between 100,000 and 200,000.
So we subtract it from 200,000 - 127654 = 72,346.  Now we are certain our result is 100% smaller than 100,000 (start range), but since we don't know how much smaller, we'd just subtract it from half of start range, 50,000 - 72,346 = 22,346. And now we are 100% certain the result is smaller than 50,000 but we don't know how much, again we subtract it from 1/4 of start range 25,000 - 22,346 = 2,654.

Now tell me what do you see?
127654
2654
127654 - 2654 = 125000
What you need to work on is figuring out a stride to add to 125,000 till we reach our target, whether we add 13 at each step, 14 or 15, what happens when we reach 127698? Can we save the keys between 127654 and 127700 so when we are adding stride and land on one of the saved keys, we know right away and easily solve the key or not?

These things should be your priority, enough of running this tool/script and that tool/script, come up with an algorithm which doesn't require "random" and "luck" but requires math equations and numbers.
hero member
Activity: 862
Merit: 662
if you have a True randomness in your PC you will have possibility to have consciousness in your computer.

Not just me, every body with a moderm CPU and a good RNG algorithm in its OS (So every linux/windows)

Did you bothered in read what i quote from that page?

From: https://www.intel.com/content/www/us/en/developer/articles/guide/intel-digital-random-number-generator-drng-software-implementation-guide.html
Quote
The ES runs asynchronously on a self-timed circuit and uses thermal noise within the silicon to output a random stream of bits at the rate of 3 GHz

@nomachin WTF? You just ignore what i write and started to talking about something that is not related.

Artificial Intelligence, singularity, simulations? WTF?? What is the relationship between that and this TOPIC?

newbie
Activity: 17
Merit: 0
I am searching for all 3 addresses from 1 hex range. please, if anyone can help.. we can do this for all addresses.
https://www.talkimg.com/images/2023/10/16/Rcs4o.gif
member
Activity: 462
Merit: 24
copper member
Activity: 1330
Merit: 899
🖤😏
can anyone kindly provide an example of public key subtraction code in python ?
Try this one.
Code:
import secp256k1 as ice

target_public_key = "032f3342152eff6aca5e7314db6d3301a28d6a90ddcfd189f96babadc2a053d392"
target = ice.pub2upub(target_public_key)
num = 1000  # number of times.
subtract = 1  # amount to subtract each time.

# Define the new generator point coordinates
new_generator = (new_x_coordinate, new_y_coordinate)  # Replace with actual coordinates

sustract_pub_new = ice.scalar_multiplication(subtract, new_generator)
res = ice.point_loop_subtraction(num, target, subtract_pub_new)

for t in range(num + 1):
    h = (res[t * 65:t * 65 + 65]).hex()
    hc = ice.to_cpub(h)
    data = open("data-base.txt", "a")
    data.write(str(hc) + "\n")
    data.close()

This will subtract 1G 1000 times from target, meaning if target is 2000, it will give you 1999, 1998, 1997... etc.
newbie
Activity: 30
Merit: 0


it does not work under windows, if you do not use the WSL subsystem
newbie
Activity: 21
Merit: 0
can anyone kindly provide an example of public key subtraction code in python ?
Jump to: