Search content
Sort by

Showing 20 of 55 results by FrozenThroneGuy
Post
Topic
Board Development & Technical Discussion
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 26/06/2025, 11:09:46 UTC
Fast…

I think there is now a discrepancy in how the actual speed is measured, depending on the size of dp_table.bin. For example, with a database larger than 50GB, the speed reaches petabits per second in hops similar to Keyhunt. This is especially noticeable when working on smaller puzzles, such as Puzzle 55, 60, or 66, if the database is "too large" for a specific range.
Hello, Akito! Keyhunt speed is not a “fair speed”, it’s include the size of each giant step. For example giant step size is 1b points and you have done 1 m steps per second. Fair speed - 1Mkeys/s, BSGS speed - 1Pkey/s.
In my Mark1, I show a “fair speed”, instead of Kangaroo speed.

And I have solved a huge problem with solving speed SSD dp storing. Right now all are OK. Solving speed is the same as RAM storing DP.
ChatGPT helped to do it, it take me a blocks of code with an errors (not errors, problems with dp table size and hashing).
Post
Topic
Board Development & Technical Discussion
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 25/06/2025, 11:43:48 UTC
New version is ready: https://github.com/Dookoo2/Mark1

I just solved Puzzle 66 in two-tenths of a second.  Cool
Fast… But how to solve 100 bits in less than one hour on 1 consumer level GPU like 4090 or 5090? This is a challenge.
Post
Topic
Board Development & Technical Discussion
Merits 1 from 1 user
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 25/06/2025, 10:50:34 UTC
⭐ Merited by nomachine (1)
New version is ready: https://github.com/Dookoo2/Mark1
Post
Topic
Board Development & Technical Discussion
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 25/06/2025, 10:21:33 UTC
SSD storing DP
Code:
root@ubuntu:/home/ubuntu/Mark1# ./Mark1 --range 18014398509481983:36028797018963967  --pubkey 0385a30d8413af4f8f9e6312400f2d194fe14f02e719b24c3f83bf1fd233a8f963 --dp_point 500000 --dp_bits 10 --ram 8 --save-dp

=========== Phase-0: Data summary ==========
DP table (SSD): 40.7Mb  ( 500000 / 666667 slots, load 75.00% )
Bloom    (RAM): 977Kb

========== Phase-1: Building traps =========
Unique traps: 500000/500000 (done)
Saved 500000 traps to DP.bin (19.1Mb)

=========== Phase-2: Kangaroos =============
Speed: 7.13 MH/s | Hops: 631767040 | Restart wild: 0 | Time: 0:0:505

============= Phase-3: Result ==============
Private key : 0x000000000000000000000000000000000000000000000000006ABE1F9B67E114
Found by thr: 4
Wild wraps  : 0  [no wrap]
Wild restart: 0
Total time  : 00:00:50.013
Private key : saved to FOUND.txt
Post
Topic
Board Development & Technical Discussion
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 25/06/2025, 05:40:53 UTC
I think the next point to address regarding the Kangaroo algorithm is to avoid loading the DP into RAM. I think that is a strong limiting point for Kangaroo, especially when it comes to high ranges.

Has anyone thought of any interesting ideas to solve this?.

It ain’t worth makin’, but you could totally build a Memory-Mapped DP Table System that mixes a Bloom filter (in RAM) with a memory-mapped DP table (on disk). Gotta reserve, like, 2-3x the expected DP table size to keep things runnin’ smooth. And for those massive tables over 1TB? Yeah, you’ll need to split ’em across multiple files.Just like I did in my BSGS. But here’s the catch: If someone’s crazy enough to try solvin’ Puzzle 135, they’re gonna need thousands upon thousands of terabytes of storage. Grin
I have done it already:) switch Dp_table from RAM to SSD:)
Bloom - RAM
Dp_table - SSD



Post
Topic
Board Development & Technical Discussion
Merits 6 from 2 users
Re: Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 20/06/2025, 12:24:08 UTC
⭐ Merited by Akito S. M. Hosana (3) ,nomachine (3)
NoMachine, plz return your GitHub back!
I like your coding skills (and readme files), and Mark1 is the deep refactoring and a few reingeneering of your Kangaroo-hops file.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 19/06/2025, 13:34:03 UTC
Hello guys!
My implementation of Pollard-rho algo:
https://github.com/Dookoo2/Mark1
38 minutes for solving 80 bits puzzle with half billion of DP, 14 minutes for solving 70 bits with 200 millions of dp.
AVX2 bloom filter, compact DP table, Brent loop detection and others features.
May be useful for somebody.
Have a nice day:)

