gitextract_6da2_nl2/ ├── .cargo/ │ └── config.toml ├── .claude/ │ ├── commands/ │ │ ├── bump-version.md │ │ └── upgrade-cairo.md │ └── skills/ │ ├── benchmarking-cairo/ │ │ ├── SKILL.md │ │ ├── installation.md │ │ └── profile.py │ └── cairo-coding/ │ ├── SKILL.md │ └── bounded_int_calc.py ├── .github/ │ ├── .all-contributorsrc │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── 01_BUG_REPORT.md │ │ ├── 02_FEATURE_REQUEST.md │ │ ├── 03_CODEBASE_IMPROVEMENT.md │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── labels.yml │ ├── scripts/ │ │ ├── declare_maintained_contracts.py │ │ └── verify_contracts.py │ └── workflows/ │ ├── cairo.yml │ ├── docs-sync.yml │ ├── e2e.yml │ ├── hydra.yml │ ├── labels.yml │ ├── maturin.yml │ ├── node.yml │ ├── setup.yml │ └── wasm.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .secrets.template ├── .tool-versions ├── CLAUDE.md ├── Cargo.toml ├── LICENSE ├── Makefile ├── README.md ├── Scarb.toml ├── docs/ │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── PYPI_README.md │ ├── SECURITY.md │ ├── benchmarks/ │ │ └── test_summary.json │ └── gitbook/ │ ├── README.md │ ├── SUMMARY.md │ ├── building-powerful-applications.md │ ├── developer-setup-and-guides/ │ │ ├── README.md │ │ ├── garaga-rs-crate/ │ │ │ ├── README.md │ │ │ ├── rust-greater-than-python-bindings.md │ │ │ └── rust-greater-than-wasm-bindings.md │ │ └── working-with-auto-generated-cairo-code.md │ ├── installation/ │ │ ├── README.md │ │ ├── cairo-library.md │ │ ├── developer-setup.md │ │ ├── npm-package.md │ │ ├── python-package.md │ │ └── rust-crate.md │ ├── maintained-smart-contracts/ │ │ ├── README.md │ │ ├── drand.md │ │ ├── risczero.md │ │ └── sp1.md │ ├── security.md │ ├── smart-contract-generators/ │ │ ├── README.md │ │ ├── groth16/ │ │ │ ├── README.md │ │ │ ├── generate-and-deploy-your-verifier-contract.md │ │ │ └── generating-calldata-from-a-proof-and-using-your-deployed-contract/ │ │ │ ├── README.md │ │ │ ├── using-python-garaga-cli.md │ │ │ ├── using-rust.md │ │ │ └── using-typescript.md │ │ └── noir.md │ ├── support.md │ ├── updating-these-docs.md │ └── using-garaga-libraries-in-your-cairo-project/ │ ├── README.md │ ├── ec-multi-scalar-multiplication.md │ ├── ec-signatures.md │ ├── hashing-functions.md │ └── rsa-signatures.md ├── hydra/ │ └── garaga/ │ ├── algebra.py │ ├── curves.py │ ├── drand/ │ │ ├── client.py │ │ └── tlock.py │ ├── extension_field_modulo_circuit.py │ ├── hints/ │ │ ├── bls.py │ │ ├── ecip.py │ │ ├── eisenstein.py │ │ ├── extf_mul.py │ │ ├── fake_glv.py │ │ ├── frobenius.py │ │ ├── io.py │ │ ├── keccak256.py │ │ ├── multi_miller_witness.py │ │ ├── neg_3.py │ │ └── tower_backup.py │ ├── modulo_circuit.py │ ├── modulo_circuit_structs.py │ ├── points.py │ ├── poseidon_transcript.py │ ├── precompiled_circuits/ │ │ ├── all_circuits.py │ │ ├── cofactor_clearing.py │ │ ├── compilable_circuits/ │ │ │ ├── apply_isogeny.py │ │ │ ├── base.py │ │ │ ├── cairo1_mpcheck_circuits.py │ │ │ ├── cairo1_tower_pairing.py │ │ │ ├── common_cairo_fustat_circuits.py │ │ │ ├── rsa.py │ │ │ └── ultra_honk.py │ │ ├── ec.py │ │ ├── final_exp.py │ │ ├── fp2.py │ │ ├── isogeny.py │ │ ├── map_to_curve.py │ │ ├── miller_tower.py │ │ ├── multi_miller_loop.py │ │ ├── multi_pairing_check.py │ │ ├── poseidon_bn254.py │ │ └── zk_honk.py │ ├── rsa_rns.py │ ├── signature.py │ └── starknet/ │ ├── cli/ │ │ ├── declare.py │ │ ├── deploy.py │ │ ├── gen.py │ │ ├── smart_contract_project.py │ │ ├── starknet_cli.py │ │ ├── utils.py │ │ └── verify.py │ ├── constants.py │ ├── groth16_contract_generator/ │ │ ├── calldata.py │ │ ├── examples/ │ │ │ ├── gnark_proof_bn254.json │ │ │ ├── gnark_public_bn254.json │ │ │ ├── gnark_vk_bn254.json │ │ │ ├── proof_bls.json │ │ │ ├── proof_bn254.json │ │ │ ├── proof_risc0.json │ │ │ ├── proof_sp1.json │ │ │ ├── snarkjs_proof_bls12381.json │ │ │ ├── snarkjs_proof_bn254.json │ │ │ ├── snarkjs_public_bls12381.json │ │ │ ├── snarkjs_public_bn254.json │ │ │ ├── snarkjs_vk_bls12381.json │ │ │ ├── snarkjs_vk_bn254.json │ │ │ ├── vk_bls.json │ │ │ ├── vk_bn254.json │ │ │ ├── vk_risc0.json │ │ │ └── vk_sp1.json │ │ ├── generator.py │ │ ├── generator_risc0.py │ │ ├── generator_sp1.py │ │ └── parsing_utils.py │ ├── honk_contract_generator/ │ │ ├── calldata.py │ │ └── generator_honk.py │ └── tests_and_calldata_generators/ │ ├── drand_calldata.py │ ├── map_to_curve.py │ ├── mpcheck.py │ ├── msm.py │ ├── signatures.py │ └── test_writer.py ├── pyproject.toml ├── src/ │ ├── .tool-versions │ ├── Scarb.toml │ ├── contracts/ │ │ ├── autogenerated/ │ │ │ ├── groth16_example_bls12_381/ │ │ │ │ ├── .tool-versions │ │ │ │ ├── Scarb.toml │ │ │ │ ├── src/ │ │ │ │ │ ├── groth16_verifier.cairo │ │ │ │ │ ├── groth16_verifier_constants.cairo │ │ │ │ │ └── lib.cairo │ │ │ │ └── tests/ │ │ │ │ ├── proof_calldata.txt │ │ │ │ └── test_contract.cairo │ │ │ ├── groth16_example_bn254/ │ │ │ │ ├── .tool-versions │ │ │ │ ├── Scarb.toml │ │ │ │ ├── src/ │ │ │ │ │ ├── groth16_verifier.cairo │ │ │ │ │ ├── groth16_verifier_constants.cairo │ │ │ │ │ └── lib.cairo │ │ │ │ └── tests/ │ │ │ │ ├── proof_calldata.txt │ │ │ │ └── test_contract.cairo │ │ │ ├── noir_ultra_keccak_zk_honk_example/ │ │ │ │ ├── .tool-versions │ │ │ │ ├── Scarb.toml │ │ │ │ ├── src/ │ │ │ │ │ ├── honk_verifier.cairo │ │ │ │ │ ├── honk_verifier_circuits.cairo │ │ │ │ │ ├── honk_verifier_constants.cairo │ │ │ │ │ └── lib.cairo │ │ │ │ └── tests/ │ │ │ │ ├── proof_calldata.txt │ │ │ │ └── test_contract.cairo │ │ │ ├── risc0_verifier_bn254/ │ │ │ │ ├── .tool-versions │ │ │ │ ├── Scarb.toml │ │ │ │ ├── src/ │ │ │ │ │ ├── groth16_verifier.cairo │ │ │ │ │ ├── groth16_verifier_constants.cairo │ │ │ │ │ └── lib.cairo │ │ │ │ └── tests/ │ │ │ │ ├── proof_calldata.txt │ │ │ │ └── test_contract.cairo │ │ │ └── sp1_verifier_bn254/ │ │ │ ├── .tool-versions │ │ │ ├── Scarb.toml │ │ │ ├── src/ │ │ │ │ ├── groth16_verifier.cairo │ │ │ │ └── lib.cairo │ │ │ └── tests/ │ │ │ ├── proof_calldata.txt │ │ │ └── test_contract.cairo │ │ ├── drand_decrypt_quicknet/ │ │ │ ├── Scarb.toml │ │ │ └── src/ │ │ │ ├── drand_decrypt.cairo │ │ │ ├── drand_decrypt_constants.cairo │ │ │ └── lib.cairo │ │ ├── drand_quicknet/ │ │ │ ├── .tool-versions │ │ │ ├── Scarb.toml │ │ │ └── src/ │ │ │ ├── drand_verifier.cairo │ │ │ ├── drand_verifier_constants.cairo │ │ │ └── lib.cairo │ │ ├── mutator_set/ │ │ │ ├── .tool-versions │ │ │ ├── Makefile │ │ │ ├── Scarb.toml │ │ │ ├── scripts/ │ │ │ │ ├── prover.py │ │ │ │ └── regenerate_verifier.py │ │ │ ├── snfoundry.toml │ │ │ ├── src/ │ │ │ │ ├── lib.cairo │ │ │ │ ├── mutator_set_contract.cairo │ │ │ │ └── zk_verifier/ │ │ │ │ ├── honk_verifier_circuits.cairo │ │ │ │ ├── honk_verifier_constants.cairo │ │ │ │ └── honk_verifier_contract.cairo │ │ │ ├── tests/ │ │ │ │ └── test_contract.cairo │ │ │ └── zk_program/ │ │ │ ├── Nargo.toml │ │ │ ├── Prover.toml │ │ │ └── src/ │ │ │ ├── main.nr │ │ │ ├── mmr.nr │ │ │ └── mmr_tests.nr │ │ ├── risc0_sample_app/ │ │ │ ├── README.md │ │ │ ├── fibonacci_prover/ │ │ │ │ ├── .gitignore │ │ │ │ ├── Cargo.toml │ │ │ │ ├── README.md │ │ │ │ ├── host/ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src/ │ │ │ │ │ └── main.rs │ │ │ │ ├── methods/ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ ├── guest/ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── main.rs │ │ │ │ │ └── src/ │ │ │ │ │ └── lib.rs │ │ │ │ └── rust-toolchain.toml │ │ │ └── fibonacci_sequencer/ │ │ │ ├── .gitignore │ │ │ ├── Scarb.toml │ │ │ ├── snfoundry.toml │ │ │ ├── src/ │ │ │ │ └── lib.cairo │ │ │ └── tests/ │ │ │ └── test_contract.cairo │ │ └── universal_ecip/ │ │ ├── Scarb.toml │ │ └── src/ │ │ └── lib.cairo │ ├── corelib_imports/ │ │ ├── README.md │ │ ├── Scarb.toml │ │ └── src/ │ │ └── lib.cairo │ └── src/ │ ├── apps/ │ │ ├── drand.cairo │ │ ├── noir/ │ │ │ └── zk_honk_transcript.cairo │ │ ├── noir.cairo │ │ ├── risc0.cairo │ │ ├── sp1.cairo │ │ └── sp1_constants.cairo │ ├── basic_field_ops.cairo │ ├── circuits/ │ │ ├── README.md │ │ ├── dummy.cairo │ │ ├── ec.cairo │ │ ├── extf_mul.cairo │ │ ├── isogeny.cairo │ │ ├── multi_pairing_check.cairo │ │ ├── rsa.cairo │ │ └── tower_circuits.cairo │ ├── core/ │ │ └── circuit.cairo │ ├── crypto/ │ │ └── mmr.cairo │ ├── definitions/ │ │ ├── curves.cairo │ │ └── structs/ │ │ ├── fields.cairo │ │ └── points.cairo │ ├── definitions.cairo │ ├── ec/ │ │ ├── ec_ops.cairo │ │ ├── ec_ops_g2.cairo │ │ ├── generate_selector_code.py │ │ ├── pairing/ │ │ │ ├── groth16.cairo │ │ │ ├── pairing_check.cairo │ │ │ └── single_pairing_tower.cairo │ │ └── selectors.cairo │ ├── hashes/ │ │ ├── poseidon_bn254.cairo │ │ └── sha_512.cairo │ ├── lib.cairo │ ├── signatures/ │ │ ├── ecdsa.cairo │ │ ├── eddsa_25519.cairo │ │ ├── rsa.cairo │ │ └── schnorr.cairo │ ├── tests/ │ │ ├── autogenerated/ │ │ │ ├── ecdsa_tests.cairo │ │ │ ├── eddsa_tests.cairo │ │ │ ├── msm_tests.cairo │ │ │ ├── pairing_tests.cairo │ │ │ ├── rsa_tests.cairo │ │ │ ├── schnorr_tests.cairo │ │ │ └── tower_pairing_tests.cairo │ │ ├── calldata_tests.cairo │ │ ├── proof_calldata.txt │ │ ├── sha512_tests.cairo │ │ └── sp1_groth_16_tests.cairo │ └── utils/ │ ├── calldata.cairo │ ├── hashing.cairo │ └── neg_3.cairo ├── tests/ │ ├── benchmarks_compiled.py │ ├── benchmarks_manual.py │ ├── conftest.py │ ├── contracts_e2e/ │ │ ├── __init__.py │ │ ├── e2e_test.py │ │ ├── fixtures/ │ │ │ ├── __init__.py │ │ │ ├── accounts.py │ │ │ ├── clients.py │ │ │ ├── constants.py │ │ │ └── devnet.py │ │ ├── install_devnet.sh │ │ ├── test-variables.env.template │ │ └── utils.py │ ├── ed25519_test_vectors.json │ └── hydra/ │ ├── algebra/ │ │ ├── test_polynomial.py │ │ ├── test_pyfelt.py │ │ └── test_tower_final_exp.py │ ├── circuits/ │ │ ├── test_ec.py │ │ ├── test_honk.py │ │ └── test_multi_miller_loop.py │ ├── hints/ │ │ ├── test_ecip.py │ │ ├── test_eisenstein.py │ │ ├── test_fake_glv.py │ │ ├── test_final_exp_witness.py │ │ ├── test_frobenius.py │ │ └── test_neg3.py │ ├── starknet/ │ │ ├── test_calldata.py │ │ ├── test_groth16_vk_proof_parsing.py │ │ ├── test_honk_vk_proof_parsing.py │ │ └── test_signatures_calldata.py │ ├── test_bls18_381_map_to_curve.py │ ├── test_cofactor_clearing.py │ ├── test_drand.py │ ├── test_extension_field_modulo_circuit.py │ ├── test_g1_point.py │ ├── test_g2_point.py │ ├── test_isogeny.py │ ├── test_poseidon_hash.py │ └── test_rsa_rns.py └── tools/ ├── addchain/ │ ├── bls12_381_e.acc │ ├── bls12_381_h3_s.acc │ ├── bn254_exp.acc │ ├── bn254_exp0.acc │ ├── bn254_r_m_d_inv.acc │ └── gen_rust_addchain.py ├── garaga_rs/ │ ├── Cargo.toml │ └── src/ │ ├── algebra/ │ │ ├── extf_mul.rs │ │ ├── g1g2pair.rs │ │ ├── g1point.rs │ │ ├── g2point.rs │ │ ├── polynomial.rs │ │ └── rational_function.rs │ ├── calldata/ │ │ ├── drand_calldata.rs │ │ ├── drand_tlock_calldata.rs │ │ ├── full_proof_with_hints/ │ │ │ ├── groth16.rs │ │ │ └── zk_honk.rs │ │ ├── mod.rs │ │ ├── mpc_calldata.rs │ │ ├── msm_calldata.rs │ │ └── signatures.rs │ ├── constants.rs │ ├── crypto/ │ │ ├── digest.rs │ │ ├── merkle_tree.rs │ │ ├── mmr/ │ │ │ ├── mmr_accumulator.rs │ │ │ ├── mmr_membership_proof.rs │ │ │ ├── mmr_successor_proof.rs │ │ │ ├── mmr_trait.rs │ │ │ ├── shared_advanced.rs │ │ │ └── shared_basic.rs │ │ └── poseidon_bn254.rs │ ├── definitions.rs │ ├── ecip/ │ │ ├── core.rs │ │ └── ff.rs │ ├── frobenius.rs │ ├── hints/ │ │ ├── eisenstein.rs │ │ └── fake_glv.rs │ ├── io.rs │ ├── lib.rs │ ├── pairing/ │ │ ├── final_exp_witness/ │ │ │ ├── addchain_pow_generated.rs │ │ │ ├── bls12_381_final_exp_witness.rs │ │ │ ├── bn254_final_exp_witness.rs │ │ │ └── mod.rs │ │ ├── multi_miller_loop.rs │ │ └── multi_pairing_check.rs │ ├── poseidon_transcript.rs │ ├── python_bindings/ │ │ ├── drand_calldata.rs │ │ ├── ecip.rs │ │ ├── extf_mul.rs │ │ ├── final_exp_witness.rs │ │ ├── g2.rs │ │ ├── groth16_calldata.rs │ │ ├── hades_permutation.rs │ │ ├── mod.rs │ │ ├── mpc_calldata.rs │ │ ├── msm.rs │ │ ├── pairing.rs │ │ ├── signatures.rs │ │ └── zk_honk_calldata.rs │ └── wasm_bindings.rs ├── make/ │ ├── bytecode_check.sh │ ├── bytecode_check_max_log_n.sh │ ├── check_sierra_size.py │ ├── ci_cairo.sh │ ├── ci_e2e.sh │ ├── ci_hydra.sh │ ├── ci_wasm.sh │ ├── common.sh │ ├── constants.json │ ├── generate_constants.py │ ├── rewrite.sh │ ├── setup.sh │ ├── steps.sh │ ├── test_contracts.sh │ ├── update_bench_in_readme.py │ ├── update_risc0_class_hash.sh │ ├── wasm-test-gen.sh │ └── wasm.sh ├── noir/ │ ├── Makefile │ ├── hello/ │ │ ├── Nargo.toml │ │ ├── Prover.toml │ │ └── src/ │ │ └── main.nr │ ├── run.sh │ └── transcript.py ├── npm/ │ ├── garaga_ts/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── babel.config.cjs │ │ ├── docker-compose.yml │ │ ├── fix-chown.sh │ │ ├── jest.config.ts │ │ ├── patch.wasm.cjs │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── node/ │ │ │ │ ├── api.ts │ │ │ │ ├── definitions.ts │ │ │ │ ├── hints/ │ │ │ │ │ └── io.ts │ │ │ │ ├── index.ts │ │ │ │ └── starknet/ │ │ │ │ ├── groth16ContractGenerator/ │ │ │ │ │ └── parsingUtils.ts │ │ │ │ └── honkContractGenerator/ │ │ │ │ └── parsingUtils.ts │ │ │ └── wasm/ │ │ │ └── pkg/ │ │ │ ├── garaga_rs.d.ts │ │ │ ├── garaga_rs.js │ │ │ ├── garaga_rs_bg.wasm.d.ts │ │ │ └── garaga_rs_bg.wasm.js │ │ └── tests/ │ │ └── starknet/ │ │ ├── drandCalldata.test.ts │ │ ├── drandTlockCalldata.test.ts │ │ ├── groth16Calldata.test.ts │ │ ├── groth16VkProofParsing.test.ts │ │ ├── poseidonHash.test.ts │ │ ├── signaturesCalldata.test.ts │ │ └── zkHonkCalldata.test.ts │ └── integration-test-suite/ │ ├── .gitignore │ └── packages/ │ ├── nodejs-ts-cjs-tsc/ │ │ ├── .gitignore │ │ ├── output.txt │ │ └── src/ │ │ ├── examples.ts │ │ └── index.ts │ ├── nodejs-ts-esm-tsc/ │ │ ├── .gitignore │ │ ├── output.txt │ │ └── src/ │ │ ├── examples.ts │ │ └── index.ts │ ├── web-js-esm-react/ │ │ ├── .gitignore │ │ ├── next.config.mjs │ │ ├── output.txt │ │ ├── scrape.cjs │ │ └── src/ │ │ └── app/ │ │ ├── examples.js │ │ ├── layout.js │ │ └── page.js │ └── web-js-esm-webpack/ │ ├── .gitignore │ ├── output.txt │ ├── scrape.cjs │ ├── src/ │ │ ├── bootstrap.js │ │ ├── examples.js │ │ └── index.js │ └── webpack.config.js ├── process_manager.py └── profile_tests.py