Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multi-scalar multiplication / multi-exponentiations (a.k.a. Pippenger algorithm) #37

Closed
mratsim opened this issue Jun 4, 2020 · 2 comments · Fixed by #220
Closed

multi-scalar multiplication / multi-exponentiations (a.k.a. Pippenger algorithm) #37

mratsim opened this issue Jun 4, 2020 · 2 comments · Fixed by #220
Labels
performance 🏁 variable time ⏰ ⚠️ Enhancement is only suitable for public data

Comments

@mratsim
Copy link
Owner

mratsim commented Jun 4, 2020

Glossary:

  • We talk about scalar multiplication for additive groups G1 (over Fp) and G2 (over Fp2 thanks to a sextic twist)
  • We talk about exponentiation for multiplicative group GT (defined over Fp12 for common pairing curve like BN254_Snarks and BLS12_381)

For Zk-SNARKS, we need to compute a linear combination of scalar multiplication/exponentiation:

Q <- [k1] P1 + [k2] P2 + ... + [kn] Pn

As a generalization to the Strauss-Shamir trick for [a]P + [b]Q we can save a significant amount of iterations.

image
image
image

Research

Implementations

Side-note

For batched signature verification (see https://ethresear.ch/t/fast-verification-of-multiple-bls-signatures/5407) we may use this as well. To be studied compared to the PAIR_BLS381_another in Milagro to accumulate line functions for multi-pairing and incur the cost of final exponentiation only once as well.

@mratsim
Copy link
Owner Author

mratsim commented Jun 5, 2020

Other references:

Explanation of Bos-Coster as proposed for batch Schnorr's signature verification in Bitcoin
https://bitcoin.stackexchange.com/questions/80698/schnorrs-batch-validation
image

image
image

@mratsim mratsim added variable time ⏰ ⚠️ Enhancement is only suitable for public data performance 🏁 labels Jun 6, 2020
@mratsim
Copy link
Owner Author

mratsim commented Jun 22, 2020

@mratsim mratsim linked a pull request Feb 15, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance 🏁 variable time ⏰ ⚠️ Enhancement is only suitable for public data
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant