What makes you you? How can you prove that you are you? Sounds like a joke but it's a real problem. Our identities are largely determined by centralized authorities like Governments who issue us documents like passports. For most intents and purposes this is fine; however, this is a single point of failure and it would be better if we had a robust system for identity. The internet is largely dependent on repeated registrations on various sites. This increase the attack vectors for identity theft and data breaches. Currently, we don't really have much control over our identities.
Wouldn't it be nice if we had a self-sovereign decentralized identity system that worked both online and offline. We are still far from this, but we'll get there.
Your identity is built on a number of aspects:
Your physical attributes; for example, retina scans, fingerprints, etc. These traits are used in biometrics to ascertain identity
Entities that attest to your identity; for example, passport and id cards issued by governments, etc.
Things that you have accumulated, achieved, and done throughout your life; for example, awards, certifications, social media data.
All of these indicators can be decomposed into data and can be either linked or stored in an identity document. Each of the document may possess some marginal probability of failure. Increasing the number of such documents tied to identity would increase the reliability of one's decentralized identity.
We note that that StratisIdentity has addressed Identity on Stratis, this project hopes to provide a bridge for w3 specifications from https://www.w3.org/TR/did-core/.
What it does
The system is essentially a registry on Stratis that stores Decentralized Identity (DID) documents. You enter the fields on the frontend generator and input the data into the swagger API to commit the data into the blockchain. Should there be changes you can revoke the document and create a new one. Revocation is also used should the document and the service provider experience any critical issues.
How I built it
The system is built on Stratis C# smart contracts with a front-end UI on React that generates the DID documents.
Challenges I ran into
The main challenge was building out the UI for the smart contract. It was not very clear how to obtain results from post requests. I had to skip this due to time constraints.
The next problem involved CORS requests. It was unclear regarding on how to set the CORS Headers for the Swagger API. As a result I had to ditch the web-based frontend idea. I ended up creating a DID generator in the end for better accessibility. Currently, development on Stratis doesn't really appear to be that web friendly.
Accomplishments that I'm proud of
Building this project :D
What I learned
- Development on Stratis uses a subset of features on C# so care should be taken as to the kind of functionality and data types used.
- The documentation is sparse, for details regarding development it is best to check out the source directly on stratis repositories.
What's next for Decentralized ID
- Monitoring progress with W3C's DID specification and adopting any new changes.
- Building towards a cross-chain Decentralized Identity system, such that Decentralized Identity Documents may be shared across various blockchains increasing robustness even further.