Closed Savio-Sou closed 3 weeks ago
Hey, thanks for suggesting this, we would indeed like to tackle this. Let me have a look!
(small update: waiting for the aztec noir team to circle back on a few questions)
Additional reference: Closest pointer to ACIR --> R1CS would be arkworks_bridge, which does conversion of ACIR opcodes but to a new data structure instead of R1CS (as in the circom_compat
struct).
Note that conversion is incomplete, where only AssertZero
ACIR opcodes are handled as they can be converted into R1CS cleanly, while other opcodes would fail.
A possible approach could be building a converter which:
AssertZero
opcodes (a la acvm_stdlib
)Follows by witness generation, which can either be witness generation on the ACIR or custom witness generation on the R1CS output.
(Credit @TomAFrench for insights)
Add to sonobe the ability to parse Noir (more accurately ACIR, Noir's intermediate representation of choice) and specifically its folding opcode; hence the ability to fold, prove and generate verifiers for circuits written in Noir.
Relevant links:
bb
) workflow: https://noir-lang.org/docs/dev/getting_started/hello_noir/#[fold]
attribute: https://github.com/AztecProtocol/aztec-packages/pull/5341