Skip to main content

Polkadot-JS Guides about Identity


Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the Polkadot Support Team. For more user-friendly tools see the wallets, apps and dashboard pages.

This is an advanced guide that is relevant for entities that would like to become registrars or would like to set sub-identities to an existing account with an identity. See this page to learn about how to set an identity and have it verified.

Setting an Identityโ€‹

Users can set an identity by registering through default fields such as legal name, display name, website, Twitter handle, Riot handle, etc. along with some extra, custom fields for which they would like attestations (see Judgements).

Instructions for setting and clearing Identities

The procedure to set and clear identities is explained in detail in this support article - How to set and clear an Identity

note

The Ledger app on Nano S doesn't support the extrinsic for setting identity. As a workaround, create a primary identity with an on-chain account and then using that primary identity, assign a sub-identity to the Ledger stash.

Format Caveatโ€‹

Please note the following caveat: because the fields support different formats, from raw bytes to various hashes, a UI has no way of telling how to encode a given field it encounters. The Polkadot-JS UI currently encodes the raw bytes it encounters as UTF8 strings, which makes these values readable on-screen. However, given that there are no restrictions on the values that can be placed into these fields, a different UI may interpret them as, for example, IPFS hashes or encoded bitmaps. This means any field stored as raw bytes will become unreadable by that specific UI. As field standards crystallize, things will become easier to use but for now, every custom implementation of displaying user information will likely have to make a conscious decision on the approach to take, or support multiple formats and then attempt multiple encodings until the output makes sense.

Request Judgementโ€‹

Instructions for requesting and cancelling Identity judgments

The procedure to request and cancel identity judgments is explained in detail in this support article

To be judged after submitting your identity information, go to the Extrinsics tab in the Polkadot-JS UI and select the identity pallet, then requestJudgement. For the reg_index put the index of the registrar you want to be judged by, and for the max_fee put the maximum you're willing to pay for these confirmations.

If you don't know which registrar to pick, first check the available registrars by going to Chain State tab in the Polkadot-JS UI and selecting identity.registrars() to get the full list.

To find out how to contact the registrar after the application for judgement or to learn who they are, you can check their identity by adding them to your Address Book. Their identity will be automatically loaded.

Chevdor is registrar #1

Requesting judgement through Web3 Foundation Registrar

If you requested judgement for your on-chain identity through the Web3 Foundation Registrar (i.e. Registrar #0) you will need to complete a few additional tasks. For more information visit this support article.

caution

The set identity calls go on-chain. Hence, the contact information is available publicly, for both legitimate entities, like registrars or validators, but also scammers who might impersonate them. The strings in the identity fields are good candidates for homograph attacks, as someone could list a fraudulent website (web3.f0undation instead of web3.foundation for example) and still get verified by the registrar (if the checks are automated)!

In a decentralized network, one should be cautious making transactions with accounts solely based on their identity. If an account on-chain claims to be of Web3 Foundation, it is wise to verify its authenticity by checking directly with Web3 Foundation or examining the established history of that account on-chain.

Clearing and Killing an Identityโ€‹

info

Visit the section "Clear an Identity" on this support article for guidelines about clearing identities.

Clearing: Users can clear their identity information and have their deposit returned. Clearing an identity also clears all sub accounts and returns their deposits.

Killing: The Council can kill an identity that it deems erroneous. This results in a slash of the deposit.

Setting Sub-Identitiesโ€‹

To set up sub-identities with Polkadot-JS see the how to set sub-identities support article and this video tutorial.

Setting Sub-Identity (Sub-ID) for your Ledger Accountโ€‹

Setting an Identity is not possible on Ledger app yet, but as a workaround, you can set the identity for an on-chain account and then use it to set a sub-identity to your Ledger account.

  • Go to https://polkadot.js.org/apps/#/accounts. Click on the three vertical dots corresponding to the account to which you already set identity. You should see an option to set onchain sub-identities. Click on it.

    Add sub-identity in PolkadotJS

  • In the pop-up window, select your Ledger account from the dropdown and enter text in sub name field. Then, click on set subs button. Set sub-identity in PolkadotJS

  • Sign and submit the transaction from the parent account with the identity

You should now see the sub-identity displayed on-chain. You need to be aware that is reserved for setting identity and for each sub-identity. This reserved account balance is freed once you clear the identities on the account.

Sub-identity example

Registrarsโ€‹

Becoming a Registrarโ€‹

To become a registrar, submit a pre-image and proposal on OpenGov, then wait for people to vote on it. For best results, write a post about your identity and intentions beforehand, and once the proposal is in the queue ask people to endorse it so that it gets ahead in the referendum queue.

Here's how to submit a proposal to become a registrar:

Go to the Democracy tab, select "Submit preimage", and input the information for this motion - notably which account you're nominating to be a registrar in the identity.setRegistrar function.

Setting a registrar

Copy the preimage hash. In the above image, that's 0x90a1b2f648fc4eaff4f236b9af9ead77c89ecac953225c5fafb069d27b7131b7. Submit the preimage by signing a transaction.

Next, select "Submit Proposal" and enter the previously copied preimage hash. The locked balance field needs to be at least . You can find out the minimum by querying the chain state under Chain State -> Constants -> democracy -> minimumDeposit.

Submitting a proposal

At this point, DOT holders can endorse the motion. With enough endorsements, the motion will become a referendum, which is then voted on. If it passes, users will be able to request judgement from this registrar.