Read is_human(address) on StarkNet
Operator-key-bound · issuer-rooted
Anyone can read the contract. In this build the answer is operator-relayed, so the chain trusts the operator issuer key — it is operator-asserted, not a device-key proof.
A consumer confirms a humanity claim two ways — and the two are not the same confirmation. Here is what each one actually checks.
receipt.sig = 0x9f…c2verify(receipt) …is_human → trueAn illustrative sequence — not a live check. It shows the shape of an offline receipt verification; it does not verify a real receipt.
Operator-key-bound · issuer-rooted
Anyone can read the contract. In this build the answer is operator-relayed, so the chain trusts the operator issuer key — it is operator-asserted, not a device-key proof.
User-key-bound · TEE-rooted
Every check leaves a signed receipt you can verify yourself, offline, without calling our API. You check the signature against the device/TEE key — no round-trip to Verity.
Attribution, not authentication. These are distinct confirmations of different facts — one operator-key-bound on the chain, one user-key-bound in the receipt. We never flatten the two into a single "trusted" word.
A pilot runs the real on-device proof generation against a hosted, honestly-labelled demo build. Tell us what you would gate on a human.