You only prove that you are not in a sanctioned area. You do not need to reveal your full identity. The core materials for this process are: a verifiable credential that proves your place of residence, plus a zero-knowledge proof (ZKP) proving that your residence is not on a specific list of jurisdictions.
Data to Prepare: Selective Disclosure Only Needs Three Things
The essence of this process is "minimal information disclosure": the protocol only needs to confirm that you are "not on the blacklist," and it does not need to know exactly where you are. Specifically, you need these three things:
- A verifiable residence credential. For example, an address proof issued by an authoritative institution (government, bank, compliant KYC provider), a utility bill, or a residence registration card. The credential is processed locally on your device. The plaintext is not uploaded.
- A zero-knowledge proof of "non-sanctioned area." Based on this credential, the system generates a ZKP locally. It proves that your residence code (such as a country code) is not on the sanctions list. The verifier receives only a yes/no conclusion, plus an encrypted signature to confirm the conclusion is valid. It cannot see the specific country name.
- An on-chain or off-chain verification request. The DApp sends a request to the verification contract. It reads the ZKP and the credential public key you submitted. After verification passes, it lets you continue.
The ERC-8262 standard has already defined a format for this kind of compliance proof. The public inputs include compliance proof type, jurisdiction version number, TTL (validity period), proof version number, and other fields, but they do not include user identity information. Private KYC solutions such as zkMe and StarkWare follow a similar logic: after a user scans their passport, the data is encrypted and stored in a wallet. Verification only asks "does this person meet the condition?" instead of "who is this person?"
Practical Flow: Three Steps
- Get the credential. Verify your residence with a compliant KYC provider. Then generate an encrypted credential and store it in a self-sovereign identity wallet (such as zkMe App, Starknet wallet, etc.).
- Generate the proof. When a DApp requires you to prove you are in a non-sanctioned area, the wallet generates a ZKP from the credential. It proves that your residence is not on the sanctions list.
- Submit verification. The DApp verifies the ZKP. After it passes, it lets you proceed.
Risk Reminder: Jurisdiction Version May Be Outdated
Sanctions lists can change. The ERC-8262 draft discussions also mention this issue: the jurisdiction determination threshold is hardcoded and is not dynamically read from a registry. If the first proof you generate uses an older version of the rules, and the sanctions list is updated later, your old proof may not be accepted under the new version. During verification, you should also pay attention to version compatibility. This helps ensure old proofs are not incorrectly rejected or bypassed under a new verifier.


