Previously the noir-r1cs prove command accepted inputs in the Noir Prover.toml format:
https://github.com/worldfnd/ProveKit/blob/d8a1bab16b8d68db2e42e1b2d05ae3d9d05f1d0c/noir-r1cs/src/cli/cmd/prove.rs#L49-L54
Currently (despite the comment saying otherwise) it requires a fully prepared witness as input. Effectively outsourcing the work of witness generation:
https://github.com/worldfnd/ProveKit/blob/9a9656a8fab1ceca3b539e65003f2a21ec675894/noir-r1cs/src/cli/cmd/prove.rs#L50-L53
It is a critical requirement that the library can do the entire witness generation from only inputs. 'Inputs' here meaning inputs to the noir program main function (which can be both public and private). It is less important how the inputs are provided, but the Prover.toml file is the Noir native way to do that, and we can re-use it until we decide on an internal API. (Obviously when we ship this library we don't want the user to need to generate a file just to call a function).
Until this bug is fixed all benchmark results are worthless as they omit a key part of the proving process. So it blocks the optimization and benchmarking work.
It is also a blocker for any production usage.
Previously the
noir-r1cs provecommand accepted inputs in the NoirProver.tomlformat:https://github.com/worldfnd/ProveKit/blob/d8a1bab16b8d68db2e42e1b2d05ae3d9d05f1d0c/noir-r1cs/src/cli/cmd/prove.rs#L49-L54
Currently (despite the comment saying otherwise) it requires a fully prepared witness as input. Effectively outsourcing the work of witness generation:
https://github.com/worldfnd/ProveKit/blob/9a9656a8fab1ceca3b539e65003f2a21ec675894/noir-r1cs/src/cli/cmd/prove.rs#L50-L53
It is a critical requirement that the library can do the entire witness generation from only inputs. 'Inputs' here meaning inputs to the noir program main function (which can be both public and private). It is less important how the inputs are provided, but the
Prover.tomlfile is the Noir native way to do that, and we can re-use it until we decide on an internal API. (Obviously when we ship this library we don't want the user to need to generate a file just to call a function).Until this bug is fixed all benchmark results are worthless as they omit a key part of the proving process. So it blocks the optimization and benchmarking work.
It is also a blocker for any production usage.