Zero-Knowledge Proofs (ZK proofs) were once merely a theoretical curiosity, but they have recently found widespread application in blockchain systems, such as Zcash and Monero. However, the ZK proofs used in most blockchain applications have made trade-offs in proof size and performance that are not suitable for other use cases. In particular, these protocols often require a complex trusted setup phase and are optimized for the proofs themselves.