Search content
Sort by

Showing 20 of 44 results by karrask
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 28/02/2025, 15:28:06 UTC
The topic has become toxic. You're all unhappy about something, arguing with each other. some lack knowledge, others lack money... but, it surprises me that no one who has the knowledge has yet found a way that will reduce any range by 70 percent or more. I'll give you a hint, at a speed of 4 billion per second, 68 are sorted out in a week. I envy your knowledge... but I think you are fools who are limited by your own knowledge...The answer is in front of you, and you are blind...about two years ago, I came across puzzles and the first thought was correct, but after reading your thoughts (on this topic), I was led in the other direction, it was my mistake...and now, I hope, they will help me with the implementation and write the code...I'm sorry for my words...Good day to you...I wish you good luck!
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 23/02/2025, 10:33:19 UTC
Deepseek how do you know bc1qgp48hjxp9uctzysq458dtlhk7ewtf9k4xpjpjj is the creator, their reason for sending 184USD TO #66 is not clear, but you are assuming it is a clue to #67?

Also if it was a clue why ignore the zeros, 0.00189717 = 0.007C553B1ADE27BE0A11   and 0.00010392  =  0.0006CF7D005BC5789A9B

I think you stretching cause as far as I know nobody ever correctly guessed #66 started with 283 , how could they guess #67 but not #66

https://www.talkimg.com/images/2025/02/17/qMGlW.png

I was about 8 hours short of opening 66, I was rummaging through this range that day. It's a shame.
I started with the logarithm 19.666 and didn't get there. Which was found through triangles in AutoCAD.
Sry i use translater.
Hi. Friend, let's talk without an interpreter. I have a couple of questions.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 21/02/2025, 04:34:52 UTC
I hope it was one of the people here who succeeded, who can please let us know how they sent the BTC, whether they used 'marasplit' or something else, and what techniques worked for them. I hope it was some enthusiastic member of this community. It is great news! From the way they withdrew, I assume they know very well what they are doing.

https://www.talkimg.com/images/2025/02/21/qs6rG.png
block  MARA Pool
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 19/02/2025, 10:58:46 UTC
Could you provide us some code to verify these calculations?

need to put at "twset" with name "twset_b11.py"
Code:
import gmpy2

def gen_tame_wild(lower_bound, upper_bound, herd_size, N):

    tame = []
    wild = []
    (lower, lower_idx), (upper, upper_idx) = closest_triangular_numbers(lower_bound)

    print(f'[~] Tame/Wild helds: {herd_size}, lower: {lower_bound}, upper: {upper_bound}, size: {upper_bound - lower_bound}')

    generator = get_next_triangular(upper, upper_idx, N, 1)
    while len(tame) != herd_size:
        (upper, upper_idx) = next(generator)
        if upper > upper_bound:
            print(f'\nFail fill Tame/Wild with N={N}')
            exit()
        tame.append(gmpy2.mpz(upper))
        wild.append(gmpy2.mpz(upper_idx))
        print(f'[~] Tame/Wild herds current: {len(tame)}', end = '\r')

    return (tame, wild)

################################################################################################
def check_consecutive_bits(number, N):
    if N == 0:
        return True
       
    count_zeros = 0
    count_ones = 0
   
    # Пpoxoдим пo кaждoмy битy чиcлa
    while number > 0:
        # Пpoвepяeм тeкyщий бит чиcлa
        if number & 1 == 0:
            count_zeros += 1
            count_ones = 0
        else:
            count_ones += 1
            count_zeros = 0
       
        # Ecли пoдpяд N oдинaкoвыx битoв нaйдeнo, вoзвpaщaeм True
        if count_zeros > N or count_ones > N:
            return False
       
        # Cдвигaeм чиcлo нa 1 впpaвo для пpoвepки cлeдyющeгo битa
        number >>= 1
   
    # Ecли нe нaшли пoдpяд N oдинaкoвыx битoв
    return True

def closest_triangular_numbers(n):
    def triangular_number(i):
        return (i * (i + 1)) // 2

    left, right = 1, int((2 * n) ** 0.5) + 1

    while left <= right:
        mid = (left + right) // 2
        t_mid = triangular_number(mid)
        if t_mid == n:
            upper_i = mid + 1
            upper_t = triangular_number(upper_i)
            return ( (t_mid, mid), (upper_t, upper_i) )
        elif t_mid < n:
            left = mid + 1
        else:
            right = mid - 1

    lower_i = right
    lower_t = triangular_number(lower_i)
    upper_i = right + 1
    upper_t = triangular_number(upper_i)
    return ( (lower_t, lower_i), (upper_t, upper_i) )