Thanks for the code Smiley

I don't want to sound mean or anything, but let's do a quick and simple math exercise:

Device | TDP | Speed | Keys/Watt
Ryzen 9 7945HX | 55W | 160 M/s | 2.9 M/W
RTX 4090 | 450W |. 10800 M/s | 24 M/W

So it's more than eight times more costly to solve any puzzle on that CPU.

Moreover, RC claimed he got up to 13.8 GK/s on a RTX 4090, which, if true, would mean it's ten times cheaper, than running a Ryzen 9 7945HX at 100% peak power.

I would also say that solving 80 bits, with some proper Tame precomputed database (with way less than half a billion DPs) takes much less than 20 seconds, even on a budget GPU. There is a precise balance where having too many DPs (of lower bits) is not beneficial, and having fewer DPs (of higher bits) is better overall.
Of course, but:
1. I do not participate in the puzzle race:) For fun, not more.
2. Optimal amount of DP (for 135 and higher) is much more than we can collect and save in RAM.
3. You can start Mark1 with different DP bits, amount of DP, different jump size (k parameter) and others.
4. And I have gpu code too, but it is boring.

And by the way, 135 and higher are like a lottery ticket.
Post
Topic
Board Development & Technical Discussion
Merits 16 from 4 users
Topic OP
Mark1 - pollard rho implementation (38 minutes for 80 bits solving on CPU)
by
FrozenThroneGuy
on 19/06/2025, 10:57:10 UTC
⭐ Merited by nomachine (8) ,AlexanderCurl (3) ,mcdouglasx (3) ,iceland2k14 (2)
Hello guys!
My implementation of Pollard-rho algo:
https://github.com/Dookoo2/Mark1
38 minutes for solving 80 bits puzzle with half billion of DP, 14 minutes for solving 70 bits with 200 millions of dp (after phase 1 for collecting and storing DP).
AVX2 bloom filter, compact DP table, Brent loop detection and others features.
May be useful for somebody.
Have a nice day:)
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 19/06/2025, 10:11:40 UTC
Hello guys!
My implementation of Pollard-rho algo:
https://github.com/Dookoo2/Mark1
38 minutes for solving 80 bits puzzle with half billion of DP, 14 minutes for solving 70 bits with 200 millions of dp.
AVX2 bloom filter, compact DP table, Brent loop detection and others features.
May be useful for somebody.
Have a nice day:)
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 04/06/2025, 19:52:27 UTC
~~ snippet ~~


I wonder how many million years it takes you to solve puzzle 135?   Tongue
On 1 cpu with my algo 2.288 years. 1 gpu like rtx4060 - 288 years, 10 gpu - 28 years. 10 rtx4090 - 6 may be 7 years.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 04/06/2025, 19:02:53 UTC
3 seconds on PYTHON! PK found.

Code:
import math, time, sys, os
from gmpy2 import mpz, powmod, invert, jacobi
import xxhash  
from sortedcontainers import SortedDict

# Clear screen and initialize
os.system("cls||clear")
t = time.ctime()
sys.stdout.write(f"\033[?25l\033[01;33m[+] BSGS: {t}\n")
sys.stdout.flush()

# Elliptic Curve Parameters (secp256k1)
modulo = mpz(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F)
order = mpz(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141)
Gx = mpz(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798)
Gy = mpz(0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)
PG = (Gx, Gy)

# Point Addition on Elliptic Curve
def add(P, Q):
    if P == (0, 0):
        return Q
    if Q == (0, 0):
        return P
    Px, Py = P
    Qx, Qy = Q
    if Px == Qx:
        if Py == Qy:
            inv_2Py = invert((Py << 1) % modulo, modulo)
            m = (3 * Px * Px * inv_2Py) % modulo
        else:
            return (0, 0)
    else:
        inv_diff_x = invert(Qx - Px, modulo)
        m = ((Qy - Py) * inv_diff_x) % modulo
    x = (m * m - Px - Qx) % modulo
    y = (m * (Px - x) - Py) % modulo
    return (x, y)

