This repo contains an Algorand TypeScript implementation of a BLS12-381 Plonk ZKP verifier. The contract is based on the snarkjs verifier implementation.
This repo not only contains the smart contract, but also a TypeScript SDK that uses algokit-utils. This SDK has not yet been documented, but you can see usage in the tests.
In no particular order:
- Add input validation to the contract
- Documentation
The main reason is because AlgoPlonk uses gnark for circuit compilation and proof generation. The problem with gnark is that it does not support WASM, thus one cannot simply generate a proof client-side in the browser. Additionally, because snarkjs is written in TypeScript, we can leverage algokit-utils for a much better developer experience.