A set of custom circuits writted in Gnark that are required to support anonymous voting on Vocdoni.
- Hash Poseidon (source code).
- SMT Verifier port from @iden3/circomlib (source code).
- Arbo (by @arnaucube) proof checker from @vocdoni/arbo (source code)
- This is compatible with the SMT Verifier.
- Homomorphic Addition (using point reduction of TwistedEdwards curve to transform circom BabyJubJub points into Gnark BabyJubJub points) (source code) (helpers source code)
- Address derivation from ECDSA public key (hash the key coords with Keccak256 and take the last 20 bytes) (source code).
SMT Verifier vs. Arbo
SMT Verifier | Arbo | |
---|---|---|
Inputs | 4 | 5 |
Constrains | 42316 | 41373 (🏆) |
Solver time | 169.192292ms (🏆) | 211.738333ms |
This repository provides proof-of-concept implementations. These implementations are for demonstration purposes only. These circuits are not audited, and this is not intended to be used as a library for production-grade applications.