def get_next_triangular(value, index, N, operation):
    while True:
        index += operation
        value += index * operation
        if check_consecutive_bits(value, N) and check_consecutive_bits(index, N):
            yield (value, index)


################################################################################################
def test(puzzle_complexity, compressed_pubkey, N):

    import time
    start_time = time.time()


    herd_size   = 2 ** (puzzle_complexity // 5)
    lower_bound = 2 ** (puzzle_complexity - 1)
    upper_bound = (2 ** puzzle_complexity) - 1

    tame_start_values, wild_start_values = gen_tame_wild(lower_bound, upper_bound, herd_size, N)

    hours, rem = divmod(time.time() - start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'\n[+] Tame and Wild herds initialized. {elapsed_str}')

    for x in tame_start_values:
        print(bin(x)[2:])
    for x in wild_start_values:
        print(bin(x)[2:])


if __name__ == '__main__':

    N = 4

    puzzle_complexity = 40
    compressed_pubkey = "03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4"
   
    #puzzle_complexity = 53
    #compressed_pubkey = "020faaf5f3afe58300a335874c80681cf66933e2a7aeb28387c0d28bb048bc6349"
   
    test(puzzle_complexity, compressed_pubkey, N)

main code:
Code:
import gmpy2

from twset.twset_b11 import gen_tame_wild
#from twset.twset_b12 import gen_tame_wild
#from twset.twset_b21 import gen_tame_wild
#from twset.twset_b22 import gen_tame_wild

N = gmpy2.mpz(6)

puzzle_complexity = 40
compressed_pubkey = "03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4"

#puzzle_complexity = 41
#compressed_pubkey = "03b357e68437da273dcf995a474a524439faad86fc9effc300183f714b0903468b"

#puzzle_complexity = 160
#compressed_pubkey = "02e0a8b039282faf6fe0fd769cfbc4b6b4cf8758ba68220eac420e32b91ddfa673"

#puzzle_complexity = 135
#compressed_pubkey = "02145d2611c823a396ef6712ce0f712f09b9b4f3135e3e0aa3230fb9b6d08d1e16"

#puzzle_complexity = 53
#compressed_pubkey = "020faaf5f3afe58300a335874c80681cf66933e2a7aeb28387c0d28bb048bc6349"

#puzzle_complexity = 20
#compressed_pubkey = "033c4a45cbd643ff97d77f41ea37e843648d50fd894b864b0d52febc62f6454f7c"

##########################################################################################

import time
import os
import sys
import random
from math import log2, sqrt, log

# Oчиcткa экpaнa в зaвиcимocти oт OC
if os.name == 'nt':
    os.system('cls')
else:
    os.system('clear')
current_time = time.ctime()
sys.stdout.write("\033[?25l")  # Cкpыть кypcop
sys.stdout.write(f"\033[01;33m[+] Kangaroo: {current_time}\n")
sys.stdout.flush()

# Пapaмeтpы эллиптичecкoй кpивoй secp256k1
modulus = gmpy2.mpz(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F)
curve_order = gmpy2.mpz(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141)
generator_x = gmpy2.mpz(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798)
generator_y = gmpy2.mpz(0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)

base_point = (generator_x, generator_y)

def elliptic_curve_add(point1, point2):
    infinity = (0, 0)
    if point1 == infinity:
        return point2
    if point2 == infinity:
        return point1
   
    x1, y1 = point1
    x2, y2 = point2

    if x1 == x2:
        if y1 == y2:
            # Удвoeниe тoчки
            denominator = (y1 << 1) % modulus
            inv_denominator = gmpy2.invert(denominator, modulus)
            slope = (3 * x1 * x1 * inv_denominator) % modulus
        else:
            return infinity
    else:
        x_diff = (x2 - x1) % modulus
        inv_x_diff = gmpy2.invert(x_diff, modulus)
        slope = ((y2 - y1) * inv_x_diff) % modulus

    result_x = (slope * slope - x1 - x2) % modulus
    result_y = (slope * (x1 - result_x) - y1) % modulus
   
    return (result_x, result_y)

def scalar_multiply(scalar, point=base_point):
    result = (0, 0)
    current_point = point
    while scalar:
        if scalar & 1:
            result = elliptic_curve_add(result, current_point)
        current_point = elliptic_curve_add(current_point, current_point)
        scalar >>= 1
    return result

def x_to_y(x_coord, y_parity, prime=modulus):
    x_cubed = gmpy2.powmod(x_coord, 3, prime)
    x_squared = gmpy2.powmod(x_coord, 2, prime)
    y_squared = (x_cubed + 7) % prime
    y_coord = gmpy2.powmod(y_squared, (prime + 1) // 4, prime)
   
    if y_parity == 1:
        y_coord = (-y_coord) % prime
    return y_coord

def generate_power_steps(max_power):
    return [gmpy2.mpz(1 << power) for power in range(max_power)]

def handle_found_solution(private_key):
    hex_representation = "%064x" % abs(private_key)
    decimal_value = int(hex_representation, 16)
    print("\n\033[32m[+] PUZZLE SOLVED \033[0m")
    print(f"\033[32m[+] Private key (dec): {decimal_value} \033[0m")
    with open("KEYFOUNDKEYFOUND.txt", "a") as file:
        file.write(f"\n\nSOLVED {current_time}")
        file.write(f"\nPrivate Key (decimal): {decimal_value}")
        file.write(f"\nPrivate Key (hex): {hex_representation}")
        file.write(f"\n{'-' * 100}\n")
    return True

def kangaroo_search(precomputed_points, wild_start_point, dp_rarity, herd_size,
                   max_hop_power, upper_bound, lower_bound, power_steps):

    solution_found = False

    # Инициaлизaция кeнгypy
    start_time0 = time.time()

    start_time = time.time()
    tame_start_values, wild_start_values = gen_tame_wild(lower_bound, upper_bound, herd_size, N)
    hours, rem = divmod(time.time() - start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'\n[+] Tame and wild herds initialized. {elapsed_str}')

    start_time = time.time()
    tame_points = [scalar_multiply(value) for value in tame_start_values]
    hours, rem = divmod(time.time() - start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'[+] Tame points initialized. {elapsed_str}')

    start_time = time.time()
    wild_points = [elliptic_curve_add(wild_start_point, scalar_multiply(value)) for value in wild_start_values]
    hours, rem = divmod(time.time() - start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'[+] Wild points initialized. {elapsed_str}')
   
    start_time = time.time()
    tame_steps = [gmpy2.mpz(0) for _ in range(herd_size)]
    wild_steps = tame_steps.copy()
    hours, rem = divmod(time.time() - start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'[+] Tame and wild steps initialized. {elapsed_str}')
   
    hours, rem = divmod(time.time() - start_time0, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'[+] Tame and wild points initialized. {elapsed_str}')
   
    total_hops = 0
    previous_hops_count = 0
    tame_distinguished_points = {}
    wild_distinguished_points = {}
    last_print_time = time.time()
    search_start_time = time.time()
   
    while True:
        # Oбpaбoткa pyчныx кeнгypy
        for idx in range(herd_size):
            total_hops += 1
            power_index = int(tame_points[idx][0] % max_hop_power)
            step_size = power_steps[power_index]
           
            if tame_points[idx][0] % dp_rarity == 0:
                x_coord = tame_points[idx][0]
                if x_coord in wild_distinguished_points:
                    solution = wild_distinguished_points[x_coord] - tame_start_values[idx]
                    solution_found = handle_found_solution(solution)
                    break
                tame_distinguished_points[x_coord] = tame_start_values[idx]
           
            tame_start_values[idx] += step_size
            tame_points[idx] = elliptic_curve_add(precomputed_points[power_index], tame_points[idx])
        if solution_found: break

        # Oбpaбoткa дикиx кeнгypy
        for idx in range(herd_size):
            total_hops += 1
            power_index = int(wild_points[idx][0] % max_hop_power)
            step_size = power_steps[power_index]
           
            if wild_points[idx][0] % dp_rarity == 0:
                x_coord = wild_points[idx][0]
                if x_coord in tame_distinguished_points:
                    solution = wild_start_values[idx] - tame_distinguished_points[x_coord]
                    solution_found = handle_found_solution(solution)
                    break
                wild_distinguished_points[x_coord] = wild_start_values[idx]
           
            wild_start_values[idx] += step_size
            wild_points[idx] = elliptic_curve_add(precomputed_points[power_index], wild_points[idx])
        if solution_found: break
       
        # Bывoд cтaтиcтики
        current_time = time.time()
        if current_time - last_print_time >= 5:
            elapsed_since_last = current_time - last_print_time
            hops_since_last = total_hops - previous_hops_count
            hops_per_sec = hops_since_last / elapsed_since_last if elapsed_since_last > 0 else 0
           
            total_elapsed = current_time - search_start_time
            hours, rem = divmod(total_elapsed, 3600)
            minutes, seconds = divmod(rem, 60)
            elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
           
            last_print_time = current_time
            previous_hops_count = total_hops
           
            print(f'[+] [Hops: 2^{log2(total_hops):.2f} <-> {hops_per_sec:.0f} h/s] [{elapsed_str}]',
                  end='\r', flush=True)

    print()
    print(f'[+] Total hops: {total_hops}')
    hours, rem = divmod(time.time() - search_start_time, 3600)
    minutes, seconds = divmod(rem, 60)
    elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
    print(f'[+] Search duration: {elapsed_str}')
    return solution_found

lower_bound = 2 ** (puzzle_complexity - 1)
upper_bound = (2 ** puzzle_complexity) - 1
dp_rarity = 1 << ((puzzle_complexity - 1) // 2 - 2) // 2 + 2

max_hop_power = round(log(2 ** puzzle_complexity) + 5)
herd_size = 2 ** (puzzle_complexity // 5)
power_steps = generate_power_steps(max_hop_power)

# Дeкoдиpoвaниe пyбличнoгo ключa
if len(compressed_pubkey) == 66:
    x_coord = gmpy2.mpz(int(compressed_pubkey[2:66], 16))
    y_parity = int(compressed_pubkey[:2]) - 2
    y_coord = x_to_y(x_coord, y_parity)
else:
    print("[ERROR] Invalid public key format")
    sys.exit(1)

wild_start_point = (x_coord, y_coord)

# Пpeдвapитeльный pacчeт тoчeк для пpыжкoв
precomputed_points = [base_point]
for _ in range(max_hop_power - 1):
    precomputed_points.append(elliptic_curve_add(precomputed_points[-1], precomputed_points[-1]))
print(f'[+] Precomputed jump points ready: {max_hop_power}')

# Зaпycк пoиcкa
search_start_time = time.time()
print(f"[+] Puzzle complexity: {puzzle_complexity}-bit")
print(f"[+] N: {N}-bit")
print(f"[+] Search range: 2^{puzzle_complexity-1} - 2^{puzzle_complexity}")
print(f"[+] Distinguished point rarity: 2^{int(log2(dp_rarity))}")
print(f"[+] Distinguished point rarity: {dp_rarity}")
expected_hops = 2.13 * sqrt(2 ** puzzle_complexity)
print(f"[+] Expected hops: 2^{log2(expected_hops):.2f} ({int(expected_hops)})")

search_start_time_begin = kangaroo_search(
    precomputed_points,
    wild_start_point,
    dp_rarity,
    herd_size,
    max_hop_power,
    upper_bound,
    lower_bound,
    power_steps
)

hours, rem = divmod(time.time() - search_start_time, 3600)
minutes, seconds = divmod(rem, 60)
elapsed_str = f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
print(f"[+] Total execution time: {elapsed_str}")
прекрасно! I would like your knowledge....
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 18/02/2025, 16:24:39 UTC

Could you explain more how you were doing this?



It will be pointless. 99.9% of ideas are criticized and easily destroyed.
Therefore, I see no point in showing my results, because they are rather based on chance and the dark side. lol.

But for 67 my approach is still the same. I also keep a log of prefixes so I can understand what ranges I've gone through. It makes absolutely no sense, but I just like to see thats prefixes.

I have some good work on random libraries, but not perfect. For example, for 130 bits, my library guesses from 90 to 95 bits in 15-25 seconds.
But for example for 66 from 50 to 58 bits.
Likewise for 40 from 30 to 39 bits.
https://www.talkimg.com/images/2025/02/18/qPIol.png
https://www.talkimg.com/images/2025/02/18/qPsx1.png
https://www.talkimg.com/images/2025/02/18/qPNuo.png

For any prefix 67bits these are the results.
https://www.talkimg.com/images/2025/02/18/qPyCC.png
67, I have absolutely no idea where he might be. I’m probably doing this for the sake of an idea, since bots will instantly change tx. This is of course very disappointing.
Good luck everyone.

share the code))) бро)
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 17/02/2025, 15:59:07 UTC
I have an idea.  the question arises - is it possible to change the bsgs keyhant, namely the random mode, to suit my mathematics? so that the values are not random, but are calculated using a formula.

