Search content
Sort by

Showing 20 of 28 results by tptkimikaze
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 09/09/2023, 11:32:28 UTC
Looks like those who is searching for #66 are at 354d range, even myself also search at the same range. If my research correct, #66 range should be in between 354df - 358ae. Even this range will take ages to scan. LoL.

How did you come to this conclusion?

By breaking down bits and some bits combination. Maybe just some wild guessing and not sure if I am correct because I spots seems like some obvious pattern. I hope someone can find it on this range thought even if I don't get it. If the results were in this range, then I can use the same methods to proceed to 67. Unfortunately, the most lowest I can go is only on current range. I guess it boost some morale maybe I am right when I saw zahid8888 post PK start at 354d and have similarity on #66 Hash160.

Anybody here familiar with Kangaroo? I have 1 stupid question. If let's say I put 1 million public address to search for private key and there's only 1 valid public address that fit the range. Will it take much more longer time to find the valid public key to get the private key? I tried just now with 100,000 public address, but the average time to solve shown unchanged.

I tried to put 1001 key with 1000 false public key and 1 puzzle 35 key. Why kangaroo can't solve it? Does that mean we can only put 1 public key at a time?

You can't find low range keys with kangaroo, 35 bit total range is less than 35 billion keys, I have tried with low ranges, my kangaroos start dying very fast, I can't even say goodbye. 🤣

I think more public keys you place in target file more you lose speed, but the speed reduction is insignificant even with few thousands less or more keys.

Exactly. It dead kangaroo almost immediately when I start. I am just trying to figure out if Kangaroo able to search lots of fake key with 1 valid key at once because I have some idea to lower #130 bits down but need to do a lot of manual works.

Anybody here familiar with Kangaroo? I have 1 stupid question. If let's say I put 1 million public address to search for private key and there's only 1 valid public address that fit the range. Will it take much more longer time to find the valid public key to get the private key? I tried just now with 100,000 public address, but the average time to solve shown unchanged.

I tried to put 1001 key with 1000 false public key and 1 puzzle 35 key. Why kangaroo can't solve it? Does that mean we can only put 1 public key at a time?

You can't find low range keys with kangaroo, 35 bit total range is less than 35 billion keys, I have tried with low ranges, my kangaroos start dying very fast, I can't even say goodbye. 🤣

I think more public keys you place in target file more you lose speed, but the speed reduction is insignificant even with few thousands less or more keys.

I think it's quite significant but I haven't try till it solve. Will try later. For example I try with on #65 keys, it solve in less than 3 minutes. But when I put it with 100 fake keys and 1 real key, I run for 20 mins just now and it still didn't solve. I will try later to see how long it takes with 100 and 1000 keys with only 1 real key. Furthermore, I try with #64 keys while the range I set it on #65, it seems like kangaroo unable to solve it.

Update on 64. When I try to solve 64 Public Key but range setting at 65, it spends almost 5 times more with a correct range provided to search.

Update:
I don't think Kangaroo able to solve multiple address. Now I am trying to merge save file and see if it able to resolve.

He is joking. Grin

Sat Sep  9 11:51:57 2023
P-table prepared
tame and wild herds is being prepared
Using 12 CPU cores for parallel search.
Public key: 02f6a8148a62320e149cb15c544fe8a25ab483a0095d2280d03b8a00a7feada13d time: 2.66 sec


For 2 seconds.  Cool

Code:
import time
import os
import sys
import random
import gmpy2
from gmpy2 import mpz
from functools import lru_cache
from multiprocessing import Pool, cpu_count

modulo = gmpy2.mpz(115792089237316195423570985008687907853269984665640564039457584007908834671663)
order = gmpy2.mpz(115792089237316195423570985008687907852837564279074904382605163141518161494337)
Gx = gmpy2.mpz(55066263022277343669578718895168534326250603453777594175500187360389116729240)
Gy = gmpy2.mpz(32670510020758816978083085130507043184471273380659243275938904335757337482424)

class Point:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

PG = Point(Gx, Gy)
Z = Point(0, 0)  # zero-point, infinite in real x,y-plane

def mul2(P, p=modulo):
    c = (3 * P.x * P.x * pow(2 * P.y, -1, p)) % p
    R = Point()
    R.x = (c * c - 2 * P.x) % p
    R.y = (c * (P.x - R.x) - P.y) % p
    return R

def add(P, Q, p=modulo):
    dx = Q.x - P.x
    dy = Q.y - P.y
    c = dy * gmpy2.invert(dx, p) % p
    R = Point()
    R.x = (c * c - P.x - Q.x) % p
    R.y = (c * (P.x - R.x) - P.y) % p
    return R

@lru_cache(maxsize=None)
def X2Y(X, y_parity, p=modulo):
    Y = 3
    tmp = 1
    while Y:
        if Y & 1:
            tmp = tmp * X % p
        Y >>= 1
        X = X * X % p

    X = (tmp + 7) % p

    Y = (p + 1) // 4
    tmp = 1
    while Y:
        if Y & 1:
            tmp = tmp * X % p
        Y >>= 1
        X = X * X % p

    Y = tmp

    if Y % 2 != y_parity:
        Y = -Y % p

    return Y

