Inspiration
Today, to implement and utilize a decentralized ID (DID) solution, there's a lot of work to be done. Current on-chain and off-chain infrastructure requires heavy coding and integration work. This means an interested party - issuer or verifier - who wishes to be part of a trusted DID network must integrate with new SDKs and APIs, while ID holders often are required to download additional ID mobile apps.
Thus, we came out with a simple on-chain solution where anyone can create their own DID solution without having to write a single line of code or need to integrate with any DID system. This brings a better meaning to the term "decentralized identity". The decentralized ID owners also don't need to download any specific ID app.
You can create a DID solution on Mintnite by having the following.
- A SBT (soulbound token) smart contract certified with a digital certificate.
- IPFS to store the decentralized ID data.
- A typical blockchain network that supports non-fungible token such as ERC721 on EVM (Ethereum Virtual Machine).
- A typical Web3 wallet like MetaMask to store the decentralized ID token.
All the above is done for you on Mintnite without you having to perform any development or integration work.
How it works?
The heart of our decentralized ID solution is an ERC721 smart contract that issues SBT (soulbound token) containing DID data. Each decentralized ID is stored in an SBT token. A soulbound token is essentially an NFT such as ERC721. The only difference is that it doesn't allow the NFT holder to transfer this token to anyone else, hence the use of the term soulbound. This DID smart contract should have a verified owner. For example, suppose the French government wishes to issue decentralized IDs to its citizens. In that case, the French public and verifiers must be able to ascertain that the contract that issues the DIDs belongs to the French government because anyone can forge anyone else's contract on a blockchain. The contract ownership can be verified by having a digital certificate that is issued by Ztamp. This certificate ascertains who is the owner of the smart contract, much like an SSL certificate.
Each decentralized ID is stored in a JSON file where each personally identifiable information (PII) is encrypted as a digital signature signed by the wallet of the ID owner. This file is stored on a decentralized storage network such as IPFS.
A verifier, such as a private company or even a bar, could verify a decentralized ID simply by using an ID verification web app on Mintnite. They only need to enter the contract address of the DID issuer, include the wallet address of the ID holder (by scanning their wallet QR code), and select the personal data they need to check. This web app will read the digital signature of the PII data stored in an SBT token and verify the personal data against that signature. If they match, the PII data is authentic. This shows that the decentralized ID owner only needs to reveal the PII data that they are willing to share, not their entire ID card or passport, for instance.
No data is stored on our server or database, everything is on chain. This means we do not keep a copy of the PII data nor do we even know about it. It's all between the DID issuer and the DID holder.
Why it is important to verify the ownership of smart contracts?
Because any scammer could forge a copy of a legitimate contract and pretend to be the real owner. For example, a bad actor could make a copy of the French government's DID contract and begin issuing fake DIDs. Even though some may claim that we could identify genuine contracts via their contract addresses, but that is akin to remembering people based on their bank account numbers or social security numbers. It would be such a hassle! It would also prove to be difficult for legitimate owners to deploy new contracts which requires the new address to be remembered by all. A simple checkmark (ala Twitter style) is best.
What PII data is supported?
This is our version 1.0. So, now we only support the following Personally Identifiable Information (PII).
- Legal name
- Date of birth
- National ID, social security, passport number, driver's license number
- Are you above 18?
- Country
We aim to add more data points such as education credentials (degree, diploma), property ownership (vehicle registration number, land deeds), email address, phone number, residential address and more.
How we built it
This entire DID solution was developed within the period of this hackathon. It is built to be part of the Web3 tools provided on Mintnite.io
Challenges we ran into
To build a QR code scanner to verify each decentralized ID. So far, our solution works with PC cameras as well as front and back cameras on smartphones.
Accomplishments that we're proud of
We aim to offer the best UI/UX experience for issuers and verifiers, as well as decentralized ID holders. Thus, we painstakingly included the use of QR codes and mobile wallet apps to connect between desktop and mobile environments.
What's next for Create Decentralized ID Without Coding
Our DID solution is free to use. So, we wish to see people actually bringing this solution to life and implementing it in real-world use cases.
Log in or sign up for Devpost to join the conversation.