BSGS requires a public key (e.g. puzzles 135, 140, 145, 150, 155, 160, or a signed message or TX for all other puzzles).

IDK what you're doing but BSGS is fully deterministic, unless you run multiple smaller BSGS over (random) subintervals, or you tradeoff the 100% chances to find the key with a smaller memory footprint (potentially missing the solution). But before all, you should answer yourself why you want to use BSGS in the first place. For 135 there might not be enough storage on our planet to even finish off iterating through the baby steps, let alone enough fast RAM to store all of that, to run through the giant steps. At each giant step, a lookup must be performed in the table, but if you can't have the table (or it is not a fast table, which means that all and any of it needs to be directly accessible instantly, not using any network, cloud, cables, compression, etc.) you're at a dead end.
then can you explain - random values are generated, and each of them is checked for a match using the public key?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 17/02/2025, 15:06:29 UTC
However, by sheer coincidence, he correctly predicted the first few hex digits (462, 463) of Puzzle 67.

This shocked retired_coder

You are my hero! We need more magic circles! Grin
He was talking about the 66th puzzle. after it was solved.
(463)(462)17550346335726
and he missed 3 in his calculations. It should have been 466

3 and 5 are not numbers, they are digits. Put there to deceive vigorous eyes. I hope @k3ntINA is doing well, after magic horoscope and magic rectangle I assume (and hope) we'll get either a magic tetrahedron or a magic Tesseract next. 2D is getting boring.
He wasn't the only one guessing on the coffee grounds. almost every visitor to this topic, or anyone who came across puzzles, tried to find some kind of system in them.   I don't have a conspiracy theory, I have an idea.  the question arises - is it possible to change the bsgs keyhant, namely the random mode, to suit your mathematics? so that the values are not random, but are calculated using a formula.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 17/02/2025, 13:24:10 UTC
While reading through this entire thread, I came across two intriguing individuals:

