A Survey on the Applications of Zero-Knowledge Proofs
<|reference_start|>A Survey on the Applications of Zero-Knowledge Proofs: Zero-knowledge proofs (ZKPs) represent a revolutionary advance in computational integrity and privacy technology, enabling the secure and private exchange of information without revealing underlying private data. ZKPs have unique advantages in terms of universality and minimal security assumptions when compared to other privacy-sensitive computational methods for distributed systems, such as homomorphic encryption and secure multiparty computation. Their application spans multiple domains, from enhancing privacy in blockchain to facilitating confidential verification of computational tasks. This survey starts with a high-level overview of the technical workings of ZKPs with a focus on an increasingly relevant subset of ZKPs called zk-SNARKS. While there have been prior surveys on the algorithmic and theoretical aspects of ZKPs, our work is distinguished by providing a broader view of practical aspects and describing many recently-developed use cases of ZKPs across various domains. These application domains span blockchain privacy, scaling, storage, and interoperability, as well as non-blockchain applications like voting, authentication, timelocks, and machine learning. Aimed at both practitioners and researchers, the survey also covers foundational components and infrastructure such as zero-knowledge virtual machines (zkVM), domain-specific languages (DSLs), supporting libraries, frameworks, and protocols. We conclude with a discussion on future directions, positioning ZKPs as pivotal in the advancement of cryptographic practices and digital privacy across many applications.<|reference_end|>
@article{lavin2024a,
    title={A Survey on the Applications of Zero-Knowledge Proofs},
    author={Ryan Lavin, Xuekai Liu, Hardhik Mohanty, Logan Norman, Giovanni
  Zaarour, Bhaskar Krishnamachari},
    journal={arXiv preprint arXiv:2408.00243},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.00243},
    primaryClass={cs.CR cs.CC}
}