# Scalar Multiplication on Elliptic Curve
def mul(k, P=PG):
    R0, R1 = (0, 0), P
    for i in reversed(range(k.bit_length())):
        if (k >> i) & 1:
            R0, R1 = add(R0, R1), add(R1, R1)
        else:
            R1, R0 = add(R0, R1), add(R0, R0)
    return R0

# Point Subtraction
def point_subtraction(P, Q):
    Q_neg = (Q[0], (-Q[1]) % modulo)
    return add(P, Q_neg)

# Compute Y from X using curve equation
def X2Y(X, y_parity, p=modulo):
    X3_7 = (pow(X, 3, p) + 7) % p
    if jacobi(X3_7, p) != 1:
        return None
    Y = powmod(X3_7, (p + 1) >> 2, p)
    return Y if (Y & 1) == y_parity else (p - Y)

# Convert point to compressed public key
def point_to_cpub(point):
    x, y = point
    y_parity = y & 1
    prefix = '02' if y_parity == 0 else '03'
    compressed_pubkey = prefix + format(x, '064x')
    return compressed_pubkey

# Hash a compressed public key using xxhash and store only the first 8 characters
def hash_cpub(cpub):
    return xxhash.xxh64(cpub.encode()).hexdigest()[:8]

# Main Script
if __name__ == "__main__":
    # Puzzle Parameters
    puzzle = 40
    start_range, end_range = 2**(puzzle-1), (2**puzzle) - 1
    puzzle_pubkey = '03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4'

    # Parse Public Key
    if len(puzzle_pubkey) != 66:
        print("[error] Public key length invalid!")
        sys.exit(1)
    prefix = puzzle_pubkey[:2]
    X = mpz(int(puzzle_pubkey[2:], 16))
    y_parity = int(prefix) - 2
    Y = X2Y(X, y_parity)
    if Y is None:
        print("[error] Invalid compressed public key!")
        sys.exit(1)
    P = (X, Y)  # Uncompressed public key

    # Precompute m and mP for BSGS
    m = int(math.floor(math.sqrt(end_range - start_range)))
    m_P = mul(m)

    # Create Baby Table with SortedDict
    print('[+] Creating babyTable...')
    baby_table = SortedDict()  
    Ps = (0, 0)  # Start with the point at infinity
    for i in range(m + 1):
        cpub = point_to_cpub(Ps)
        cpub_hash = hash_cpub(cpub)  # Use xxhash and store only 8 characters
        baby_table[cpub_hash] = i  # Store the hash as the key and index as the value
        Ps = add(Ps, PG)  # Incrementally add PG

    # BSGS Search
    print('[+] BSGS Search in progress')
    S = point_subtraction(P, mul(start_range))
    step = 0
    st = time.time()
    while step < (end_range - start_range):
        cpub = point_to_cpub(S)
        cpub_hash = hash_cpub(cpub)  # Hash the current compressed public key
        # Check if the hash exists in the baby_table
        if cpub_hash in baby_table:
            b = baby_table[cpub_hash]
            k = start_range + step + b
            if point_to_cpub(mul(k)) == puzzle_pubkey:
                print(f'[+] m={m} step={step} b={b}')
                print(f'[+] Key found: {k}')
                print("[+] Time Spent : {0:.2f} seconds".format(time.time() - st))
                sys.exit()
        S = point_subtraction(S, m_P)
        step += m

    print('[+] Key not found')
    print("[+] Time Spent : {0:.2f} seconds".format(time.time() - st))


puzzle 40
  • BSGS: Thu Feb 20 21:49:30 2025
  • Creating babyTable...
  • BSGS Search in progress
  • m=741455 step=453895024440 b=574622
  • Key found: 1003651412950
  • Time Spent : 2.90 seconds


puzzle 50
  • BSGS: Thu Feb 20 22:13:12 2025
  • Creating babyTable...
  • BSGS Search in progress
  • m=23726566 step=48190529944714 b=12801738
  • Key found: 611140496167764
  • Time Spent : 12.71 seconds

This is the result... on a single core Grin

P.S. For puzzles above 50, you'll need a Bloom Filter



Who wrote this code?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Share your donation address I can see light at the end of a tunnel.

Yes, I agree that NoMachine is great for coding, but did you know it only works if you have a public key!!? That’s clearly tied to the current puzzles.

