Bitcoin Forum
March 15, 2026, 01:49:12 PM *
News: Latest Bitcoin Core release: 30.2 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]  All
  Print  
Author Topic: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo  (Read 16354 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic. (11 posts by 1+ user deleted.)
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
March 14, 2026, 01:56:04 PM
 #401

Possible.
The basic idea for N gaps is to split jumps in the jump table to N groups, so every jump performs a small jump in its (random) gap. Also define start positions of kangs in the same way.
Visiting known bits are possible of course after many jumps (same as for single range) but won't happen too often if you choose jumps and start positions properly.

That was my initial intuition yes. Would be cool to build the client side for this, great thing is you can re use the server part as nothing else changes there.

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
kTimesG
Full Member
***
Offline Offline

Activity: 770
Merit: 236


View Profile
March 14, 2026, 03:25:42 PM
 #402

Possible.
The basic idea for N gaps is to split jumps in the jump table to N groups, so every jump performs a small jump in its (random) gap.

Only if the gaps are large enough to end up with something faster than (N-1)*linear + sqrt ops. Complexities around visited ranges compound.

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Off the grid, training pigeons to broadcast signed messages.
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
March 14, 2026, 04:37:32 PM
 #403

Possible.
The basic idea for N gaps is to split jumps in the jump table to N groups, so every jump performs a small jump in its (random) gap.

Only if the gaps are large enough to end up with something faster than (N-1)*linear + sqrt ops. Complexities around visited ranges compound.

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

I’ll do it for fun this week - let’s see if I encounter unexpected setbacks

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
RetiredCoder (OP)
Full Member
***
Offline Offline

Activity: 159
Merit: 141


No pain, no gain!


View Profile WWW
March 14, 2026, 05:15:09 PM
 #404

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390

I've solved #120, #125, #130. How: https://github.com/RetiredC
farou9
Newbie
*
Offline Offline

Activity: 87
Merit: 0


View Profile
Today at 02:40:55 AM
 #405

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
Today at 04:54:01 AM
 #406

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
RetiredCoder (OP)
Full Member
***
Offline Offline

Activity: 159
Merit: 141


No pain, no gain!


View Profile WWW
Today at 06:10:57 AM
 #407

So this mini-puzzle was solved quicky as well, kangaroos can be easily used for cases with a few gaps.

RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

Sorry, I don't have puzzles for age stone for now, also you don't need huge power to solve this puzzle, 80bit can be solved on any recent CPU (but not in seconds, yes).

I've solved #120, #125, #130. How: https://github.com/RetiredC
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
Today at 06:17:19 AM
 #408

Well that was solved quite quickly, thanks RC for setting up the contest and crowd testing that the idea is viable.
I'll integrate it in my toolset for hex and B58 this week then Smiley might be useful for partially lost WiF keys down the line.

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
farou9
Newbie
*
Offline Offline

Activity: 87
Merit: 0


View Profile
Today at 06:26:38 AM
 #409

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.
yes "quiet low" for rtx 10xx 30xx 40xx .. etc .
not for a i5 40xx cpu "stone age" , but capable of breaking 70bits 80bits  in matter of hours using the right algorithm
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
Today at 06:28:37 AM
 #410

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.
yes "quiet low" for rtx 10xx 30xx 40xx .. etc .
not for a i5 40xx cpu "stone age"

You have to draw the line somewhere.
If a 10 years old GPU is still too much, people will eventually complain about not being able to solve on their Nokia 3310.
Also, I would guess that this challenge is solvable using openCL on a 4xxx i5 CPU.

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
farou9
Newbie
*
Offline Offline

Activity: 87
Merit: 0


View Profile
Today at 06:31:55 AM
 #411

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.
yes "quiet low" for rtx 10xx 30xx 40xx .. etc .
not for a i5 40xx cpu "stone age"

You have to draw the line somewhere.
If a 10 years old GPU is still too much, people will eventually complain about not being able to solve on their Nokia 3310.
Also, I would guess that this challenge is solvable using openCL on a 4xxx i5 CPU.
isnt opencl a gpu thing , solvable yes but the sqrt of 80 is 2**40 even that would take 129 days to do in hopes that it goes at 100k ops/s
farou9
Newbie
*
Offline Offline

Activity: 87
Merit: 0


View Profile
Today at 06:37:59 AM
 #412

So this mini-puzzle was solved quicky as well, kangaroos can be easily used for cases with a few gaps.

RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

Sorry, I don't have puzzles for age stone for now, also you don't need huge power to solve this puzzle, 80bit can be solved on any recent CPU (but not in seconds, yes).
yes not seconds and we have i5 so not even days "allegedly"
Bram24732
Member
**
Offline Offline

Activity: 308
Merit: 28


View Profile
Today at 06:40:26 AM
 #413

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.
yes "quiet low" for rtx 10xx 30xx 40xx .. etc .
not for a i5 40xx cpu "stone age"

You have to draw the line somewhere.
If a 10 years old GPU is still too much, people will eventually complain about not being able to solve on their Nokia 3310.
Also, I would guess that this challenge is solvable using openCL on a 4xxx i5 CPU.
isnt opencl a gpu thing , solvable yes but the sqrt of 80 is 2**40 even that would take 129 days to do in hopes that it goes at 100k ops/s

OpenCL has SIMD implementation on most CPUs. Back then it was working on my 2xxx i7 so quite sure there’s a driver for 4th gen i5s. Curious to know what speeds you can get for ECAdd on those. My 7950X is not totally ridiculous when facing a GPU (I know that’s a CPU probably 4 times faster than yours though)

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
RetiredCoder (OP)
Full Member
***
Offline Offline

Activity: 159
Merit: 141


No pain, no gain!


View Profile WWW
Today at 06:42:05 AM
 #414

For this mini-puzzle I set 80bits because I wanted you to use kangaroos.
If I set 60-70 or less, you could try to use BSGS instead.

I've solved #120, #125, #130. How: https://github.com/RetiredC
farou9
Newbie
*
Offline Offline

Activity: 87
Merit: 0


View Profile
Today at 06:57:12 AM
 #415

I guess this will be your mini-puzzle challenge after you grab 135. Shall everyone fire up their coding skills in advance?

Why should we wait? Let's have fun right now!   Cheesy
https://bitcointalk.org/index.php?topic=5577390
RC , why don't you create a puzzle were competition isn't determined by hardware power but rather pure skill and knowledge and intelligence , for us small folks with stone age hardware but sheer will

This puzzle is exactly that, I would say.
Compute power required is quite low.
yes "quiet low" for rtx 10xx 30xx 40xx .. etc .
not for a i5 40xx cpu "stone age"
You have to draw the line somewhere.
If a 10 years old GPU is still too much, people will eventually complain about not being able to solve on their Nokia 3310.
Also, I would guess that this challenge is solvable using openCL on a 4xxx i5 CPU.
isnt opencl a gpu thing , solvable yes but the sqrt of 80 is 2**40 even that would take 129 days to do in hopes that it goes at 100k ops/s

OpenCL has SIMD implementation on most CPUs. Back then it was working on my 2xxx i7 so quite sure there’s a driver for 4th gen i5s. Curious to know what speeds you can get for ECAdd on those. My 7950X is not totally ridiculous when facing a GPU (I know that’s a CPU probably 4 times faster than yours though)
the speds varies depending on the language and the libraries , on python using ecdsa its very slow i think 80k/s but if we used coincurve it goes up (114,956 EC additions/sec) , but on c++ the speed is better never tested it but i can predict it coincurve uses libsecp so if we used the 4threads we can achive 500-700k/s , just tested it it can reach Speed: 548779 EC additions/sec using 4 threads in  c++
ostap1706
Newbie
*
Online Online

Activity: 4
Merit: 1


View Profile
Today at 08:09:58 AM
 #416


My case is not simple. My key structure is: the first 26 characters are known, then 3 unknown characters, then 5 known characters, then 10 unknown characters, and finally 8 known characters. So I have two gaps that significantly increase the search space.
My WIF [26 known]+[3 unknown]+[5 known]+[10 unknown]+[8 known]

I have already checked more than 80 thousand possible ranges. Since my GPU is a laptop 4060, I can check about 200 ranges (2*65) per hour. Sometimes I also connect rented GPUs — about 15 units of RTX 5070 — to process the bulk of the variants.


You should not approach this by splitting in ranges, your odds of finding the key are very small that way.
What you need is a variation of a Kangaroo-like algorithm which can operate on incomplete WIFs. I didn't look at it super closely yet but is seems doable (assuming you know the public key of the wallet)
I'm happy to help you recover this. I like to think I'm trustworthy enough given the fact that I unlocked millions with 67 and 68 and shared the prize fairly with everyone involved.
Let me know if you're interested, there's quite a bit to code to get there.

First, I want to explain my situation. I partially lost my private key written on paper. Some characters became unreadable, so now I know only parts of the key and have several missing sections. Because of this, I am trying to recover it by searching through the possible combinations.

The structure of my WIF private key looks like this:

[26 known characters] + [3 unknown characters] + [5 known characters] + [10 unknown characters] + [8 known characters]

So there are two missing segments. The first gap is 3 characters, and the second gap is 10 characters. Because of these two gaps, the search space becomes very large.

To explain my approach more clearly, I created a test example.

I generated a test address using the tool:
https://iancoleman.io/bip39/

Test address:
1P4DUQSoS6mxKLA7ckNw2N2P5VYiqyXVr5

Public key:
02300f7afaff23e07c2f17181464d9fbdf8ef9060bdd9d781dc7203591d13fee45

Private key (WIF):
KwpcZkhKLZy9opCsWLqUjuKccNMpWV9yVqrXvgcrjTbNz1co9etU

Then I intentionally created the same missing pattern in the private key:

[26 known] + [3 unknown] + [5 known] + [10 unknown] + [8 known]

Next, I generated 200 possible combinations for the first 3 unknown characters. For testing purposes, I inserted the correct 3 characters at the end of the list so that eventually the search should reach the correct variant.

The search logic works like this:

For each possible combination of the 3 unknown characters, I temporarily insert them into the key.

Then I create a search range for the second missing part (the 10 unknown characters).

To define the range:

For the minimum value, I fill the 10 unknown characters with "1111111111".

For the maximum value, I fill them with "zzzzzzzzzz".

This creates a valid range where the real private key must exist.

So instead of brute-forcing everything at once, I only search inside this defined range for each of the possible 3-character combinations. In other words, the search process iterates through the possible prefixes and checks whether the correct private key exists inside that corresponding range.

The total number of combinations for the first missing section is 195112.
So far, I have already checked about 85,000 ranges.

For the search itself I use RCKangaroo (Pollard Kangaroo) by RetiredCoder.

Each range check takes about 30 seconds on my system. Most of that time is spent on initialization before the actual computation begins.

Below is an example of how the terminal output looks during the process:

[Search 0] Try 4423/5631: 'meP' (65.45 bits)
********************************************************************************
*                    RCKangaroo v3.1  (c) 2024 RetiredCoder                    *
********************************************************************************

This software is free and open-source: https://github.com/RetiredC
It demonstrates fast GPU implementation of SOTA Kangaroo method for solving ECDLP
Windows version
CUDA devices: 1, CUDA driver/runtime: 13.1/12.8
GPU 0: NVIDIA GeForce RTX 4060 Laptop GPU, 8.00 GB, 24 CUs, cap 8.9, PCI 1, L2 size: 32768 KB
Total GPUs for work: 1

MAIN MODE

Solving public key
X: 5B23418F548FDF1E797AA39E9C3DFF9E33A80.......................................... ................
Y: 8881B40AA828B849C340645E569FC74A17804338765BDE51AF1757D541DCBE7
Offset: 12CC0A316CCC60AE06B93A397A2824FEC7524C3CC666A730001080381321A5AB

Solving point: Range 65 bits, DP 14, start...
SOTA method, estimated ops: 2^32.702, RAM for DPs: 0.203 GB. DP and GPU overheads not included!
Max allowed number of ops: 2^35.287, max RAM for DPs: 0.283 GB
Estimated DPs per kangaroo: 2.891. DP overhead is big, use less DP value if possible!
GPU 0: allocated 458 MB, 147456 kangaroos. OldGpuMode: No
GPUs started...
MAIN: Speed: 1557 MKeys/s, Err: 0, DPs: 935K/426K, Time: 0d:00h:00m/0d:00h:00m
MAIN: Speed: 1575 MKeys/s, Err: 0, DPs: 1888K/426K, Time: 0d:00h:00m/0d:00h:00m
Operations limit reached
Stopping work ...

I use **-dp 14** and **-max 6** so that nothing is missed. I hope this is sufficient.

I really like the speed of the author's program. Earlier I tested another implementation using the same puzzle and the same input data. In that case, the Pollard Kangaroo implementation found the private key in more than 1 hour, while the author's program found it in about 39 minutes.

If I manage to recover my wallet using this program, I will definitely support the author. I honestly don’t know what motivates people like him to spend so much time developing such powerful tools and releasing them for free. But if the program helps me solve my problem, I believe that kind of work definitely deserves a reward.
RetiredCoder (OP)
Full Member
***
Offline Offline

Activity: 159
Merit: 141


No pain, no gain!


View Profile WWW
Today at 09:47:07 AM
 #417

the speds varies depending on the language and the libraries , on python using ecdsa its very slow i think 80k/s but if we used coincurve it goes up (114,956 EC additions/sec) , but on c++ the speed is better never tested it but i can predict it coincurve uses libsecp so if we used the 4threads we can achive 500-700k/s , just tested it it can reach Speed: 548779 EC additions/sec using 4 threads in  c++

BTW, you talk about knowledge and intelligence, but use slow python and its libs instead of writing own optimized lib in c. So optimizing is not a part of intelligence in you opinion?
Performance always matters here, if I had only CPU I would create heavy-optimized lib for it to be able to perform more tests and researches.

I've solved #120, #125, #130. How: https://github.com/RetiredC
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!