Procedure
This document describes the procedure to get verified on Polkadot through Polkaregistry. Polkaregistry is a registrar maintained by Wei on Polkadot, providing free and trustless identity verification for everyone.
The verification is handled using a Github pull request workflow, against repository polkaregistry/registry.
#
On-chain identityTo start the verification, please first set your Polkadot identity on-chain. Polkaregistry supports the following fields:
- Legal name (verified via Estonia eID / e-Residency program).
- Email address (verified via Github).
- Matrix handle.
- Website (verified via root
.well-known
URL). - Twitter handle.
#
Prepare for proofsClone the Github repository
polkaregistry/registry, and create
folder polkadot/<address>
. For example, if you want to verify address
1CM4eAY3QFWTPQFNGgvSpPoEAqw1aHA1gmE2atXQ8f4vk1T
, then create folder
polkadot/1CM4eAY3QFWTPQFNGgvSpPoEAqw1aHA1gmE2atXQ8f4vk1T
.
#
Index fileThe index file is a JSON file which documents the verification metadata and
where the registrar should fetch verification proofs. The index file resides in
polkadot/<address>/index.json
. For example, if your address is
1CM4eAY3QFWTPQFNGgvSpPoEAqw1aHA1gmE2atXQ8f4vk1T
, then the index file should be
created at
polkadot/1CM4eAY3QFWTPQFNGgvSpPoEAqw1aHA1gmE2atXQ8f4vk1T/index.json
.
Create the file of the following format:
Replace <address>
by your Polkadot address. The proof field is the location
where verification proofs are added.
#
SignatureAll proofs below requires the message to be signed. The signature can
be of two types -- an off-chain signature that is done directly by the
proving address, or an on-chain signature that directly or directly
calls system.remark
. The latter allows multi-sig addresses and
proxied addresses to be verified.
#
Off-chain signatureOff-chain signatures are directly appended as hex strings at the end of the message.
#
On-chain signatureOn-chain signature are of the following format. The registrar can only verify finalized extrinsics.
Three different types of extrinsics are currently allowed, which are
described as bellow. They all sign a system.remark(<message>)
dispatchable in its essence.
- Directly calling
system.remark(<message>)
with the sender as the proving address. - Call
proxy.proxy
withreal
as the proving address.force_proxy_type
must beAny
, and the call must besystem.remark(<message>)
. - Call
multisig.asMulti
with a successfulMultisigExecuted
event, where the multisig address is the proving address andcall
issystem.remark(<message>)
.
#
Estonia eID proofThis proof allows you to verify your legal name field. To create the proof, you will first need to sign a message with your address. The body of the message is as follows:
Replace <legal name>
with your legal name, in <first name> <last name>
format, and replace <address>
with your Polkadot address. The signature should
then be appended to the end, with a space in between. An example is shown as
below:
You can also use the tool provided at polkaregistry/tools
to generate the
proof.
Save the above proof in a file named polkaregistry.txt
, and then open the eID
signing application DigiDoc4. You can then create a signature, which will give
you an .ascie
file. Rename the file to eeid.ascie
.
After this, you can choose how you want to publish the proof. You can either:
- Directly put the proof to the
polkaregistry/registry
repository. The path in the repo should bepolkadot/<address>/eeid.ascie
. Then, add"eeid": "local:eeid.ascie"
into the index file proofs section. - Publish the proof to IPFS. This will allow you to later redact your signature
from the public view, if you no longer wish to be verified by Polkaregistry.
In this case, add
"eeid": "<ipfs URI>"
into the index file proofs section.
#
Github proofThis proof allows you to verify your email address field. If you wish to use this, make sure the email address your set on-chain is the same as the public email address in your Github profile. Sign a message with the following body:
Replace <handle>
with your Github handle, and <address>
with your Polkadot
address. The signature should then be appended to the end, with a space in
between. An example is shown as below:
Put this signed message into a Github gist, with file name as
polkaregistry.txt
. Then, add "github": "<gist URI>"
into the index file
proofs section.
#
Matrix proofThis proof allows you to verify your Matrix field. Sign a message with the following body:
Replace <handle>
with your Matrix handle, and <address>
with your Polkadot
address. The signature should then be appended to the end, with a space in
between. An example is shown as below:
Use your handle to join the Matrix room at #polkaregistryproofs:matrix.org
,
and post your signed message. Then, get the event ID if your Matrix message. You
can do this by clicking under your message "options", "view source". The event
ID will be shown in the pop-up.
The final step is to add the Matrix URI of your signed message to the index
file, under "matrix"
key. It is of the following format:
Replace <event id>
with the Matrix event ID. And example is:
#
Website proofThis proof allows you to verify a website link. Sign a message with the following body:
Replace <domain>
with your website domain, and <address>
with your Polkadot
address. The signature should then be appended to the end, with a space in
between. An example is shown as below:
Make the above message accessible from
https://<domain>/.well-known/polkaregistry.txt
. For example, if your
<domain>
part of the link is that.world
, then it should be accessible from
https://that.world/.well-known/polkaregistry.txt
.
Add "website": "https://<domain>/.well-known/polkaregistry.txt"
into the index
file proofs section.
#
Twitter proofThis proof allows you to verify your Twitter handle. Sign a message with the following body:
Replace <handle>
with your Twitter handle, and <address>
with your Polkadot
address. The signature should then be appended to the end, with a space in
between. An example is shown as below:
Post a public tweet using your Twitter handle. Copy the tweet link, and add
"twitter": "<tweet link>"
into the index file proofs section.
#
Pull requestAfter finishing preparing the index file and proofs, open a pull request against repository polkaregistry/registry. It is then done! Your Polkadot identity will be verified once all proofs are checked to be valid!