Crate pallet_identity

Source
Expand description

§Identity Pallet

§Overview

A federated naming system, allowing for multiple registrars to be added from a specified origin. Registrars can set a fee to provide identity-verification service. Anyone can put forth a proposed identity for a fixed deposit and ask for review by any number of registrars (paying each of their fees). Registrar judgements are given as an enum, allowing for sophisticated, multi-tier opinions.

Some judgements are identified as sticky, which means they cannot be removed except by complete removal of the identity, or by the registrar. Judgements are allowed to represent a portion of funds that have been reserved for the registrar.

A super-user can remove accounts and in doing so, slash the deposit.

All accounts may also have a limited number of sub-accounts which may be specified by the owner; by definition, these have equivalent ownership and each has an individual name.

The number of registrars should be limited, and the deposit made sufficiently large, to ensure no state-bloat attack is viable.

§Usernames

The pallet provides functionality for username authorities to issue usernames, which are independent of the identity information functionality; an account can set:

  • an identity without setting a username
  • a username without setting an identity
  • an identity and a username

The username functionality implemented in this pallet is meant to be a user friendly lookup of accounts. There are mappings in both directions, “account -> username” and “username -> account”.

Usernames are granted by authorities and grouped by suffix, with each suffix being administered by one authority. To grant a username, a username authority can either:

  • be given an allocation by governance of a specific amount of usernames to issue for free, without any deposit associated with storage costs;
  • put up a deposit for each username it issues (usually a subsidized, reduced deposit, relative to other deposits in the system)

Users can have multiple usernames that map to the same AccountId, however one AccountId can only map to a single username, known as the primary. This primary username will be the result of a lookup in the UsernameOf map for any given account.

§Interface

§Dispatchable Functions

§For General Users
  • set_identity - Set the associated identity of an account; a small deposit is reserved if not already taken.
  • clear_identity - Remove an account’s associated identity; the deposit is returned.
  • request_judgement - Request a judgement from a registrar, paying a fee.
  • cancel_request - Cancel the previous request for a judgement.
  • accept_username - Accept a username issued by a username authority.
  • remove_expired_approval - Remove a username that was issued but never accepted.
  • set_primary_username - Set a given username as an account’s primary.
  • remove_username - Remove a username after its grace period has ended.
§For General Users with Sub-Identities
  • set_subs - Set the sub-accounts of an identity.
  • add_sub - Add a sub-identity to an identity.
  • remove_sub - Remove a sub-identity of an identity.
  • rename_sub - Rename a sub-identity of an identity.
  • quit_sub - Remove a sub-identity of an identity (called by the sub-identity).
§For Registrars
  • set_fee - Set the fee required to be paid for a judgement to be given by the registrar.
  • set_fields - Set the fields that a registrar cares about in their judgements.
  • provide_judgement - Provide a judgement to an identity.
§For Username Authorities
  • set_username_for - Set a username for a given account. The account must approve it.
  • unbind_username - Start the grace period for a username.
§For Superusers
  • add_registrar - Add a new registrar to the system.
  • kill_identity - Forcibly remove the associated identity; the deposit is lost.
  • add_username_authority - Add an account with the ability to issue usernames.
  • remove_username_authority - Remove an account with the ability to issue usernames.
  • kill_username - Forcibly remove a username.

Re-exports§

pub use weights::WeightInfo;
pub use pallet::*;

Modules§

legacy
migration
Storage migrations for the Identity pallet.
pallet
The pallet module in each FRAME pallet hosts the most important items needed to construct this pallet.
weights
Autogenerated weights for pallet_identity

Structs§

RegistrarInfo
Information concerning a registrar.
Registration
Information on an identity along with judgements from registrars.

Enums§

Data
Either underlying data blob if it is at most 32 bytes, or a hash of it. If the data is greater than 32-bytes then it will be truncated when encoding.
Judgement
An attestation of a registrar over how accurate some IdentityInfo is in describing an account.

Traits§

IdentityInformationProvider
Information concerning the identity of the controller of an account.

Type Aliases§

RegistrarIndex
An identifier for a single name registrar/identity verification service.