constantine/sage
Mamy Ratsimbazafy e5612f5705
Multi-Scalar-Multiplication / Linear combination (#220)
* unoptimized msm

* MSM: reorder loops

* add a signed windowed recoding technique

* improve wNAF table access

* use batchAffine

* revamp EC tests

* MSM signed digit support

* refactor MSM: recode signed ahead of time

* missing test vector

* refactor allocs and Alloca sideeffect

* add an endomorphism threshold

* Add Jacobian extended coordinates

* refactor recodings, prepare for parallelizable on-the-fly signed recoding

* recoding changes, introduce proper NAF for pairings

* more pairings refactoring, introduce miller accumulator for EVM

* some optim to the addchain miller loop

* start optimizing multi-pairing

* finish multi-miller loop refactoring

* minor tuning

* MSM: signed encoding suitable for parallelism (no precompute)

* cleanup signed window encoding

* add prefetching

* add metering

* properly init result to infinity

* comment on prefetching

* introduce vartime inversion for batch additions

* fix JacExt infinity conversion

* add batchAffine for MSM, though slower than JacExtended at the moment

* add a batch affine scheduler for MSM

* Add Multi-Scalar-Multiplication endomorphism acceleration

* some tuning

* signed integer fixes + 32-bit + tuning

* Some more tuning

* common msm bench + don't use affine for c < 9

* nit
2023-02-16 12:45:05 +01:00
..
README.md Sage constants & tests codegen (#101) 2020-10-10 16:19:23 +02:00
curves.sage Pasta curves (#191) 2022-04-27 00:58:48 +02:00
derive_endomorphisms.sage Pasta curves (#191) 2022-04-27 00:58:48 +02:00
derive_frobenius.sage Don't dump all in "backend" (#184) 2022-02-27 01:49:08 +01:00
derive_hash_to_curve.sage BN254 - Hash-to-Curve (SVDW method) (#190) 2022-04-26 21:24:07 +02:00
derive_pairing.sage Multi-Scalar-Multiplication / Linear combination (#220) 2023-02-16 12:45:05 +01:00
derive_square_root.sage Don't dump all in "backend" (#184) 2022-02-27 01:49:08 +01:00
g2_params.sage Line refactor (#188) 2022-04-04 10:10:36 +02:00
square_root_bls12_377.sage BLS12-377 (#91) 2020-09-27 09:15:14 +02:00
testgen_scalar_mul.sage Multi-Scalar-Multiplication / Linear combination (#220) 2023-02-16 12:45:05 +01:00

README.md

Sage scripts

This folder holds sage scripts:

  • for automating curve configuration
    • Cofactor determination
    • Frobenius precomputations
    • Scalar docomposition for endomorphism acceleration
    • Pairing parameters for naive implementation (ate and final exponent)
    • Square-root parameters for naive implementation.
  • for test vectors against a reference implementation.