Skip to content

Commit

Permalink
CI: cairoZero format, scarb test
Browse files Browse the repository at this point in the history
  • Loading branch information
feltroidprime committed Jul 27, 2024
1 parent 08bda3d commit 2857fcb
Show file tree
Hide file tree
Showing 11 changed files with 497 additions and 1,195 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/cairo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Cairo 1 tests
on:
push:
merge_group:
pull_request:
pull_request_target:

jobs:
check:
Expand All @@ -15,3 +15,4 @@ jobs:
scarb-version: "2.7.0-rc.3"
- run: scarb fmt --check
working-directory: src/cairo
- run: cd src/cairo && scarb test
30 changes: 30 additions & 0 deletions .github/workflows/fustat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Cairo Zero (Fustat) tests

on:
push:
merge_group:
pull_request_target:

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10.14
uses: actions/setup-python@v2
with:
python-version: 3.10.14
- name: Install dependencies
run: |
python -m venv venv
source venv/bin/activate
echo 'export PYTHONPATH="$PWD:$PYTHONPATH"' >> venv/bin/activate
pip install cairo-lang==0.13.2a0
- name: Install GNU Parallel
run: sudo apt-get update && sudo apt-get install -y parallel
- name: Check cairo Formatting
run: |
source venv/bin/activate && ./tools/make/fustat_format_check.sh
- name: Compile cairo files
run: |
source venv/bin/activate && make build
2 changes: 1 addition & 1 deletion .github/workflows/hydra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Hydra backend test
on:
push:
merge_group:
pull_request:
pull_request_target:

jobs:
test:
Expand Down
1 change: 0 additions & 1 deletion hydra/algebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,6 @@ class Polynomial(Generic[T]):
Parameters :
coefficients (list[PyFelt | ModuloCircuitElement]): A list of coefficients for the polynomial.
raw_init (bool): A flag indicating whether to initialize the polynomial directly from a list of coefficients of PyFelt type.
Magic Methods Summary:
- __init__: Initializes a polynomial with a list of coefficients.
Expand Down
4 changes: 2 additions & 2 deletions hydra/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -436,8 +436,7 @@ def get_irreducible_poly(curve_id: int | CurveID, extension_degree: int) -> Poly
return Polynomial(
coefficients=[
field(x) for x in CURVES[curve_id].irreducible_polys[extension_degree]
],
raw_init=True,
]
)


Expand Down Expand Up @@ -1017,5 +1016,6 @@ def replace_consecutive_zeros(lst):
i += 1
return result


if __name__ == "__main__":
pass
62 changes: 41 additions & 21 deletions hydra/precompiled_circuits/all_circuits.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,45 @@
from random import randint, seed

import hydra.modulo_circuit_structs as structs
from hydra.definitions import (BLS12_381_ID, BN254_ID, CURVES, N_LIMBS, STARK,
CurveID, G1Point, G2Point, get_base_field,
get_irreducible_poly)
from hydra.extension_field_modulo_circuit import (ExtensionFieldModuloCircuit,
ModuloCircuit,
ModuloCircuitElement, PyFelt,
WriteOps)
from hydra.definitions import (
BLS12_381_ID,
BN254_ID,
CURVES,
N_LIMBS,
STARK,
CurveID,
G1Point,
G2Point,
get_base_field,
get_irreducible_poly,
)
from hydra.extension_field_modulo_circuit import (
ExtensionFieldModuloCircuit,
ModuloCircuit,
ModuloCircuitElement,
PyFelt,
WriteOps,
)
from hydra.hints import neg_3
from hydra.hints.ecip import slope_intercept
from hydra.hints.io import int_array_to_u384_array, int_to_u384
from hydra.modulo_circuit_structs import (E12D, BLSProcessedPair,
BNProcessedPair,
Cairo1SerializableStruct,
G1PointCircuit, G2PointCircuit,
MillerLoopResultScalingFactor, u384)
from hydra.precompiled_circuits import (final_exp, multi_miller_loop,
multi_pairing_check)
from hydra.precompiled_circuits.ec import (BasicEC, DerivePointFromX,
ECIPCircuits, IsOnCurveCircuit)
from hydra.modulo_circuit_structs import (
E12D,
BLSProcessedPair,
BNProcessedPair,
Cairo1SerializableStruct,
G1PointCircuit,
G2PointCircuit,
MillerLoopResultScalingFactor,
u384,
)
from hydra.precompiled_circuits import final_exp, multi_miller_loop, multi_pairing_check
from hydra.precompiled_circuits.ec import (
BasicEC,
DerivePointFromX,
ECIPCircuits,
IsOnCurveCircuit,
)
from tools.gnark_cli import GnarkCLI

