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

Experimentally integrate C++ Witness Generator #110

Open
oskarth opened this issue Mar 13, 2024 · 3 comments
Open

Experimentally integrate C++ Witness Generator #110

oskarth opened this issue Mar 13, 2024 · 3 comments

Comments

@oskarth
Copy link
Collaborator

oskarth commented Mar 13, 2024

Problem

See #109

Suggested approach

Suggested course of action: We try for C++ witness gen as experimental feature and create a shared branch?PR in mopro for doing an MVP integration, both Vivian and Florent can collab on it together there. The branch/PR can be ugly and breaking and we can clean it up later.

Once it works in MVP form it should be trivial to then integrate with proof-of-passport. This would also allow us to work together on it and sharing code/effort

Details

Also relevant: #44

Acceptance criteria

  • Understanding in diff in terms of interface when using C++ version (e.g. require rapidsnark?)
  • C++ witness generator integrated and working end to end (dirty)
  • Integrated with feature flag cleanly
@oskarth
Copy link
Collaborator Author

oskarth commented Mar 13, 2024

cc @vivianjeng and @0xturboblitz

@0xturboblitz
Copy link
Collaborator

I was able to use it on this branch to calculate a witness for the multiplier circuit. Now I have no idea how to feed it to arkworks' prover, as it comes out as bytes and arkwork's is structured. The most logical path would be to then use rapidsnark as it's part of the same stack, just like the FreedomTools people are doing here, but now this is becoming quite a different stack.
I can move that to the mopro repo too if it helps

@oskarth
Copy link
Collaborator Author

oskarth commented May 22, 2024

https://github.com/rust-lang/rust-bindgen can probably be used for this. If it is using some C++ template stuff, might have to have C intermediate representation

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

2 participants