Core Concepts
What is ZK Identity?
A zero-knowledge proof is a mathematical construct that lets one party convince another that a statement is true without revealing why. Althea uses ZK proofs to convince a Solana program that a user has a valid Nigerian ID — without showing the program what the ID is.
The intuition
Imagine you want to prove you know the combination to a safe without opening the safe in public. A ZK proof is the cryptographic equivalent: a tiny artefact that anyone can check, that only someone with the secret could have produced, and that reveals nothing about the secret itself.
For Althea the "secret" is your verified credential — signed by Althea, containing your hashed NIN, your age, and your ID type. The "public statement" the proof attests to is: "I hold a credential signed by Althea, the person it describes is at least 18, and it's a valid Nigerian ID."
Why Groth16
Althea uses the Groth16 proving scheme. It's the most mature zk-SNARK construction in production today — proofs are tiny (under 200 bytes), verification is fast, and it has been securing billions in DeFi since 2017. The trade-off is a per-circuit trusted setup; Althea ran a multi-party ceremony at the time of deployment so no single participant could compromise the parameters.
Why Poseidon
Hash functions used inside SNARKs need to be arithmetic-friendly — efficient over the prime field the circuit operates on. SHA-256 is murder inside a circuit; Poseidon is purpose-built for this. Althea uses Poseidon for both the idHash computation and as the underlying hash for EdDSA signature verification.
What makes it "ZK identity"
Two things, together:
- A trusted source confirms a real-world identity (Dojah for Althea).
- That confirmation is converted into a credential the user holds, and a ZK circuit lets the user prove they hold it without ever revealing it.
The result is identity that is portable, reusable, and permissionless to verify — but never collected, stored, or re-disclosed.
The trust model in one sentence
You trust that Althea's backend signs only real credentials; the cryptography handles the rest.Further reading
- The Circuit — exactly which checks the circuit runs.
- Threat Model — what attacks ZK identity does and does not defend against.