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

Remove the ark-circom dependency completely #282

Open
1 of 3 tasks
seemenkina opened this issue Feb 20, 2025 · 0 comments
Open
1 of 3 tasks

Remove the ark-circom dependency completely #282

seemenkina opened this issue Feb 20, 2025 · 0 comments

Comments

@seemenkina
Copy link
Collaborator

seemenkina commented Feb 20, 2025

Background

Currently, ark-circom is used for three primary purposes:

  1. Zkey reading and parsing
  2. Witness calculation
  3. Groth16 proof calculation

Current Status

  • We've already switched to calculating proofs using iden3
  • Key parsing can be accomplished with alternative libraries. For now use ark-zkey approach, but it requires changes
  • Witness calculation still needs to be addressed (example of usage:

    zerokit/rln/src/protocol.rs

    Lines 562 to 570 in 8a3e33b

    let proof = Groth16::<_, CircomReduction>::create_proof_with_reduction_and_matrices(
    &proving_key.0,
    r,
    s,
    &proving_key.1,
    proving_key.1.num_instance_variables,
    proving_key.1.num_constraints,
    full_assignment.as_slice(),
    )?;

Why Remove ark-circom?

The dependency introduces significant compatibility issues:

Proposed Solution

Replace all remaining ark-circom functionality with alternative implementations:

seemenkina added a commit that referenced this issue Feb 21, 2025
Return the exception settings for run-cli. Also remove the build for the
x32 architecture, because the new version of ark-circom depends on
wasmer-wasix, which cannot be built on the x32 architecture.

See this issue for more details:
#282
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant