The problem zklings solves
Developers who are new to zero-knowledge proof can learn from small exercises to get more familiar in concepts e.g. modular arithmetic and group theory and circuit implementation. All they need to do is having Rust and snarkjs installed, clone the repository and they are good to go.
Challenges we ran into
Exercises design
- In general, We learned more on theory in order to design a good exercises
- Debugging protocols is challenging; it’s essential to print intermediate variables and use assertions to ensure the protocol behaves as expected.
- Learned different hash fields that we can use in plonky3 and make our own proof, created an example using mersenne31 hash field, along with keccak256. (Reference)
Prove generation/verification process in exercise
- Code patterns on checking circuit-related exercise, the pattern is actually able to adjust parameters e.g. power of tau in order to serve exercises that requires larger ceremony. Also good as base for exercise that use different implementation. (Reference)
- Learned on adjusting parameters used for proving circuit for right context. Current exercise circuits are more of smaller ones so using less power e.g. 9 to 10 which is good enough, this also benefits on feedback loop of exercise since proving process will be much faster. (currently it takes est. 10s compared to documentation which takes est. 40s.).
- The implementation in repository is lagged from forked repository and some functionality are not working e.g. watching files. We tried to update codebase on that part to catch up main repository and researched more on improving it.