- Building the project requires make
- g++ are required to the build the project from the makefile
- Python 3 is required to build the test suite
- cxxtest is required to run the tests
The main purpose of this project is to implement reasonably fast crypto math for fast generation of vanity Secp256k1 public keys.
- Implement sufficient correct big number arithmetic operators for 256/512-bit numbers
- Implement Point Addition [on the Secp256k1 curve]
- Implement Point Doubling
- Implement Double-and-add
- Implement fast 256-bit number mod p where p = 2^k - c
- Implement Half Extended Euclidean Algorithm for calculating inverses mod p
- Implement key format that fulfills relevant BIP (for Bitcoin) / EIP (for Ethereum)
- Research further
- Doing crypto math fast is hard
- Not going to prevent side-channels or security concerns
- Generate random data
- Find corresponding public key to that random data, if applicable
- Evaluate whether the key fulfills some regex chosen by the user
- Repeat