As AI gets better at imitating humans, proof of personhood schemes are becoming increasingly important. These systems set out to accomplish the following goals:
- Verify that a given user is a human
- Verify that a given user is unique
The latter goal, in particular, can have drawbacks. For example, users are unable to create multiple pseudonymous accounts, which may be a desired feature in something like a microblogging platform.
In order to solve this problem, we can use Semaphore's external nullifiers to allow up to N pseudonymous accounts while ensuring accounts cannot be linked to each other. This is in contrast to the typical use of external nullifiers, in which a single app uses a single nullifier to prevent duplicate signups.
Note that this is just one candidate scheme- there may be others with different advantages and drawbacks.
- An app (Y) maintains its own list of users, in a publicly accessible Merkle tree
- Users may add an identity to the Y user group by proving their membership in an external user group, such as Worldcoin
- A fixed number of registration scopes are available, so that the same Worldcoin user may create multiple Y users
- Nullifiers are used per-scope to prevent users from re-using the same identity slot
- All in-app actions are performed by proving membership in the Y user group
Instead of N accounts total, let's say we want to allow users to have up-to-N active accounts - if they delete an account, they should be able to create a new one in its place. Furthermore, we would like these new accounts to be unlinkable to their predecessors.
We can accomplish this by using a successor system, in which each account has a "successor" account that takes its place.
- A Y user creates a new account commitment locally
- The user proves their membership in the Y user group, and provides the commitment of the new account
- The original account profile is marked as deactivated
Notably, this completely revokes access to the original account- this is necessary to prevent users from re-using the same identity slot.