satoshi_rising – Everyone knows about him and how he tenfolded the puzzle prize in 2017.
retired_coder – He supposedly owns the private keys to three puzzle challenges.

This got me thinking—what if these two are actually the same person?

I carefully analyzed all of retired_coder’s posts and noticed something else interesting. There was a user, k3ntINA, who attempted to predict Puzzle 67’s private key using a so-called "magic trick" (which, from a cryptographic standpoint, makes no sense).


However, by sheer coincidence, he correctly predicted the first few hex digits (462, 463) of Puzzle 67.

This shocked retired_coder, who then reacted to it in a humorous way, as if trying to downplay the prediction. Here’s his post about k3ntINA:


You are my hero! We need more magic circles! Grin


It seemed like he wanted to ensure that nobody took the prediction seriously.

This makes me wonder—could it be that he actually knows all the private keys to every puzzle?

My above post is also related to this prediction. The question is: does Puzzle 67 start with the hex '46' ?
He was talking about the 66th puzzle, and even then after it was solved.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 17/02/2025, 13:04:51 UTC
no way, with the first 2 digits known   it should had been resolved until now
what kind? How do you know that?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 14/02/2025, 17:49:45 UTC
It's page 369, it's secret code of nikola Tesla , hope someone shows success before page number change
brainless
Member
**