def compute_P_table():
    P = [PG]
    for k in range(255):
        P.append(mul2(P[k]))
    return P

P = compute_P_table()

os.system('clear')
t = time.ctime()
sys.stdout.write("\033[01;33m")
sys.stdout.write(t + "\n")
sys.stdout.write("P-table prepared" + "\n")
sys.stdout.write("tame and wild herds is being prepared" + "\n")
sys.stdout.flush()

def comparator(A, Ak, B, Bk):
    result = set(A).intersection(set(B))
    if result:
        sol_kt = A.index(next(iter(result)))
        sol_kw = B.index(next(iter(result)))
        print('total time: %.2f sec' % (time.time() - starttime))
        difference = Ak[sol_kt] - Bk[sol_kw]
        HEX = "%064x" % difference  # Convert to a hexadecimal string
        t = time.ctime()
        print('SOLVED:', t, difference)
        with open("KEYFOUNDKEYFOUND.txt", 'a') as file:
            file.write('\n\nSOLVED ' + t)
            file.write('\nPrivate Key (decimal): ' + str(difference))
            file.write('\nPrivate Key (hex): ' + HEX)
            file.write('\n-------------------------------------------------------------------------------------------------------------------------------------\n')
        return True
    else:
        return False

def check(P, Pindex, DP_rarity, file2save, A, Ak, B, Bk):
    if P.x % DP_rarity == 0:
        A.append(P.x)
        Ak.append(Pindex)
        with open(file2save, 'a') as file:
            file.write(('%064x %d' % (P.x, Pindex)) + "\n")
        # Print the public key
        message = "\rPublic key: {:064x}".format(P.x)
        sys.stdout.write("\033[01;33m")
        sys.stdout.write(message)
        sys.stdout.flush()
        return comparator(A, Ak, B, Bk)
    else:
        return False

# Memoization for ecmultiply
ecmultiply_memo = {}

