A Comprehensive Guide to Zero-Knowledge Proofs