Activity: 369
Merit: 35
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 05/02/2025, 04:12:08 UTC
need a kangaroo that will receive a public key and compare it with each jump. don't need tables, DP, etc.

what you described it isn't kangaroo it i just regular cracking search and it doesn't have the square root of N benefit of birthday paradox.

You need tables full of DP to make it more efficient and to be able to use the square root of N that bring the Kangaroo algorithm by the birthday paradox.
yes, you are right (with some caveat). probably, the easiest option would be to upgrade the keyhant (I thought about it but came to the conclusion that kangaroo is a more interesting option). could you tell me where in the code to upgrade the random to suit your mathematics, so as not to touch the basic logic of the program in any way?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 05/02/2025, 03:40:21 UTC
How are the kangaroo starting points calculated? what data (values) does the program use? what value is the public key converted from?

Kangaroo is faster trustme, algorithm is difficult to explain at first glance.

As some other users explain before

Tame kangaroos jumps pseudo-random but deterministic from a know point like Start Base range (0x7......) or any other know value near our target publick key, so each time that a DP point (Distinguished Point with some amount of bits in ZERO in the X coordinate) is found we know its exact value.

In the other hand Wild kangaroos jumps pseudo-random but deterministic from an UN-know point like the target key, so each DP value that we found we only knows its relative value to our target key.