seed(0)
Expand Down Expand Up @@ -2794,11 +2814,11 @@ def format_cairo_files_in_parallel(filenames, compilation_mode):
"params": None,
"filename": "ec",
},
CircuitID.FP12_MUL: {
"class": FP12MulCircuit,
"params": None,
"filename": "extf_mul",
},
# CircuitID.FP12_MUL: {
# "class": FP12MulCircuit,
# "params": None,
# "filename": "extf_mul",
# },
CircuitID.ADD_EC_POINT: {
"class": AddECPointCircuit,
"params": None,
Expand Down
83 changes: 49 additions & 34 deletions hydra/precompiled_circuits/final_exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,27 @@
from enum import Enum
from random import randint

from hydra.definitions import (BLS12_381_ID, BN254_ID, CURVES, STARK, Curve,
CurveID, get_sparsity)
from hydra.extension_field_modulo_circuit import (AccPolyInstructionType,
AccumulatePolyInstructions,
EuclideanPolyAccumulator,
ExtensionFieldModuloCircuit,
ModuloCircuitElement,
Polynomial, PyFelt)
from hydra.hints.extf_mul import (nondeterministic_extension_field_mul_divmod,
nondeterministic_square_torus)
from hydra.definitions import (
BLS12_381_ID,
BN254_ID,
CURVES,
STARK,
CurveID,
get_sparsity,
)
from hydra.extension_field_modulo_circuit import (
AccPolyInstructionType,
AccumulatePolyInstructions,
EuclideanPolyAccumulator,
ExtensionFieldModuloCircuit,
ModuloCircuitElement,
Polynomial,
PyFelt,
)
from hydra.hints.extf_mul import (
nondeterministic_extension_field_mul_divmod,
nondeterministic_square_torus,
)
from hydra.hints.frobenius import generate_frobenius_maps, get_V_torus_powers
from hydra.modulo_circuit import WriteOps
from hydra.poseidon_transcript import CairoPoseidonTranscript
Expand Down Expand Up @@ -456,27 +467,31 @@ def test_final_exp(curve_id: CurveID):
if __name__ == "__main__":
import random

from hydra.definitions import (CurveID, Polynomial, get_base_field,
get_irreducible_poly)

def test_frobenius_torus():
from archive_tmp.bn254.pairing_final_exp import frobenius_torus

field = get_base_field(CurveID.BN254.value)
X = [field(random.randint(0, field.p - 1)) for _ in range(6)]
t = FinalExpTorusCircuit("test", CurveID.BN254.value, 6)
t.create_powers_of_Z(field(2))
X = t.write_elements(X)
XF = t.frobenius_torus(X, 1)
# Xpoly = Polynomial([x.felt for x in X])
# XFpoly = Xpoly.pow(field.p, get_irreducible_poly(CurveID.BN254.value, ))
# assert t.finalize_circuit()
# t.values_segment = t.values_segment.non_interactive_transform()

TT = frobenius_torus([x.value for x in X])
assert all(x.value == y for x, y in zip(XF, TT))

t.print_value_segment()

test_final_exp(CurveID.BN254)
test_final_exp(CurveID.BLS12_381)
from hydra.definitions import (
CurveID,
Polynomial,
get_base_field,
get_irreducible_poly,
)

# def test_frobenius_torus():
# from archive_tmp.bn254.pairing_final_exp import frobenius_torus

# field = get_base_field(CurveID.BN254.value)
# X = [field(random.randint(0, field.p - 1)) for _ in range(6)]
# t = FinalExpTorusCircuit("test", CurveID.BN254.value, 6)
# t.create_powers_of_Z(field(2))
# X = t.write_elements(X)
# XF = t.frobenius_torus(X, 1)
# # Xpoly = Polynomial([x.felt for x in X])
# # XFpoly = Xpoly.pow(field.p, get_irreducible_poly(CurveID.BN254.value, ))
# # assert t.finalize_circuit()
# # t.values_segment = t.values_segment.non_interactive_transform()

# TT = frobenius_torus([x.value for x in X])
# assert all(x.value == y for x, y in zip(XF, TT))

# t.print_value_segment()

# test_final_exp(CurveID.BN254)
# test_final_exp(CurveID.BLS12_381)
Loading

0 comments on commit 2857fcb

Please sign in to comment.