Crates.io | pallet-people |
lib.rs | pallet-people |
version | 0.3.0 |
created_at | 2025-06-03 12:32:17.035258+00 |
updated_at | 2025-08-01 13:56:01.578902+00 |
description | Personhood-tracking pallet |
homepage | https://paritytech.github.io/polkadot-sdk/ |
repository | https://github.com/paritytech/polkadot-sdk.git |
max_upload_size | |
id | 1698940 |
size | 367,334 |
A pallet managing the registry of proven individuals.
The People pallet stores and manages identifiers of individuals who have proven their personhood. It tracks their personal IDs, organizes their cryptographic keys into rings, and allows them to use contextual aliases through authentication in extensions. When transactions include cryptographic proofs of belonging to the people set, the pallet's transaction extension verifies these proofs before allowing the transaction to proceed. This enables other pallets to check if actions come from unique persons while preserving privacy through the ring-based structure.
The pallet accepts new persons after they prove their uniqueness elsewhere, stores their information, and supports removing persons via suspensions. While other systems (e.g., wallets) generate the proofs, this pallet handles the storage of all necessary data and verifies the proofs when used.
set_alias_account(origin, account)
: Link an account to a contextual alias Once linked, this
allows the account to dispatch transactions as a person with the alias origin using a regular
signed transaction with a nonce, providing a simpler alternative to attaching full proofs.unset_alias_account(origin)
: Remove an account-alias link.merge_rings
: Merge the people in two rings into a single, new ring.force_recognize_personhood
: Recognize a set of people without any additional checks.set_personal_id_account
: Set a personal id account.unset_personal_id_account
: Unset the personal id account.migrate_included_key
: Migrate the key for a person who was onboarded and is currently included
in a ring.migrate_onboarding_key
: Migrate the key for a person who is currently onboarding. The operation
is instant, replacing the old key in the onboarding queue.set_onboarding_size
: Force set the onboarding size for new people. This call requires root
privileges.build_ring_manual
: Manually build a ring root by including registered people. The transaction
fee is refunded on a successful call.onboard_people_manual
: Manually onboard people into a ring. The transaction fee is refunded on
a successful call.OnboardingSize
and when the remaining open
slots in a ring are at least OnboardingSize
. This does not compute the root, that is done using
build_ring
.PendingSuspensions
map and they are removed from rings and their roots
are reset. The ring roots will subsequently be build in the ring building phase from scratch.
sequentially.The pallet provides the AsPerson
transaction extension that allows transactions to be dispatched
with special origins: PersonalIdentity
and PersonalAlias
. These origins prove the transaction
comes from a unique person, either through their identity or through a contextual alias. To make use
of the personhood system, other pallets should check for these origins.
The extension verifies the proof of personhood during transaction validation and, if valid, transforms the transaction's origin into one of these special origins.
Other pallets can verify personhood through origin checks:
EnsurePersonalIdentity
: Verifies the origin represents a specific person using their PersonalIdEnsurePersonalAlias
: Verifies the origin has a valid alias for any contextEnsurePersonalAliasInContext
: Verifies the origin has a valid alias for a specific contextEnsureRevisedPersonalAlias
: Verifies the origin has a valid alias for any context and includes
the revision of the member's ringEnsureRevisedPersonalAliasInContext
: Verifies the origin has a valid alias for a specific
context and includes the revision of the member's ringLicense: Apache-2.0