Coding-Enthusiast / FinderOuter

Easy to use bitcoin recovery tool to fix damaged private key, mini-private key, address, BIP38 encrypted key, mnemonic (seed phrase), BIP-32 derivation path, Armory backups, recover passwords and more
MIT License
296 stars 113 forks source link

Anything that involves ECC is very slow, also prevents using 100% of CPU in parallel mode #9

Closed Coding-Enthusiast closed 3 years ago

Coding-Enthusiast commented 4 years ago

Due to the way it is implemented (using BigInteger) elliptic curve cryptography is slow in this project.
Also any part that requires it in parallel mode fails to use 100% of CPU (usually swings between 60% to 70%) such as mnemonic recovery or any ICompareService that has to convert private key to public key.

The plan to solve this is to re-implement ECC using a custom readonly struct ModularUInt256 with optimized algorithms to compute point multiplication and a lot of the modular arithmetic used in ECC.

Coding-Enthusiast commented 3 years ago

This was fixed for almost all recovery options in commits from 4568d27f90b5b4608d828755276b0f446c783035 to ec00ce6aefe83536b7dde024e29007e3f6cb4ac4.