ZK Email Β· Deep Dive

How It
Works

A zero-knowledge proof lets you prove you have access to an internal company email β€” where both sender and recipient share the same domain β€” without revealing the email. Here's exactly what happens under the hood.

01

The Core Idea

Prove you know something without revealing what it is

πŸ‘€

Prover

You

Has a secret (an internal company email between two employees). Wants to prove employment without revealing the email.

⚑

Circuit

Circom + snarkjs

A mathematical program that verifies the DKIM signature and checks both From and To share the same domain. Produces a tiny proof.

πŸ”Ž

Verifier

Smart Contract

Checks the 256-byte proof is valid. Never sees your email. Mints the NFT if check passes.

The key insight: The proof is "binding" β€” it can only be generated by someone who has access to an internal company email (both sender and recipient at the same domain). The proof reveals nothing about the email's contents. The smart contract verifies the math, not the email.

02

Anatomy of a ZK Email

What each part of your email is used for

Revealed on-chainVerified in-circuitStays private
From: alice@company.com
DOMAIN CHECKED
To: bob@company.com
DOMAIN CHECKED
DKIM-Signature: v=1; a=rsa-sha256;
  d=company.com; s=google;
  h=from:to:subject:date;
  b=ABCDEFGxyz…
VERIFIED
Subject: Re: Q3 Planning
Date: Thu, 1 Jan 2025 10:23:11 +0000
HIDDEN
[Email body content…]

Hi, I wanted to follow up on…
HIDDEN

↑ Click any row to learn what the circuit does with it

03

The Circuit Pipeline

From .eml file to on-chain proof β€” step by step

β†’
β†’
β†’
β†’
β†’

↑ Click any step to see what it does

Circuit Facts

~4.2M

Constraints

256 B

Proof size

< 2ms

Verify time

04

Try It: Interactive Demo

Step through proof generation and verification yourself

4-Step Interactive Simulator

1
Pick Domain
2
Run Circuit
3
View Proof
4
Verify

Click through each step: pick a company, watch the Circom circuit run in real time, inspect the 256-byte Groth16 proof, then trigger on-chain verification to see exactly what gets revealed versus what stays private.

Open Interactive Demo β†’
05

Inside a Groth16 Proof

The 256-byte object that proves everything

Groth16 is a zk-SNARK proving system. "SNARK" stands for Succinct Non-interactive ARgument of Knowledge. Succinct means the proof is tiny (256 bytes) regardless of how complex the computation was. Non-interactive means there's no back-and-forth β€” the prover sends one message, the verifier checks it.

Ready to prove it?

Generate your own ZK proof from a real internal company email.

Get Your Proof β†’