distaff
distaff copied to clipboard
Zero-knowledge virtual machine written in Rust
This PR will attempt to add support for random access memory. This requires: - [ ] Move `PUSH` operation out of high-degree operation class into its own class. - [...
Current default security level of the proofs is around 110 bits (not 120 as mentioned in the docs). Getting more security than this would require running FRI in a quadratic...
Some of the instructions below would require support for 2-parameter instructions. ### Crypto instructions * `digest.n` to support hashing long sequences of values (as in #38) ### Bit manipulations *...
Candidates for addition: * `CSWAP` to maintain consistency with `CSWAP2` instruction. Candidates for removal: * `CHOOSE2` operation can be emulated by using `CSWAP2` operation. * `CHOOSE` operation can be emulated...
Current `hash` instructions allow hashing between 1 and 4 field elements. Hashing of more than 4 elements is possible but requires the user to manually calculate the number of `hash`...
It would be great if the VM supported EC operations (point addition, doubling, multiplication). This would open the door for verifying EC signatures (e.g. Schnorr) within the VM as well...
To improve code organization the repo should be split up into multiple crates. Potential crates are: * *Math* with all the functionality that currently lives under /src/math * *Crypto* for...
Currently, stack is the only place to store values. This is rather limiting, and can be improved by introducing random access memory. Adding RAM would require: 1. Implementing ALT stack...
This is great work! Do consider taking inspiration from ZkVM, since it implements a nice Bitcoin Script-like language (w/ bulletproofs as the proof system). You might get some nice ideas...
Currently, proof generation is done in a single thread. Prooving time can be sped-up significantly by taking advantage of multi-threading. The following areas could be parallelized (ranked in order from...