Also, there's a better option from RC that uses GPU.

Regards.

Code:
root@DESKTOP-BD9V01U:/mnt/e/Kang# ./Mark1 --range 562949953421311:1125899906842623  --pubkey 03f46f41027bbf44fafd6b059091b900dad41e6845b2241dc3254c7cdd3c5a16c6 --dp_point 1000000 --dp_bits 8

=========== Phase-0: RAM summary ===========
DP table : 52.1Mb  ( 1000000 / 1333334 slots, load 75.00% )
Bloom    : 1.91Mb
--------------------------------------------
Total    : 54.0Mb

========== Phase-1: Building traps ============
Unique traps: 1000000/1000000 (done)

=========== Phase-2: Kangaroos =============
Speed: 2.52 MH/s | Hops: 12582912 | Time: 0:0:5

============= Phase-3: Result ==============
Private key : 0x00000000000000000000000000000000000000000000000000022BD43C2E9354
Found by thread: 3
Total time: 00:00:00.217

Private key saved to FOUND.txt
root@DESKTOP-BD9V01U:/mnt/e/Kang# ./Mark1 --range 549755813887:1199511627775  --pubkey 03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4 --dp_point 10000 --dp_bits 8

=========== Phase-0: RAM summary ===========
DP table : 534Kb  ( 10000 / 13334 slots, load 75.00% )
Bloom    : 19.5Kb
--------------------------------------------
Total    : 553Kb

========== Phase-1: Building traps ============
Unique traps: 10000/10000 (done)

=========== Phase-2: Kangaroos =============
Speed: 0.00 H/s | Hops: 0 | Time: 0:0:5

============= Phase-3: Result ==============
Private key : 0x000000000000000000000000000000000000000000000000000000E9AE4933D6
Found by thread: 4
Total time: 00:00:00.037

Private key saved to FOUND.txt
Play with kangs...
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 27/05/2025, 17:12:26 UTC
the avx512 version give me the error,
./Cyclone -a 128z5d7nN7PkCuX5qoA4Ys6pmxUYnEy86k -r FAC875:6FAC3875 -p 6 -j 10000000 -s
Illegal instruction
I won’t update it, may be later.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 27/05/2025, 12:22:22 UTC
A few Cyclone updates: threads and public key skipping if it starts with K leading zeroes, because 71 partial hash generates with 1 max 2 leading zeroes  public key X ccordinates.
https://github.com/Dookoo2/Cyclone
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 16/05/2025, 06:44:12 UTC

Please stop your fake AI modified script ! This is just useless, full of bugs and you make yourself look ridiculous Cheesy

The key isn't even correct, I'm dying of laughter  Cheesy Cheesy Cheesy Cheesy

================= WORK IN PROGRESS =================
Puzzle/Bits   : 37
Target Hash160: 28c30fb9118ed1d...c0164756e8a021d
Prefix length : 4 bytes
Mode          : Random
CPU Threads   : 48
Mkeys/s       : 338.47
Total Checked : 6769591296
Elapsed Time  : 00:02:20
Start Range   : 1000000000
End Range     : 1fffffffff
Progress      : N/A
Progress Save : 0
================== FOUND MATCH! ====================
Private Key   : 0000000000000000000000000000000000000000000000000000001757756993
Public Key    : 027D2C03C3EF0AEC70F2C7E1E75454A5DFDD0E1ADEA670C1B3A4643C48AD0F1255
Total Checked : 69900666880000000000000000000000000000000000000000000018DEDAB24B
Elapsed Time  : 00:02:20C28A52ED1A58EC3DFD4F71C48556CA9D77A4E2589F0FB5114FDFF1917A

And here what is a good coder the modified version of Benjade:

================= WORK IN PROGRESS =================
Target Address: 14iXhn8bGajVWegZHJ18vJLHhntcpL4dex
CPU Threads   : 48
Mkeys/s       : 413.69
Total Checked : 56275679232
Elapsed Time  : 00:00:16
Range         : 1000000000:1fffffffff
Progress      : 55.9091943354 %
Last Key      : 0000000000000000000000000000000000000000000000000000001FDD4CACD3
================== FOUND MATCH! ==================
Private Key   : 0000000000000000000000000000000000000000000000000000001757756A93
Public Key    : 027D2C03C3EF0AEC70F2C7E1E75454A5DFDD0E1ADEA670C1B3A4643C48AD0F1255
WIF           : KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9NRuiZFAX6XciCX
P2PKH Address : 14iXhn8bGajVWegZHJ18vJLHhntcpL4dex
Total Checked : 56340545536
Elapsed Time  : 00:00:16
Speed         : 412.1841027123 Mkeys/s


