Base Verify Onchain

Core concepts

Verification

A short-lived EIP-712 object signed by Base. Your contract checks it through the Base Verify registry. It contains:

  • identityHash — a one-way hash of the user's real-world identity.
  • policyHash — binds the verification to your contract's policy on a specific chain.
  • expiration — unix seconds; verifications are short-lived (~5 minutes).

identityHash (your dedupe key)

Deterministic per identity and per contract: the same person always produces the same identityHash for your contract, across any wallet. You store it and reject repeats. It's one-way — you can't recover the user's identity from it, and it's different for every contract, so it can't be correlated across apps.

Policy (provider + conditions)

Your contract declares who is eligible: one provider and one or more conditions (e.g. an active Coinbase One membership, or X followers ≥ 1000). Base reads this policy directly from your contract and checks the user's credential against it before signing. See Policies & conditions.

Your contract can also declare an optional cutoffBlock: Base won't sign for a user whose credential was last authenticated before that block, returning needs_reauth so you can send them to re-verify. It defaults to 0 (no cutoff).

Eligibility is enforced by Base

Conditions are read from your contract and checked against the user's stored credential — never taken from the user — so they can't be faked. If the user isn't eligible, no verification is issued.