About World ID
Protocol Overview
How it works
The following diagram outlines the technical flow for a World ID transaction. Find more details on each component in the section.
When a user executes a World ID transaction they assert and prove two things:
- They are a human.
- They are performing a specific action (see below) only once.
What are actions?
An action is something that a single human can perform only once. For example: receive an airdrop, vote on a specific issue, fund a specific project, create an account with a particular service. A project may request verification for multiple actions, but it's important to consider that will be scoped to each action. More on actions can be found in the .
Proof of personhood
The protocol relies on a instance and zero-knowledge proofs, which allow a user to prove their membership to a set (in this case the set of verified identities) without revealing who they are. The Orb performs multiple real-time checks to ensure the person in front is a human that has not been seen before. Advanced details found on .

Proof of uniqueness
Given that we don't know anything about the person who's proving their membership to the set, a critical piece of the protocol is making sure a person can only prove their membership in a particular context only once. For instance, if you're doing an airdrop, you want to make sure a single person can only claim the airdrop once. We do this through actions. A user can only submit a proof for an action once. To define each action, we use which is an arbitrary string that the verifying party crafts and provides. A single user will always output the same for the same action ID.
Example: Alice is an end user who has verified at a Worldcoin orb. MeshaApp is a dapp with a new token that wants to airdrop a piece but only once per person.
- MeshaApp asks Alice to verify with World ID and provides action ID
meshaApp-airdrop
. - Alice generates a in their Worldcoin app using the action ID:
meshaApp-airdrop
=>nullifier_hash_1
. - MeshaApp can verify the proof comes from an identity belonging to the set of verified identities and can store
nullifier_hash_1
in the list of claimed airdrops. Note in particular, MeshaApp has no way of associatingnullifier_hash_1
to any particular identity. - If Alice ever generates another ZKP at any point in time for the same action ID
meshaApp-airdrop
, the generated nullifier hash will always benullifier_hash_1
, and therefore MeshaApp can decline any additional airdrop requests for claimed hashes. - If Bob (another end user), generates a ZKP with their identity for action ID
meshaApp-airdrop
, the result will benullifier_hash_2
(different from Alice's nullifier hash). - If Alice generates a ZKP for another action ID (e.g.
meshaApp-airdrop-2
), the generated nullifier hash will be different from the very first one =>nullifier_hash_3
.
Components
Component | Owner | Description |
---|---|---|
The Orb | Worldcoin (OSS in 2022) | Responsible for verifying personhood by obtaining biometric data and submitting verified identities for the protocol. |
Worldcoin app | Worldcoin (OSS in 2022) | Non-custodial wallet that stores the private information from the World ID identity. Generates ZKPs for World ID claims. |
Worldcoin ( OSS ) | Integrate with your dapp to easily interact with World ID and request and receive proofs from the Worldcoin app. | |
Client app | Developer (You) | Any dapp that has an action that wishes to protect behind World ID. The client app loads the JS package to use World ID. |
Smart contract | Developer (You) | Main execution point of World ID. The smart contract verifies submitted ZKPs, ensures uniqueness of ZKPs and then executes whatever action. Can be forked from any of our . |
Client wallet | End user | Any ETH-enabled wallet. Executes the transaction the smart contract dictates, providing the ZKP details as well as any other needed parameters. |
Sequencer | Worldcoin (optional) | Centralized server that helps batch multiple proof submissions to reduce gas cost. |
World ID Backend | Worldcoin (optional) | Simple service that stores information on . |