Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* ecadd tests * ecmul tests * Add test utils * Add test suit generator * Remove old tests * Update tests * Fix ecadd * Fix ecmul * Handle modexp tests * Add modexp tests * Update call helper function * Fix helper function * Fix test utils * Improve ecmul precompile * Add test helper * Add python script to test double and add algorithm (matter-labs#13) * Add montgomery reduction algorithm * Add Rust playground crate * Update montgomery reduction script * Add Montgomery reduction precompile * ecAdd refactor * Montgomery fix * Add montgomery inv & modexp * Fix N' * Fix REDC * Fix Montgomery modular inverse * Remove comments * Fix prints * Change to bytes comparison instead of decoded output * Patch tests with extra check for errors in ecadd and ecmul * Add EOL * Update modexp precompile * Finish optimizing ecAdd & ecMul * Implement optimized montgomery invmod * modexpGasCost * Cleanup * Last version of ecAdd, ecMul & modexp * Fix modexp tests calldata * Fix modexp tests to pass with actual vm state * Update Montgomery precompile * Rename montgomery lib * Add alt_bn128 projective point lib * Add quadratic extension field arithmetic lib * Add alt_bn128 pairing script * Finish quadratic extension field arithmetics Co-authored-by: Nacho Avecilla <[email protected]> * Fix Montgomery lib Co-authored-by: Nacho Avecilla <[email protected]> * Implement double and addition steps Co-authored-by: Nacho Avecilla <[email protected]> * Arithmetics over Fp2 in Python (matter-labs#14) * Finish fp2 arithmetic * Add more precomputed values * Fix fp2 inv * Add EOF * Rename module * Fix point at infinity * Rename lib * Arithmetics over Fp6 in Python (matter-labs#15) * Finish fp2 arithmetic * Add more precomputed values * Add arithmetic operations for fp6 * Update constant name Co-authored-by: Ivan Litteri <[email protected]> * Replace epsilon for XI * Change script name * Add multiplication by xi in fp2 and fp6 * Add alternative inverse method * Fix inverse operation --------- Co-authored-by: Iván Litteri <[email protected]> Co-authored-by: Ivan Litteri <[email protected]> * Fp12 arithmetic (matter-labs#21) * WIP * add fp12 arithmetics * fix typo * add addition tests * add sub test * rename gamma function * add mul tests * fix function call * fix typo * mul fixes * fix mul by 1 * fix square * fix fp12 inverse * add multiply by 2 asserts * add EOF --------- Co-authored-by: Iván Litteri <[email protected]> * Add jacobian coordinates in Python (matter-labs#22) * Rename file * Add implementation for jacobian projective coordinates * Fix fp12 merge error * Fix addition * Rename function to check inifinity and add extra comments * Fp2, Fp6 and Fp12 arithmetics in Yul (matter-labs#23) * Add fp2 arithmetics * Add fp6 arithmetics * Rename funcs * Fix compilation errors in fp6 operations * Add tests for inverse and sub for fp2 * Fix square and multiplication for fp6 * Add tests for add, mul, sub and square in fp6 * add fp12 arithmetic * Fix inverse in fp6 * Add tests for inverse in fp6 * add fp12 tests * add inverse test for fp12 * changes mul for sub --------- Co-authored-by: Iván Litteri <[email protected]> Co-authored-by: Joaquin Carletti <[email protected]> * Add point addition and line evaluation algorithm (matter-labs#24) * Point doubling and line evaluation (matter-labs#25) * Refactor for line evaluation functions (matter-labs#29) * Move point doubling and line evaluation to pairing file * Change return type in point adding and line evaluation to match with doubling * Remove incorrect parameter * Change name to match with other pairing function * add mul by gamma functions (matter-labs#31) * Improve fp6 and fp12 arithmetics return type (matter-labs#35) * Change fp6 return type to single tuple * change return to single tuple --------- Co-authored-by: Joaquin Carletti <[email protected]> * add millers loop (matter-labs#30) * add millers loop basics * add PI functions to loop * add neg of a G2 point * add loop counter * fix return of negate funciton * fix loop_counter values * rename utils file * fix imports * change constants to fp6 file * fix miller loop set up * add comment * fix comment * fix typo * Add Final exponentiation (matter-labs#32) * Add ten in montgomery form as constant * Add frobenius operations * Add negate operation for fp6 * Add conjugate operation for fp2 * Add operations in fp2 used in final exponentiation * Add final exponentiation function * Fix return types to match with new changes * Add corrections to n_square function * Use montgomery for gamma factors and add frobenius tests * Add test for cyclotomic square * Add another final exponentiation implementation and test * fix fp6 arithmetic (matter-labs#42) * Precompute Frobenius constants (matter-labs#44) * Add pairing tests for python implementation (matter-labs#36) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop --------- Co-authored-by: Joaquin Carletti <[email protected]> * Frobenius Operator in Yul (matter-labs#43) * Implement Frobenius operator in Yul * Fix Frobenius functions returns * Fix Frobenius functions returns * Add tests * Update comment * add mix addition in yul (matter-labs#45) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop * add mix addition in yul * fix function * Update precompiles/Playground.yul Co-authored-by: Ivan Litteri <[email protected]> --------- Co-authored-by: IAvecilla <[email protected]> Co-authored-by: Iván Litteri <[email protected]> Co-authored-by: Ivan Litteri <[email protected]> * Add cyclotomicSquare and nSquare (matter-labs#47) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop * add cyclotomic square * fix assignments * add nSquare --------- Co-authored-by: IAvecilla <[email protected]> Co-authored-by: Iván Litteri <[email protected]> * Add `t` exponentiation for fp12 in Yul (matter-labs#48) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop * Add implementation for exponentiation by t for fp12 --------- Co-authored-by: Joaquin Carletti <[email protected]> Co-authored-by: Iván Litteri <[email protected]> * Add final exp in yul (matter-labs#49) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop * add final exponentiation * Update precompiles/Playground.yul Co-authored-by: Ivan Litteri <[email protected]> --------- Co-authored-by: IAvecilla <[email protected]> Co-authored-by: Ivan Litteri <[email protected]> * Point doubling step of the miller loop in Yul (matter-labs#46) * Add function utils to check elements in curve and twisted curve * Add conditional for g2 from affine * Add tests for conjugate in fp12 and fp2 * Fix miller loop errors * Add pair function * Add pairing test from eth tests * Correct NAF representation * Change exponentiation impl to be able to test it correctly * Correct point doubling and miller loop * Add test for point doubling and line evaluation * add addition tests * Add tests for frobenius * Add line evaluation test after point addition * Add point doubling and adding functions for projective coordinates * Fix in miller loop function * Add test refactors with new functions * Fix constant for fp12 * Add functions for g2 in projective and affine * Fix NAF representation * add eth tests * add tests names * add expt * change final_exp * fix fp6 square * Delete test generator for pairing in python * Delete unnecesary comments * Delete unused exponentiation function * Delete unused import and old todo * Improve naming of doubling and addition steps in miller loop * Add implementation for point doubling step of the miller loop * Fix fp2 neg function parameters * Fix typo in parameters to return * Add precomputation for inverse of two --------- Co-authored-by: Joaquin Carletti <[email protected]> * G2 Twist in Yul (matter-labs#50) * Add basic functionality for G2 Twist * Rename neg to g2Neg * Rename functions and fix compilation errors * Miller loop in yul (matter-labs#52) * move from playground to ecPairing * add pair function * Fix pair check * Transform calldata into Montgomery form * Remove console logs * Add check for points in twisted curve * Checks for points in group order * Fix pairing tests to match with L1 response * Update README.md * Some refactor * Start g2 scalar mul implementation * Fix compilation errors from new g2 operations * Correct some test assertions * Clean pairing precompile * Ec pairing documentation (matter-labs#68) * document constant functions * add documentation * removeunused functions (#72) * remove_unnecessary_mod (matter-labs#71) * implement suggested optimization (matter-labs#70) * remove constant funcitons (matter-labs#73) * fix point comparison (matter-labs#74) * Fix field order naming (matter-labs#75) * fix field order naming * replace GROUP_ORDER for FIELD_ORDER * Removes_unnecessary_checking_in_ecMul (matter-labs#78) * Add tests for points outside the field (matter-labs#79) * improves overflowAdd (matter-labs#80) * fix typos * Removes unnecessary handling of a special case on addition. (matter-labs#77) * removes unecesary check * resolve confilct * improves_binaryExtendedEuclideanAlgorithm (matter-labs#81) * Revert "Merge branch 'ecPairing' into ecPairing_documentation" This reverts commit 86a6e52a5aa31ac2f33139ad9030952ce8d53f8e, reversing changes made to 5684c153e8990272f09ab2cc922d0c257c9508bc. * Fix documentation with no utf8 characters * Delete unused g2 function * Add TODO comment --------- Co-authored-by: Nacho Avecilla <[email protected]> Co-authored-by: IAvecilla <[email protected]> Co-authored-by: Iván Litteri <[email protected]> * Add subgroup check for G2 points * Fix merge errors * Revert "Merge branch 'main' into ecpairing_subgroup_check" - For some reason merging main breaks the console_log functionality This reverts commit b6823fc25c85f1352405255edcc62ac81cad4904, reversing changes made to 93d66fd8ca8ec665ffb270aadb8499e3fad334c4. * Fix precompiles with incorrect merge * Add playground file to test subgroup check * fix g2Add * wip * Clean scalar mul function for g2 points * wip * Update add function for g2 points * Update pairing with new algorithms for g2 operations * Update docs for new g2 function to check subgroup inclusion * Update pairing tests with new output from test node * Fix tests format * Delete playground file * Update precompiles with main * Add docs for helper functions * Fix typos in docs Co-authored-by: Ivan Litteri <[email protected]> * Delete unnecesary checks in g2 addition Co-authored-by: Ivan Litteri <[email protected]> * Delete unnecesary infinity check --------- Co-authored-by: Iván Litteri <[email protected]> Co-authored-by: Ivan Litteri <[email protected]> Co-authored-by: Joaquin Carletti <[email protected]> Co-authored-by: Joaquin Carletti <[email protected]>
- Loading branch information