def ecmultiply(k, P=PG, p=modulo):
    if k == 0:
        return Z
    elif k == 1:
        return P
    elif k % 2 == 0:
        if k in ecmultiply_memo:
            return ecmultiply_memo[k]
        else:
            result = ecmultiply(k // 2, mul2(P, p), p)
            ecmultiply_memo[k] = result
            return result
    else:
        return add(P, ecmultiply((k - 1) // 2, mul2(P, p), p))

def mulk(k, P=PG, p=modulo):
    if k == 0:
        return Z
    elif k == 1:
        return P
    elif k % 2 == 0:
        return mulk(k // 2, mul2(P, p), p)
    else:
        return add(P, mulk((k - 1) // 2, mul2(P, p), p))

def search(Nt, Nw, puzzle, kangoo_power, starttime):
    DP_rarity = 1 << ((puzzle - 2 * kangoo_power) // 2 - 2)
    hop_modulo = ((puzzle - 1) // 2) + kangoo_power
    T, t, dt = [], [], []
    W, w, dw = [], [], []
    for k in range(Nt):
        t.append((3 << (puzzle - 2)) + random.randint(1, (1 << (puzzle - 1))))
        T.append(mulk(t[k]))
        dt.append(0)
    for k in range(Nw):
        w.append(random.randint(1, (1 << (puzzle - 1))))
        W.append(add(W0, mulk(w[k])))
        dw.append(0)
    oldtime = time.time()
    Hops, Hops_old = 0, 0
    t0 = time.time()
    oldtime = time.time()
    starttime = oldtime
    while True:
        for k in range(Nt):
            Hops += 1
            pw = T[k].x % hop_modulo
            dt[k] = 1 << pw
            solved = check(T[k], t[k], DP_rarity, "tame.txt", T, t, W, w)
            if solved:
                return 'sol. time: %.2f sec' % (time.time() - starttime)
            t[k] += dt[k]
            T[k] = add(P[pw], T[k])
        for k in range(Nw):
            Hops += 1
            pw = W[k].x % hop_modulo
            dw[k] = 1 << pw
            solved = check(W[k], w[k], DP_rarity, "wild.txt", W, w, T, t)
            if solved:
                return 'sol. time: %.2f sec' % (time.time() - starttime)
            w[k] += dw[k]
            W[k] = add(P[pw], W[k])

puzzle = 35
compressed_public_key = "02f6a8148a62320e149cb15c544fe8a25ab483a0095d2280d03b8a00a7feada13d"  # Puzzle 35
kangoo_power = 9 #For Puzzle 50-56 use 9 to 11, for Puzzle 60-80 use 14 to 16 / 24 cores or above preferred
Nt = Nw = 2 ** kangoo_power
X = int(compressed_public_key, 16)
Y = X2Y(X % (2 ** 256), X >> 256)
if Y % 2 != (X >> 256) % 2:
    Y = modulo - Y
X = X % (2 ** 256)
W0 = Point(X, Y)
starttime = oldtime = time.time()

Hops = 0
random.seed()

hops_list = []
N_tests = kangoo_power

for k in range(N_tests):
    buffer_size = 1024 * 1024 * 1024  # 1024 MB in bytes
    with open("tame.txt", 'w', buffering=buffer_size) as tame_file, open("wild.txt", 'w', buffering=buffer_size) as wild_file:
        tame_file.write('')
        wild_file.write('')

def parallel_search(process_count, Nt, Nw, puzzle, kangoo_power, starttime):
    pool = Pool(process_count)
    results = pool.starmap(search, [(Nt, Nw, puzzle, kangoo_power, starttime)] * process_count)
    pool.close()
    pool.join()
    return results

if __name__ == '__main__':
    process_count = cpu_count()  # Use all available CPU cores
    print(f"Using {process_count} CPU cores for parallel search.")
    results = parallel_search(process_count, Nt, Nw, puzzle, kangoo_power, starttime)
    for result in results:
        print(result)



There's nothing to admit it is my own stupidity also admitting I'm wrong. I now know it's pure stupidity of subtracting a bunch of public key and by the end it just doesn't work that way. How great are you than? It's still the same couldn't even solve 1 puzzle, aren't you? So why are you mocking others silly mistake while you achieve absolutely nothing.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 13:53:52 UTC
Looks like those who is searching for #66 are at 354d range, even myself also search at the same range. If my research correct, #66 range should be in between 354df - 358ae. Even this range will take ages to scan. LoL.

How did you come to this conclusion?

By breaking down bits and some bits combination. Maybe just some wild guessing and not sure if I am correct because I spots seems like some obvious pattern. I hope someone can find it on this range thought even if I don't get it. If the results were in this range, then I can use the same methods to proceed to 67. Unfortunately, the most lowest I can go is only on current range. I guess it boost some morale maybe I am right when I saw zahid8888 post PK start at 354d and have similarity on #66 Hash160.



thats what i said exactly, im substracting from 130 lower bit range and i get those address that start with same 14 digits of hash160 that means that address in that range of 90 or even 80 bit range


So any update on the progress of finding this key?
 First offset = 03982a5a42895a5cfe4b9b98e49f9389ebf9b3bf91c2289f1c5db3d944f46ec710
Half of above =
0291001b0dc6e5a2628cb4698eb00a6fb7dbd276dc2b214795f2fe52e61243aa9b
Half of 130?
0337374e00a32eaf009e9946035c0e69085627b60a844637d2b958dd83bcfa4383
The following is the subtracted key from #130
Second offset =
03d99bb89e8db75d20b882f13f8086fb39221858fa211de0346c926a93ae259b3a
Half of above?
03a3dc00bf5f7e7eec691569c7f67a15d3cdbb3a9994c9a5ec1430cffdb622cf9f

Now subtract half of first offset from half of #130 to get half of second offset.

Second offset is known, we need to work on first offset's half, use -1 divide by 2 script to reduce 18 bits from it, you'll have millions of new offsets and one of them is the target, now divide the #130 range by 2, subtract 18 bits from it and use the new range as your search range, input those millions offset keys and search the range.

Don't just try blind searching.😉



its not blind searching

03982a5a42895a5cfe4b9b98e49f9389ebf9b3bf91c2289f1c5db3d944f46ec710
hash160
3aaccf438388c4aeb0b433c7b778f25cb6ab244c


hash160
3aaccf438388c31f14410f489939d3d5eac88f19
pk: 48ea48b7a25627365cff38d

13 same hash160 digits, and its two substraction of 130 its not one substraction, 13 digits means its 80 pourcent in that range like puzzle 66

03982a5a42895a5cfe4b9b98e49f9389ebf9b3bf91c2289f1c5db3d944f46ec710 + 2786b52d106d22524ed9cf8a87d2
031ed6283a43d439eace1ee2815118cb6f16f475be60fa5ccc8598372d8c5f1995 # target

031ed6283a43d439eace1ee2815118cb6f16f475be60fa5ccc8598372d8c5f1995 # + 3.........................................
03633cbe3ec02b9401c5effa144c5b4d22f87940259634858fc7e59b1c09937852 # target





What you are doing is believing in an illusion, if you search in any range you will find the same matches, so in all honesty you are wasting your time comparing hash160 with the sequence of the curve.

Human being needs dream big, hopes, keep trying and determination to continue. Nobody will know whether the dreams will come true or not. If relies only on bruteforcing, how long it will take for #66? It took everyone 3 years to bruteforcing #64, how long it takes for #66? 150 years by bruteforcing? If only bruteforcing without trying any new idea, then why don't just give up because it's less likely to break until the day I die.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 07:56:19 UTC
Anybody here familiar with Kangaroo? I have 1 stupid question. If let's say I put 1 million public address to search for private key and there's only 1 valid public address that fit the range. Will it take much more longer time to find the valid public key to get the private key? I tried just now with 100,000 public address, but the average time to solve shown unchanged.

I tried to put 1001 key with 1000 false public key and 1 puzzle 35 key. Why kangaroo can't solve it? Does that mean we can only put 1 public key at a time?

You can't find low range keys with kangaroo, 35 bit total range is less than 35 billion keys, I have tried with low ranges, my kangaroos start dying very fast, I can't even say goodbye. 🤣

I think more public keys you place in target file more you lose speed, but the speed reduction is insignificant even with few thousands less or more keys.

I think it's quite significant but I haven't try till it solve. Will try later. For example I try with on #65 keys, it solve in less than 3 minutes. But when I put it with 100 fake keys and 1 real key, I run for 20 mins just now and it still didn't solve. I will try later to see how long it takes with 100 and 1000 keys with only 1 real key. Furthermore, I try with #64 keys while the range I set it on #65, it seems like kangaroo unable to solve it.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 07:15:29 UTC
Anybody here familiar with Kangaroo? I have 1 stupid question. If let's say I put 1 million public address to search for private key and there's only 1 valid public address that fit the range. Will it take much more longer time to find the valid public key to get the private key? I tried just now with 100,000 public address, but the average time to solve shown unchanged.

I tried to put 1001 key with 1000 false public key and 1 puzzle 35 key. Why kangaroo can't solve it? Does that mean we can only put 1 public key at a time?

You can't find low range keys with kangaroo, 35 bit total range is less than 35 billion keys, I have tried with low ranges, my kangaroos start dying very fast, I can't even say goodbye. 🤣

I think more public keys you place in target file more you lose speed, but the speed reduction is insignificant even with few thousands less or more keys.

Exactly. It dead kangaroo almost immediately when I start. I am just trying to figure out if Kangaroo able to search lots of fake key with 1 valid key at once because I have some idea to lower #130 bits down but need to do a lot of manual works.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 07:09:21 UTC
Looks like those who is searching for #66 are at 354d range, even myself also search at the same range. If my research correct, #66 range should be in between 354df - 358ae. Even this range will take ages to scan. LoL.

How did you come to this conclusion?

By breaking down bits and some bits combination. Maybe just some wild guessing and not sure if I am correct because I spots seems like some obvious pattern. I hope someone can find it on this range thought even if I don't get it. If the results were in this range, then I can use the same methods to proceed to 67. Unfortunately, the most lowest I can go is only on current range. I guess it boost some morale maybe I am right when I saw zahid8888 post PK start at 354d and have similarity on #66 Hash160.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 04:55:46 UTC
Looks like those who is searching for #66 are at 354d range, even myself also search at the same range. If my research correct, #66 range should be in between 354df - 358ae. Even this range will take ages to scan. LoL.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 08/09/2023, 04:46:12 UTC
Anybody here familiar with Kangaroo? I have 1 stupid question. If let's say I put 1 million public address to search for private key and there's only 1 valid public address that fit the range. Will it take much more longer time to find the valid address public key? I tried just now with 100,000 public address, but the average time to solve shown unchanged.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 31/08/2023, 21:46:55 UTC
Maybe I know too little information about it. I think I have some idea now, not sure if I am correct about it. By subtracting known 130 public key to lower bits to find the lower bits private key, once gotten that private key you do an inverse of lower bit private key back to 130 bits. Am I right?

Yes that is correct if you have  some case like this:

Code:
P130 - PA = X
P130 - PB = Y
P130 - PC = Z
...
P130 - PM = N

if you found the privatekey of any X, Y, Z or N you only need to apply the inverse process to get the Private key of P130, you only need to be aware of what are the values of PA,PB PC and PM

the same appy for other operations like  addition, multiplication and division

Regards!

Thanks. Maybe will try it later. More focusing on 66 now. If my idea and approach works and able to solve 66, then 67 and 68 should be also solvable in short period of time.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 31/08/2023, 21:07:15 UTC
I have no idea why so many are so obsessed about this adding and subtracting public key thingy. Maybe I know nothing much about it and makes me think that way. This adding/subtracting method in my opinion are totally different from Pollard Kangaroo idea or BSGS. From my understanding, by adding/subtracting public key, you can generate a bunch of valid public key, nothing wrong about it. But if 1 private key matching only 1 public key(of course it does), then where is the difference between adding/subtracting and private key bruteforcing? IMHO, it doesn't eliminate any possible private key combination at all. Please correct me if I am wrong.

try this
https://github.com/WanderingPhilosopher/Windows-KeySubtractor
and you will understand

with substraction, we can minimise the search range from 130bit to lower range, you could fild a private key of generated substracted public key in lower range exemple 100bit or even lower so that will be easy to crack 130 bit..


Actually I saw your previous post quite some time ago and did try on the python script on that closed thread many months ago. After generating millions of public key, I found out it doesn't help much after trying an hour or so, immediately I gave up.  LoL. Maybe I know too little information about it. I think I have some idea now, not sure if I am correct about it. By subtracting known 130 public key to lower bits to find the lower bits private key, once gotten that private key you do an inverse of lower bit private key back to 130 bits. Am I right?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 31/08/2023, 20:43:35 UTC
I have no idea why so many are so obsessed about this adding and subtracting public key thingy. Maybe I know nothing much about it and makes me think that way. This adding/subtracting method in my opinion are totally different from Pollard Kangaroo idea or BSGS. From my understanding, by adding/subtracting public key, you can generate a bunch of valid public key, nothing wrong about it. But if 1 private key matching only 1 public key(of course it does), then where is the difference between adding/subtracting and private key bruteforcing? IMHO, it doesn't eliminate any possible private key combination at all. Please correct me if I am wrong.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 31/08/2023, 17:05:40 UTC
Any C++ pro here? I have some dummy question. Is that difficult to convert Python into C++ and integrate it to Keyhunt? Or maybe I should say are we able to do some minor modification on Keyhunt by using my Python code logic because I did saw some similarity. I am currently using Python code to search and estimate can only get about 400k key per sec, if Keyhunt without GPU I can get roughly about 12 M/Keys per second. It is not compulsory to use GPU and I believe I have found some obvious pattern on 66, 67, 68. I just hope if able to integrate into Keyhunt, possibly I can increase the keys per sec instead of only around 400k per sec on Python.
Post
Topic
Board Bitcoin Discussion
Merits 1 from 1 user
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 27/08/2023, 01:24:41 UTC
⭐ Merited by citb0in (1)
Alright, let me explain everything clearly. For the past few months, I've been collecting all the ranges for puzzle 66, a significant part of which belongs to me. I've scanned certain ranges into the diffrent pools and performed many offline experiments as well. I've also gathered numerous ranges from different individuals' posts, where I trusted that these ranges were authentic. I used to save them, but all of these ranges turned out to be insufficient.

Then, I came across a text file from somewhere. When I added it to my database, it introduced a deceptive alteration in the scanned percentage, which was a major portion of the scanned ranges. I spent several days attempting to determine whether these ranges were genuinely scanned or if they were fake. After being unable to ascertain the truth, I accepted it as genuine and included it in my database. Following that, I only needed to scan 588 more ranges to achieve 100% completion of scanning.

This is the one file that has perplexed me with the question of "yes or no..

As far as it goes, why don't I complete all these ranges myself? I've already invested a significant amount of my money and time here. I would like to say one more thing that might not enter your minds, where we are completely powerless, upper forces can assist us, but to benefit from that power, we have to share things with others, after seeing our kindness, that power also shows us mercy . Therefore, I thought it's better to share my hard work with people, and whoever is destined will receive it. (even I removed 60-40 % too) Well, Maybe these words won't make sense to you, but that's okay, keep demotivating us... Looking at some people, it also feels like why am I sharing my hard work with those who have such negative thoughts about me, well... well, all five fingers aren't the same. By the way, these days, old folks are hardly visible. Maybe because the current generation has become quite disrespectful.

(588 more ranges to achieve 100% completion of scanning)

Do you think these words make sense for any individual who have a sensible mind? If you have invest already so much, why don't you invest another less than USD 2k and less than a month time for a 100% scan ? Don't look at someone account as newbie and said we're the new generation. I know BTC when it is worth less than USD 100 per pieces and Mt Gox haven't go bankrupt yet. The day I joined bitcointalk is the time we're still using USB miner to mine BTC and I even own couple of faucet during those days. What is current generation or older generation? I don't like to stay at forum anymore because it's not anymore like those old days and full of scammers. I can easily find back one of my Bitcointalk account which can go back roughly 6-7 years ago and I am just lazy to do so. Not new generation are disrespectful, it is your action and plan that doesn't make sense at all for any sensible human being.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 26/08/2023, 22:31:53 UTC
588 ranges are available for everyone. The ranges are hidden within the script to prevent different individuals from repeatedly scanning the same range. Please ensure that whoever is performing the scanning keeps the proof of work secure.
https://github.com/futuremoneybtc/VanBitCrackenS1-Distributed-Puzzle-66-Address-Scanner
How do we know we are scanning a correct range, I mean what if someone scans all 588 ranges and finds nothing? You see, searching for addresses is a blind search no guarantee to land on the target unless you search the entire  original range one by one.

There's a phrase in Chinese sounds like this "There are no cookies fall from the sky".

If someone can scan 48 bits in an hour, let's assume the key is in the 588 range, this means he just need 24.5 days to completely scan all 588 ranges. If he is so confident with those range, nobody will want to share such high probability ranges. It is a zero risk while he get 40+% if he share it because whoever find it need give him that. If the key wasn't there, he has nothing to lose. The final conclusion is he has no confident at all on those 588 range. If I have those highly confident ranges, I can easily rent a GPU to scan all those ranges. Why would I want to share the 60% jackpot with someone out there? Doesn't make sense at all.

that's the point, absolutely correct. That's why everyone realized that zahid888 trying to setup a big scam (not even mentioning he offers a binary executable without source code on his github repo)

There's one evil point I even don't want to point out because I want to assume he is a good man. It's not only nothing to lose. If let's say someone fall into this and scan all the ranges and doesn't get the key, we even help him to eliminate all those 588 ranges for free.
Post
Topic
Board Bitcoin Discussion
Merits 1 from 1 user
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 26/08/2023, 20:55:41 UTC
⭐ Merited by citb0in (1)
588 ranges are available for everyone. The ranges are hidden within the script to prevent different individuals from repeatedly scanning the same range. Please ensure that whoever is performing the scanning keeps the proof of work secure.
https://github.com/futuremoneybtc/VanBitCrackenS1-Distributed-Puzzle-66-Address-Scanner
How do we know we are scanning a correct range, I mean what if someone scans all 588 ranges and finds nothing? You see, searching for addresses is a blind search no guarantee to land on the target unless you search the entire  original range one by one.

There's a phrase in Chinese sounds like this "There are no cookies fall from the sky".

If someone can scan 48 bits in an hour, let's assume the key is in the 588 range, this means he just need 24.5 days to completely scan all 588 ranges. If he is so confident with those range, nobody will want to share such high probability ranges. It is a zero risk while he get 40+% if he share it because whoever find it need give him that. If the key wasn't there, he has nothing to lose. The final conclusion is he has no confident at all on those 588 range.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 22/08/2023, 15:39:05 UTC
Alright, after numerous calculations, I've come to the point where I need someone who is interested in puzzle 66 and capable of counting 48 bits within a few minutes. I have a total of 588 ranges for them to work on, with the opportunity to claim the prize of 6.6 BTC. Alternatively, if the author of the puzzle – the one who created this challenge to test the difficulty of increasing bits – has come across my post, I challenge them to assist me in improving my counting speed. I am confident in my ability to crack puzzle 66 in a matter of days.

i am also still trying to use Bit because I see that's the most highest probability of eliminating less likely keys and ranges. I have integrate and complete a whole Python code which I can predetermine the permutations of first 4 digits, skip keys that have a maximum consecutive "0" and "1", setting the weight on "0" and "1". This has eliminated a lot of keys but still, it needs a lot of computation power. I can easily find 30 up to 40 puzzle easily, but when it comes to 66 then headache already. I possibly know how you come out with the 48 bits ranges. Most likely you are trying to run a lower bits of predetermine weight 0 and 1 permutation to get the most likely range, am I correct?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 16/08/2023, 21:17:03 UTC
Code:
import os

file1 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file2 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file3 = open('Sample3.bat', "w")

file3.write("@echo [off]" + '\n')

for line in file1:
    file3.write(line)

for line in file2:
    file3.write(line)



file3.write(""KeyHunt-Cuda -m address --coin btc --range" + " + for line in file1 + " ":" " + for line in file2 + "" 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so'\n'")

file1.close()
file2.close()   
file3.close()

Any Python pro here can help me with this dirty simple code but I just couldn't solve it.
File1 = Start Range
File2 = End Range
File3 = Batch File

I have a long starting range in File1 and ending range in File2. I hope to use some python coding to create automatically for a batch file to search. For example, Line 1 in File 1 is A123000 and File 2 is A123FFF. So I want to create starting range of File 1 line 1 and ending range File 2 line 1, output in File3 batch file. I think it's pretty easy for pro python out there but I really not good in coding. Thanks in advance.

Code:
data = data2 = "";

# Reading data from file1
with open('sample1.txt') as fp:
data = fp.read()

# Reading data from file2
with open('sample2.txt') as fp:
data2 = fp.read()

# Merging 2 files
# To add the data of file2
# from next line


with open ('sample3.bat', 'a') as fp:
fp.write("@echo [off]" + '\n')
fp.writelines("KeyHunt-Cuda -m address --coin btc --range " + data + ":" + data2 + "13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so" '\n')

Can someone help to look at what did I do wrong because the output as below?

@echo [off]
KeyHunt-Cuda -m address --coin btc --range aaaa
bbbb
cccc:ddd
eee
fff13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so


File 1
aaaa
bbbb
cccc

File 2
ddd
eee
fff

I hope to get an output of KeyHunt-Cuda -m address --coin btc --range aaaa:ddd 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so

Anyone can teach me a solution on how to code it?

I already found the answer. Thanks anyway.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 16/08/2023, 20:34:44 UTC
Code:
import os

file1 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file2 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file3 = open('Sample3.bat', "w")

file3.write("@echo [off]" + '\n')

for line in file1:
    file3.write(line)

for line in file2:
    file3.write(line)



file3.write(""KeyHunt-Cuda -m address --coin btc --range" + " + for line in file1 + " ":" " + for line in file2 + "" 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so'\n'")

file1.close()
file2.close()   
file3.close()

Any Python pro here can help me with this dirty simple code but I just couldn't solve it.
File1 = Start Range
File2 = End Range
File3 = Batch File

I have a long starting range in File1 and ending range in File2. I hope to use some python coding to create automatically for a batch file to search. For example, Line 1 in File 1 is A123000 and File 2 is A123FFF. So I want to create starting range of File 1 line 1 and ending range File 2 line 1, output in File3 batch file. I think it's pretty easy for pro python out there but I really not good in coding. Thanks in advance.

Code:
data = data2 = "";

# Reading data from file1
with open('sample1.txt') as fp:
data = fp.read()

# Reading data from file2
with open('sample2.txt') as fp:
data2 = fp.read()

# Merging 2 files
# To add the data of file2
# from next line


with open ('sample3.bat', 'a') as fp:
fp.write("@echo [off]" + '\n')
fp.writelines("KeyHunt-Cuda -m address --coin btc --range " + data + ":" + data2 + "13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so" '\n')

Can someone help to look at what did I do wrong because the output as below?

@echo [off]
KeyHunt-Cuda -m address --coin btc --range aaaa
bbbb
cccc:ddd
eee
fff13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so


File 1
aaaa
bbbb
cccc

File 2
ddd
eee
fff

I hope to get an output of KeyHunt-Cuda -m address --coin btc --range aaaa:ddd 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so

Anyone can teach me a solution on how to code it?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 16/08/2023, 17:46:03 UTC
Code:
import os

file1 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file2 = open("C:\Users\kimi_\OneDrive\Desktop\Puzzle\sample1.txt","r")

file3 = open('Sample3.bat', "w")

file3.write("@echo [off]" + '\n')

for line in file1:
    file3.write(line)

for line in file2:
    file3.write(line)



file3.write(""KeyHunt-Cuda -m address --coin btc --range" + " + for line in file1 + " ":" " + for line in file2 + "" 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so'\n'")

file1.close()
file2.close()   
file3.close()

Any Python pro here can help me with this dirty simple code but I just couldn't solve it.
File1 = Start Range
File2 = End Range
File3 = Batch File

I have a long starting range in File1 and ending range in File2. I hope to use some python coding to create automatically for a batch file to search. For example, Line 1 in File 1 is A123000 and File 2 is A123FFF. So I want to create starting range of File 1 line 1 and ending range File 2 line 1, output in File3 batch file. I think it's pretty easy for pro python out there but I really not good in coding. Thanks in advance.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 12/08/2023, 19:35:45 UTC
Using this code below to find the private key for puzzle 30, which specifies that the first 4 bits are 1. Running it with 12 processes on my i7-12700kf, the private key was found in about 1 minute and 28 seconds.

Code:
000000000000000000000000000000000000000000000000000000003d94cd64
hash160: d39c4704664e1deb76c9331e637564c257d68a08
Target hash found!
Time: 0 h, 1 m, 28 s

Code:
import hashlib
import ecdsa
import random
import time
from multiprocessing import Process, Event

target_hash = "d39c4704664e1deb76c9331e637564c257d68a08"

def binary_to_hex(bin_string):
    return hex(int(bin_string, 2))[2:].zfill(len(bin_string) // 4)


def worker(num_zeros, num_ones, stop_event):


    while True:
        if stop_event.is_set():
            break

        bits = ['0'] * num_zeros + ['1'] * (num_ones - 4)
        random.shuffle(bits)

        bits.insert(0, '1')
        bits.insert(1, '1')
        bits.insert(2, '1')
        bits.insert(3, '1')
        private_key_bin = ''.join(bits)

        private_key_bin = '0' * (256 - 30) + private_key_bin

        private_key_hex = binary_to_hex(private_key_bin)

        sk = ecdsa.SigningKey.from_string(bytes.fromhex(private_key_hex), curve=ecdsa.SECP256k1)
        public_key = sk.get_verifying_key().to_string().hex()

        compressed_public_key = '02' + public_key[0:64] if int(public_key[-2:], 16) % 2 == 0 else '03' + public_key[0:64]
        compressed_public_key_bytes = bytes.fromhex(compressed_public_key)

        ripemd160_hash = hashlib.new('ripemd160')
        ripemd160_hash.update(hashlib.sha256(compressed_public_key_bytes).digest())
        hashed_compressed_public_key = ripemd160_hash.digest().hex()


        if hashed_compressed_public_key == target_hash:
            print(private_key_hex)
            print("hash160:", hashed_compressed_public_key)
            print("Target hash found!")

            stop_event.set()
            break



def main():
    num_processes = 12
    processes = []
    stop_event = Event()

    start_time = time.time()

    for _ in range(num_processes):
        process = Process(target=worker, args=(14, 16, stop_event))
        processes.append(process)

    for process in processes:
        process.start()

    for process in processes:
        process.join()

    if stop_event.is_set():
        for process in processes:
            process.terminate()

    end_time = time.time()
    execution_time_seconds = end_time - start_time

    hours = int(execution_time_seconds // 3600)
    minutes = int((execution_time_seconds % 3600) // 60)
    seconds = int(execution_time_seconds % 60)

    print(f"Time: {hours} h, {minutes} m, {seconds} s")



if __name__ == '__main__':
    main()

I just try it and I can find it in 30 sec on #30. For #66 it's still difficult to scan without GPU.

Try also for #35, #40, or #45.

Scan it in python without GPU too slow for 66 bit. The only way I can figure out now as I previous posted.

Step 1

Let's say start scanning from 60 bits. Use Python to do the combination.

0s - 30 - 1s -30 = 50%
0s - 31 - 1s  29 = 51.67%
0s - 32 - 1s  28 = 53.4%
0s - 33 - 1s  27 = 55%
0s - 34 - 1s  26 = 56.67%
0s - 35 - 1s  25 = 58.34%
0s - 36 - 1s  24 = 60%

Then reverse 0s and 1s position in max 60% which is most likely where the key are.

Step 2
Convert results from Binary to Hexa

Step 3
Make a batch file and run in Bitcrack to use GPU

Step 4
Run until it hits the key or else increase the percentages if it doesn't.

By using Python to eliminate those less like key first, then scan the list with GPU

Pro Python definitely have no problem with it but I'm not pro. Combine pro Python with GPU, I believe the results will be as Bestie said, achievable in 3 days.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
tptkimikaze
on 12/08/2023, 19:16:01 UTC
Using this code below to find the private key for puzzle 30, which specifies that the first 4 bits are 1. Running it with 12 processes on my i7-12700kf, the private key was found in about 1 minute and 28 seconds.

Code:
000000000000000000000000000000000000000000000000000000003d94cd64
hash160: d39c4704664e1deb76c9331e637564c257d68a08
Target hash found!
Time: 0 h, 1 m, 28 s

Code:
import hashlib
import ecdsa
import random
import time
from multiprocessing import Process, Event

target_hash = "d39c4704664e1deb76c9331e637564c257d68a08"

def binary_to_hex(bin_string):
    return hex(int(bin_string, 2))[2:].zfill(len(bin_string) // 4)


def worker(num_zeros, num_ones, stop_event):


    while True:
        if stop_event.is_set():
            break

        bits = ['0'] * num_zeros + ['1'] * (num_ones - 4)
        random.shuffle(bits)

        bits.insert(0, '1')
        bits.insert(1, '1')
        bits.insert(2, '1')
        bits.insert(3, '1')
        private_key_bin = ''.join(bits)

        private_key_bin = '0' * (256 - 30) + private_key_bin

        private_key_hex = binary_to_hex(private_key_bin)

        sk = ecdsa.SigningKey.from_string(bytes.fromhex(private_key_hex), curve=ecdsa.SECP256k1)
        public_key = sk.get_verifying_key().to_string().hex()

        compressed_public_key = '02' + public_key[0:64] if int(public_key[-2:], 16) % 2 == 0 else '03' + public_key[0:64]
        compressed_public_key_bytes = bytes.fromhex(compressed_public_key)

        ripemd160_hash = hashlib.new('ripemd160')
        ripemd160_hash.update(hashlib.sha256(compressed_public_key_bytes).digest())
        hashed_compressed_public_key = ripemd160_hash.digest().hex()


        if hashed_compressed_public_key == target_hash:
            print(private_key_hex)
            print("hash160:", hashed_compressed_public_key)
            print("Target hash found!")

            stop_event.set()
            break



def main():
    num_processes = 12
    processes = []
    stop_event = Event()

    start_time = time.time()

    for _ in range(num_processes):
        process = Process(target=worker, args=(14, 16, stop_event))
        processes.append(process)

    for process in processes:
        process.start()

    for process in processes:
        process.join()

    if stop_event.is_set():
        for process in processes:
            process.terminate()

    end_time = time.time()
    execution_time_seconds = end_time - start_time

    hours = int(execution_time_seconds // 3600)
    minutes = int((execution_time_seconds % 3600) // 60)
    seconds = int(execution_time_seconds % 60)

    print(f"Time: {hours} h, {minutes} m, {seconds} s")



if __name__ == '__main__':
    main()

I just try it and I can find it in 30 sec on #30. For #66 it's still difficult to scan without GPU.

Try also for #35, #40, or #45.

Scan it in python without GPU too slow for 66 bit. The only way I can figure out now as I previous posted.

Step 1

Let's say start scanning from 60 bits. Coding in Python.

0s - 30 - 1s -30 = 50%
0s - 31 - 1s  29 = 51.67%
0s - 32 - 1s  28 = 53.4%
0s - 33 - 1s  27 = 55%
0s - 34 - 1s  26 = 56.67%
0s - 35 - 1s  25 = 58.34%
0s - 36 - 1s  24 = 60%

Then reverse 0s and 1s position in max 60% which is most likely where the key are.

Step 2
Convert Binary to Hexa

Step 3
Make a batch file and run in Bitcrack.

Step 4
Run until it hits the key or else increase the percentages if it doesn't.