So the bigger dataset for tame or wild DP we have more probabilities that one item in one dataset is found in the another dataset, one that you found a match you automatically can translate all the Unknown DP into its real value this include the TARGET UNKNOWN PUBLIC KEY.

According to the birthday paradox such collision must occur soon of later so you with math/statics can calculate what are those odds for each new found value. Those odds grown exponentially.

Remember in the original birthday paradox in a room with 25 random people the probabilities that two of them have the same day of birthday are near 50%.
Thank you for your reply.
 several more questions immediately arise - is it possible to write an algorithm so that only tamed kangaroos participate in the process?(maybe someone has such a version? Can you share it?) and jumped only at the set points?
 immediately checking for a match.
You can run tames, by themselves, to "prebuild" your hashtable or whatever is collecting and storing your points and distances. However, eventually you have to run wilds and check for a collision. A tame and wild point must match, to solve the key. And in some variants, a wild and wild points can match and you can solve the key. But running tames only is just taking any private key and multiplying it by G. So if you find a match, it means you landed on the same point twice, but you already knew the distance, so it doesn't help you any for solving the key.
need a kangaroo that will receive a public key and compare it with each jump. don't need tables, DP, etc.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 05/02/2025, 03:35:52 UTC

Thank you for the clarification. I wanted to understand the difference between a keyhant and a kangaroo. as for the fastest algorithm, I meant which is the fastest at the moment, not in theory.
 I have an idea and I would really like someone to tell me about kangaroo's work. need the core of the algorithm and not much information to change the jumping mechanics.  also need an algorithm for calculating the bitcoin address.
 Can you help me ?

How are the kangaroo starting points calculated? what data (values) does the program use? what value is the public key converted from?

You will want to look at papers published for a deeper understanding or look at the kangaroo discussions on here but for basic understanding kangaroo has 2 types tames and wilds together they are a herd usually 1 tame and 2 wilds you can look at jeanlucpons or retiredC's readme for what they chose, tames jump to a random point then increment sequentially recording every point they land on while wilds jump from random point to random point not recording anything until they run into a tame then they hash and if the public key matches wow you found the key but if not then you get a dead kangaroo.
thanks for your reply. in my opinion, this is not a very reasonable approach. I wrote the code about two weeks ago. I looked at it and didn't like something about it, so I abandoned it. and a couple of days ago I remembered about him and came up with an idea. I didn't refine much, I checked on small ranges (up to 40 bits, since the speed is very low) - the result surprised me. if I tell you about the values I received, none of you will believe it. and it doesn't make sense yet. I'm currently looking for someone to help me write or give a kangaroo version so that I can modify the jumping math.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 05/02/2025, 03:05:06 UTC
How are the kangaroo starting points calculated? what data (values) does the program use? what value is the public key converted from?

Kangaroo is faster trustme, algorithm is difficult to explain at first glance.

As some other users explain before

Tame kangaroos jumps pseudo-random but deterministic from a know point like Start Base range (0x7......) or any other know value near our target publick key, so each time that a DP point (Distinguished Point with some amount of bits in ZERO in the X coordinate) is found we know its exact value.

In the other hand Wild kangaroos jumps pseudo-random but deterministic from an UN-know point like the target key, so each DP value that we found we only knows its relative value to our target key.

So the bigger dataset for tame or wild DP we have more probabilities that one item in one dataset is found in the another dataset, one that you found a match you automatically can translate all the Unknown DP into its real value this include the TARGET UNKNOWN PUBLIC KEY.

According to the birthday paradox such collision must occur soon of later so you with math/statics can calculate what are those odds for each new found value. Those odds grown exponentially.

