Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds serial and parallel endomorphism accelerated ๐พโ multi-exponentiations to provide a baseline for them before optimizations.
This is motivated by research in Ethereum SSLE (Secret Shared Leader Election), a technique to keep private who the next Ethereum block producer will be.
Benchmarks
The machine is a low power (15W~30W) Ryzen 7840U.
Serial ๐พโ multi-exp vs ๐พโ MSM
There is a 3x ratio between single exponentiation and single scalar mul.
But it becomes 5x with multiexp / MSM.
This can be explained because with many points, you can use affine coordinates and Montgomery batch inversion to switch from a cost of ~12Mul (Jacobian coordinate) to an asymptotic cost of ~6M (affine coordinates)
Parallel
Application
A size 128 ๐พโ multi-exp is 8ms when serial or for 256 ~ 15ms, parallelization only does a 4x speedup with 8 cores / 16 threads.
cc @asanso