A Survey of Zero-Knowledge Proofs with Applications to Cryptography | Open Awesome