Thank you, everyone, for the feedback! I’d like to clarify a few points:
The characters stored in our database represent combinations, not permutations. In combinations, the order does not matter, but for each entry, we generate all possible permutations.
Our calculations ensure that permutations always start with a valid digit, keeping all values within the defined range for the challenge.
Database & Search Space ReductionCurrently, our database contains:
- Unlikely combinations: 1,889,976 → yielding 1,985,041,517,659,200,000 permutations.
Likely combinations: 20,962,256 → yielding 23,846,195,702,320,992,000 permutations.
This results in a total of 25,831,237,219,980,192,000 possible values, compared to the total valid search space for challenge 68, which spans from 0x80000000000000000 to 0xFFFFFFFFFFFFFFFFF (295,147,905,179,352,825,855 values).
Search Space ReductionUsing our approach, we have successfully reduced the search space by 91.25%, significantly improving computational efficiency.
Computational Setup & OptimizationsThe software we built is designed to leverage GPUs for Bitcoin key generation, while CPUs handle permutation generation. Users on the website only pay for renting the required CPU and GPU resources—all other optimizations and enhancements are part of our system.
Over the years, we have implemented multiple optimizations to improve efficiency and scalability, including:
Avoiding I/O bottlenecks that would otherwise slow down processing.
Minimizing Host-Device Transfer Overhead, ensuring that data moves efficiently between the CPU and GPU.
Optimized parallel computation strategies, making the most of hardware resources.
This has been the work of many years, not just days, requiring extensive testing and fine-tuning to achieve these performance gains.
Theoretical ConsiderationsOur methodology suggests that this approach is valid, but of course, there are theoretical edge cases. For example, a value like 0x00000000FFFFFFFFF is technically valid, but due to the way random digit generation works, it is nearly impossible for a computer to generate such a value in practice. This is the hypothesis behind our filtering approach.
We are always open to insights and improvements—let me know your thoughts!