Identity Registry
IdentityOn-chain identity system where accounts register metadata (name, URL, description) with a deposit, queryable by anyone.
Identity Registry Flow
Identity Registry
- User calls set_identity to register or update their identity
- User calls clear_identity to remove their identity and reclaim deposit
Click items to navigate to their reference pages.
The Big Picture
The Identity Registry gives human-readable names to Subtensor addresses. Without it, every account is just a 48-character SS58 string. With it, validators, subnet owners, and delegates can publish their name, website, and contact info on-chain — making the network more navigable for humans and AI agents alike.
Why This Matters
Identity helps users verify who they are interacting with. Validators with registered identities are easier to evaluate and trust. Subnet owners use identity to brand their subnets.
Example Scenario
A validator calls set_identity with display: "NorthTensor", web: "https://northtensor.ai", and a description. This costs InitialDeposit + 1 × FieldDeposit (for the extra description field). Now any UI or API can show "NorthTensor" instead of "5Grw...QY".
Common Questions
- Is the deposit lost?
- No — the deposit is reserved (locked) in your account. When you clear your identity, the full deposit is returned.
- Can anyone set any name?
- Yes, there is no uniqueness enforcement or verification. Names are self-attested. UIs may add their own verification layers.
Use Cases
- Registering validator or subnet owner identity
- Displaying human-readable names in UIs
- Building identity verification tools
- Querying identity metadata via RPC or API
The Registry pallet provides on-chain identity for Subtensor accounts. Any coldkey can call `set_identity` to associate human-readable metadata — display name, legal name, web URL, social handles — with their account. Registration requires a deposit (InitialDeposit + FieldDeposit per additional field) that is returned when the identity is cleared.
Identities are stored in `IdentityOf` storage as a bounded set of key-value fields. Other pallets and UIs can read this storage to display human-friendly names instead of raw SS58 addresses. The pallet enforces a maximum number of additional fields (MaxAdditionalFields) to bound storage usage.
Triggers
- User calls set_identity to register or update their identity
- User calls clear_identity to remove their identity and reclaim deposit
Inputs (2)
| Item | Type | Role |
|---|---|---|
| set_identity Registry | call | Register or update on-chain identity metadata |
| clear_identity Registry | call | Remove identity and reclaim deposit |
Outputs (3)
| Item | Type | Role |
|---|---|---|
| IdentitySet Registry | event | Emitted when an identity is set or updated |
| IdentityDissolved Registry | event | Emitted when an identity is cleared |
| IdentityOf Registry | storage | Maps account → identity metadata (bounded fields) |
Source Files
pallets/registry/src/lib.rs Formulas
Identity Deposit
The deposit is a base cost plus a per-field cost, ensuring accounts pay proportionally for storage usage.
deposit = InitialDeposit + (num_additional_fields * FieldDeposit) // Deposit is reserved (locked), returned on clear_identity