Better speed right ?  Cheesy blablabla I'm a good coder LOL

You forgot to add correct offset of private key between batches. And thats all. I know this problem, because i have got it already:) When I were building the first version of Cyclone:) you lost 100 HEX, 256 decimal number.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 07/05/2025, 10:54:13 UTC
Or you can steal IBM quantum server with a few cubits, upgrade design and built a new quantum srv with 512 cubits. You can solve it for less than one second with Shore quantum algorithm.

Maybe I could pull off stealing a quantum computer—no big deal. The real issue? I’d have to jack a whole nuclear power plant and stash it in my garage. Bumping up a home’s power to 3-4 MW isn’t happening with regular house wiring. You’d need a whole transformer station just to handle that juice.
Don’t worry about it. After all you need to bring your stolen quantum srv to Russia, they have a bunch of nuclear power plants and finding a couple megawatts will be almost free and fast. But it has another side, after all it will be impossible to transport it back. Russian with Chinese don’t give you to do this.
But… you want only to solve puzzles:) All of them.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 07/05/2025, 09:44:48 UTC
For one year scan you need 7466805 threads on CPU for 100% success.

This is a completely crazy number. Undecided

You’d need advanced alien technology.

Do you think they have such powerful processors?  Grin

Use Ryzen threadripper with 256 threads per cpu with liquid cooling, very easy:)
Ok, let’s try dream again. Powerfully srv has 2 cpu, 512 threads total, every srv has 4 RU units (due to water cooling system) in rack mount tower (I think you understand me, English language is not my key knowledge:)) and you need 14583 srv total. Only 12 srv per rack mount tower. You need at least 1215 rack mount towers. Standard machine zone has 30-40 rack mount towers. And you need 31 machine zones full of powerful servers with 2 threadripper CPU and liquid cooling.
Easy game! Have a luck, man:)
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 07/05/2025, 09:09:22 UTC
You mean CPU Cores?

How many CPU cores do I need to solve puzzle 135? Approximately?  Tongue
1 core approx 5 Mkeys/s, chances to win will increase after 50% of scanning range, you will do scan for 1 year, whole range of scan is 1180591620717411303423 keys, for 1 second scan you need 236118324143482 cpu cores. For one year scan you need 7466805 threads on CPU for 100% success.
Post
Topic
Board Development & Technical Discussion
Re: Cyclone - fastest CPU Satoshi's puzzle solver (only CPU)
by
FrozenThroneGuy
on 06/05/2025, 15:41:09 UTC
good fast software work on CPU indeed but do you think you can port it to GPU?
Hi! I’m a very lazy guy for it, and this is not interesting.
In present time I try to develop an algorithm, which will be faster than BSGS or Pollard/Floyd/Brent.  
Take a look, speed of solving puzzle 70 (and x10 range).
root@ubuntu:/home/ubuntu/Triarch# ./Try_10 --N 10 --S 5902958103587056517110 --T 160000000000 --offset 19 --parity even --order forward --range 10000000000:100000000000 --even

=== Attempt 1 ===
secret = 5902958103587056517120
//Magic!!!

=== SUCCESS ===
Runtime: 33.3814 s
Synthesis: 5
Attempts: 1
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 03/05/2025, 17:18:27 UTC
P.S. Removed the stride option—to avoid further confusion, since this option does nothing.

I think it's my fault. I asked for that option—to make it similar to Keyhunt.  Tongue

STRIDE is also not working in KEYHUNT

nevertheless, the range file option is way better than stride...  Grin

It’s much easier to talk about a particular option than to make it work in practice. Better yet, how much time did you spend on it to actually make it work? I’d rather go fishing.  Cool
Hello NoMachine! Do you think about ShaNi intrinsic for speeding up SHA256? It is not so difficult like AVX Secp256k1, but it can speed up computing sha up to 2-3 times.
I was trying to do this, but the speed decrease from 6ns per hash to 150ns.
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
FrozenThroneGuy
on 03/05/2025, 12:38:03 UTC