Screen-native
Just a phone and its screen — no hardware orb, no kiosk, no dedicated scanner to ship, run, or trust.
is_human(0x7a3f…91c)true
A passport, a face, and your phone's secure chip become a single yes — proven with zero-knowledge, answered on-chain. Your biometrics never leave the phone. Not even Verity sees them.
Just a phone and its screen — no hardware orb, no kiosk, no dedicated scanner to ship, run, or trust.
A StarkNet contract answers is_human(address). Your proof lives on-chain — it is not trapped in our database.
Every check leaves a signed Ed25519 receipt you can verify yourself, offline — no call back to Verity.
Read is_human(address) on StarkNet, or verify a signed Ed25519 receipt offline. These are distinct confirmations — one operator-key-bound on the chain, one user-key-bound in the receipt — and we never flatten them into one word.
Ask only the attribute you need. Raw date of birth is discarded at enrollment and never stored — age ships as a precomputed yes/no.
is18Plusis21PlusnationalityNo raw date of birthThis is a proof of concept. Here is exactly what is real, shipping code and what is a demo stand-in in the hosted build — labelled, not buried.
On-phone proof generation
The biometric-gated key mint and the P-256 zero-knowledge proof are real, shipping code — by design the proof is cryptographically proven and the biometric never leaves the phone.
The hosted demo
The live deploy runs the chain and prover in mock mode (chain_mode=mock, prover_mode=mock) and relays over the network — it exercises the real end-to-end flow without a live StarkNet write.
is_human(address) on-chain
In this build is_human is operator-relayed and operator-asserted: the chain trusts the operator issuer key, not the device key. A live-chain, device-key-bound read is a v1.5 track.
Liveness / anti-spoof tier
The face-liveness verdict is decided on-device and is demo-only — forgeable on a compromised client. The signed tier makes that legible, not prevented (operator-asserted, not proven).
Cryptographically provenBacked by a device-key zero-knowledge proof — checkable without trusting Verity.
Operator-assertedBacked by Verity's operator signature — you trust the operator key, not a proof. We label which is which.
Attribution, not authentication. Some claims are proven by a zero-knowledge proof; others are operator-signed and labelled as such. We never flatten the two.