- It implements STARKs, or hash-based SNARKs, which boasts a faster prover compared to elliptic curve-based SNARKs like Groth16 or PLONK. This improvement comes mainly from running the majority of the computation in a small prime field (32 bits); Elliptic curve-based SNARKs, on the other hand, need to use big prime fields (e.g. 254-bit prime fields), which incur a lot of overhead as most computation does not require that many bits.
- Even amongst multiple STARK backends, however, S-two provides state-of-the-art prover performance by running the Mersenne-31 prime field (modulo ), which is faster than another popular 32-bit prime field like BabyBear (modulo ). We suggest going through this post for a breakdown of why this is the case.
- Finally, S-two offers various CPU and GPU optimizations that improves prover performance as shown in Figure 1 below. It can also be compiled to WASM, allowing for fast proving in web environments.
Figure 1: Prover performance optimizations in S-two
One of the drawbacks of STARKs is that they have a larger proof size compared to elliptic curve-based SNARKs. One way to mitigate this drawback is by batching multiple proofs together to form a single proof.
On zero-knowledge:As of the time of this writing, S-two does not provide the “zero-knowledge” feature. “Zero-knowledge” here refers to the fact that the proof should not reveal any additional information other than the validity of the statement, which is not true for S-two as it reveals to the verifier commitments to its witness values without hiding them by e.g. adding randomness. This reveals some information about the witness values, which may be used in conjunction with other information to infer the witness values.