Most membership systems have the same tradeoff: to prove you belong, you have to say who you are. A whitelist for a token sale reveals your address. A voter roll reveals your vote. A corporate access system reveals which rooms you entered and when.
Zero-knowledge proofs break this tradeoff. This tutorial builds a working allowlist contract in Midnight's Compact language where a member can prove they belong to an approved set without revealing which member they are. The same circuit handles allowlists, voter rolls, and gated access — they are all the same problem underneath.
What we're building
There are three roles in this system.
Role











