In the Waldo example, the verifier learns that Waldo exists, without learning where. But how does the proofer prove that?
Most ZK proofs follow a pattern: Commit → Challenge → Response .
The proofer first commits to a hidden answer. The verifier sends a challenge. The proofer responds in a way that can only be correct if they know the answer.
This can be repeated many times to build trust.
hash(secret)