Hi guys,
Nice work!
I also did develop my tool, "Colisionador" (collider in spanish), as I do not trust the founds are being sent to the cloud.
I did program it on C, trying to make if super efficient and fast.
I keep the source code closed at the moment, but just ask if you would like to collaborate.
You can run the binaries released it if you want:
https://github.com/japeral/colisionador_releasesI like to run it in Debian on WSL, running on Windows 10. There is also binaries for ARMv7 and Windows X86.
It collides against a sorted list of ripemd160 from public addresses with balance.
On 2024-03-22 when I scrapped a fully synced BTC node database with 53994718 addresses (53.9 Million addresses).
The list include the 256 pieces of the puzzle also, those with balance 0 and still not 0.
You can download the full sorted list of r160's updated up to 2024-03-22 here:
https://drive.usercontent.google.com/download?id=1mAX4kdXaYSBYYGtgQf30Sw_Zkhl2GC3r&export=download&confirm=yesThe tool, loads the list into RAM, and with a binary search on the sorted list, search each key ripedmd160 against the list in RAM. You can edit the list to target different public addresses with the "-list" parameter.
Speed improvements are marginal if the list size is reduced, so I always load the entire list.
The search speed is between 15-25K keys/s per CPU thread, depending on the CPU clock.
On a AMD Ryzen 7 7730U CPU with 16th threads, the tool searches at 15K keys/s per thread, making a total of ~215K keys/s
On a Raspberry pi4, @4 threads, it makes a total of ~31K keys/s.
It currently supports CPU only.
It spreads the load across all the threads available in the system. I use OpenMP for the parallelization.
It computes the: compressed_02, compressed_03, uncompressed_04, compressed_06 and compressed_07 Id's.
I am targeting the search space of puzzle 66 (that is all zeros from the left, bit 66 to 1, and the random bits down to bit 0). For that just run the tool with the parameter "-puzzle 66". The lower bits are randomized every 16777215 Keys (000000 - FFFFFF) ~ 15mins of work. Each thread is independent and jumps into a different location inside the puzzle search space.
You can run as many instances of the tool, in as many machines you want.
Because the random nature of the jumps, the probability of covering the entire search space is even.
You could also target all the addresses with balance, just with the parameter "-puzzle 255", against the probability of finding anything. You could use it as a lottery cracker.
If a finding happens, the tool saves the result in a found.txt file. It also converts the private key into WIF format for convenience to easily import it into the wallet with importprivkey command.
I have a question:
How the hell are you finding puzzle pieces 70, 75, 80, 85, etc before puzzle 66, if the search space of those puzzles are much bigger that the puzzle 66 search space?
It is also interesting, puzzle pieces: 161-256 are also spent.
Is it any other clue to delimit the search space of every puzzle piece?
As far as I know:
For puzzle 66, search space is:
from:
00000000000000000000000000000000000000000000000200000000000000000000000
to:
000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFF
That is: 36893488147419103231 keys to check!
Thanks!