Remember in the original birthday paradox in a room with 25 random people the probabilities that two of them have the same day of birthday are near 50%.
Thank you for your reply.
 several more questions immediately arise - is it possible to write an algorithm so that only tamed kangaroos participate in the process?(maybe someone has such a version? Can you share it?) and jumped only at the set points?
 immediately checking for a match.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 04/02/2025, 07:50:11 UTC
hello. Can I ask you a question about kangaroos? using the example of the kangaroo RC.
When the program starts, the total number of kangaroos is displayed - 1507328 kangaroos, Speed: 2271 MKeys/s - do I understand correctly that the speed is indicated for each kangaroo?

no its all the kangaroo's combined.
why is the speed so low for just math? keyhant (bsgs) is much faster with enough RAM and processor threads.
do you know where to find the fastest algorithm for obtaining a public key and address? maybe someone has, can you share?

BSGS shows speed of how many keys are not a solution, it doesn't compute any of them except one in every sqrt(interval_size) keys. Think of it like you have a really big table of divisors (RAM) for some number, and then checking whether you can find some number (the solution) which is the inverse of the divisor. Because of the math, you can dismiss an entire sqrt(N) subinterval by just doing a single check after some simple multiplication or whatever.

Kangaroo shows speed of keys that are actually being computed. It doesn't require any RAM, just a small constant storage. It can solve the types os problems for which there isn't enough RAM on planet Earth to run a BSGS algorithm (like any puzzle above 100 bits more or less).

It doesn't matter that you see BSGS speeds of petakeys/s because the interval size is so huge that this "speed" is totally useless. You should probably divide that "speed" by sqrt(N) to have a fair comparison with a Kangaroo speed.

We don't have a fastest algorithm to do what you want, otherwise this thread would be dead since many years ago. And probably all cryptos would have a value of zero since they'd be broken.

The speed is low because you don't have a fast enough computing device. No one has a magic unicorn chip that does ECC math for free, without wasting power and dissipating heat.

Which one is better? They both have the same actual real speed, but BSGS requires RAM which you might not have enough of (the type of amounts that would require an entire solar system, if you go for higher puzzles)
Thank you for the clarification. I wanted to understand the difference between a keyhant and a kangaroo. as for the fastest algorithm, I meant which is the fastest at the moment, not in theory.
 I have an idea and I would really like someone to tell me about kangaroo's work. You need the core of the algorithm and not much information to change the jumping mechanics. We also need an algorithm for calculating the bitcoin address.
 Can you help me with this?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 03/02/2025, 17:19:08 UTC
hello. Can I ask you a question about kangaroos? using the example of the kangaroo RC.
When the program starts, the total number of kangaroos is displayed - 1507328 kangaroos, Speed: 2271 MKeys/s - do I understand correctly that the speed is indicated for each kangaroo?

no its all the kangaroo's combined.
why is the speed so low for just math? keyhant (bsgs) is much faster with enough RAM and processor threads.
do you know where to find the fastest algorithm for obtaining a public key and address? maybe someone has, can you share?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 03/02/2025, 05:32:10 UTC
hello. Can I ask you a question about kangaroos? using the example of the kangaroo RC.
When the program starts, the total number of kangaroos is displayed - 1507328 kangaroos, Speed: 2271 MKeys/s - do I understand correctly that the speed is indicated for each kangaroo?
Post
Topic
Board Development & Technical Discussion
Re: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo
by
karrask
on 01/02/2025, 16:56:15 UTC
@RetiredCoder, do You plan any other minipuzzles (or maxi) in the future? Let us know "when", if You plan something, please Smiley

I don't plan them in advance, but anyway here is another one:
https://bitcointalk.org/index.php?topic=5526453.0
Good afternoon! when the program starts, the number of kangaroos is displayed, 1548806? does each scan its segment sequentially at a rate of 2.3 million per second? Did you get it right, or was there a mistake somewhere?
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
karrask
on 11/01/2025, 11:33:23 UTC
puzzle 135 ,140,145,150,155 and 160 will be sent to
this address: bc1qqq7mmrt8hwk9gkamtkz22kpskvxdgl64rn72pl
I am the solver,
create a signed offline transaction and trust the mara service
Post
Topic
Board Development & Technical Discussion
Re: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo
by
karrask
on 09/01/2025, 12:54:31 UTC
Teмa интepecнaя, мнoгoe пoнял, пoпpoбyю пopaбoтaть в этoм нaпpaвлeнии.
поработай)