..random on every point across selected keyspace. So every jump/try is random. Not like in pikachunakapika version where it chooses random staring points and then starts doing them in 1 increment at a time..
The Engine of these programs is divided into two types:
1) optimized point addition (for quick calculation of sequential keys)
sample programs: vanitygen, bitcrack, vanitysearch, break_short;
methods:
- calc only X coordinates (for compressed keys);
- use of functions without protection against side channel attacks (openssl/secp256k1);
main problem - inversion calculation is very expensive, ~20mult per 1 point;
can use batch inversion (Simultaneous algorithm, 1 inversion per 1000 keys) + Affines coordinates + symmetry(only full range) + endomorphism(only full range);
2) optimized point multiplication (for quick calculation of random keys)
sample programs: brainflayer;
methods:
- secp256k1 library with pre-calculated mult table in ram;
- Jacobian coordinates;
main problem random mult - inversion need too, but can not use batch inversion because each key is random.
BitCrack is optimized for sequentially calculating points in a limited range using addition.
VanitySearch is optimized for sequentially calculating points in the full range using addition (and 4 multiplication algorithms that work only for the full range).
BrainFlayer (cpu only) is optimized for random calculating points in a full range using multiplication.
You want to get random points in a limited range using multiplication.
These are fundamentally different tasks.
If you delve into the study of random generators, you will find that they have top speed.
Typically, the problem is that the overhead of generating random numbers is greater than the useful calculation itself.
PS:
about multiplication
At start BitCrack, pre-computes the starting points using multiplication.
It is so slow that starting from version 0.15 the author transferred the procedure to gpu.
see 1post - v0.0.6... the author does not come here for more than a year