ZK Fundamentals: Zero-Knowledge Proofs Explained