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.
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.