Zero-knowledge proofs (ZKPs) are an emerging cryptographic technique on the verge of becoming increasingly useful and important for everyday users in the near future. In a ZKP, one party can prove to another that they know a statement is true without revealing any other information. It ensures trust and verification in cryptographic transactions while maintaining privacy and security. Recent work by Google has proposed integrating ZKPs into mobile wallets to offer anonymous credentials. Traditionally users need to share their licenses or passports with businesses in order to access age-restricted services, thereby revealing their private information like birthdays and addresses. Anonymous credentials would allow users to provide a cryptographic proof that they have a valid driver’s license issued by their local DMV and that their credential satisfies a policy (e.g., the user is 21 years old). Importantly, the business can check that the policy is satisfied without learning additional information about the user like their birthday or address. Beyond anonymous credentials, there are multiple use cases for ZKPs that are close to deployment. FAEST is a post-quantum secure digital signature scheme that uses ZKPs in its underlying construction. Blockchains like ZCash and Ethereum are already using or looking to deploy ZKPs in order to provide private transactions and accelerate throughput of their networks. Since ZKPs are close to real world use, it is vital to ensure that they are actually secure. For ZKPs to be theoretically secure, they must satisfy two main properties. The first is confidentiality which guarantees that a verifier does not learn anything about the prover’s secret besides the fact that the secret satisfies the policy. The second property is soundness, ensuring that a prover cannot produce a valid proof unless their secret satisfie