Semaphore · interactive mechanism simulation

Members join an on-chain Merkle tree, then prove membership with a zk-SNARK to broadcast a signal — the contract checks a nullifier so each member can signal once per scope without ever revealing which leaf they are. Edit the parameters and watch the flow.
New members publish identity commitment Group Merkle tree 0 members anonymity set: — Member (prover) Groth16 proof + nullifier Semaphore contract verifies proof against root Nullifier registry 0 nullifiers seen Signal broadcast 0 accepted anonymous, unlinkable 0 replays rejected duplicate nullifier
Group members
0
Signals broadcast
0
Replays blocked
0
Anonymity set
Parameters — edit me
60
1.2/s
8%
20
Controls

Illustrative simulation. Defaults mirror Semaphore's researched mechanism (identity commitments in an incremental Merkle tree, Groth16 membership proofs, per-scope nullifiers blocking repeat signals), but join/signal timing is randomized for visualization — not live onchain data. Drag "Group size" below "Min safe anonymity set" to see why small anonymity sets leak. Part of The Onchain Experiment Atlas.