Hello everyone, my name is Ghilia and I'm currently working on Mimo, which is a self-sovereign identity standard on Ethereum. @beltran introduced me to the group (thanks Beltran!) and I've been lurking for a while but I have a pressing UX question for my identity project.
I want to keep user info completely off-chain, that includes the registry of who owns a "name". I don't see an identity system being widely adopted if a user has to pay gas and send a tx everytime they want to change something in their profile. That's why I'm using digital signatures and keeping everything off-chain. You could have the Dapp pay the gas for your txs ofc, but not many projects out there can afford to do something like that other than projects like Status.
The problem with doing stuff off-chain comes issues with consensus. How do multiple parties in a network agree on the state of who owns a name without a consensus algorithm?
Turns out it's impossible, so instead I'm opting for allowing anyone to register a name for themselves even if it's already owned. Meaning two people could register
@conflux, but each profile would have it's own "tag". Similar to how Discord ids work (a username coupled with an id number). As long as as the combination of name and tag is unique then that's enough to differentiate between different users (I think).
The tag is generated by your Ethereum account. Using Alex van de Sande's Daefen library, we can turn the owner address of an identity into a phrase and then take the initals of the phrase and create a tag.
the name is your
tag is an identifier generated by your Ethereum account
the id is the combination of your
In my case: my name would be
@ghiliweld, my tag would be jhoavfst and my id
Even if the tag isn't an actual word, it is still somewhat human readable which is all that's need to differentiate it between the several profiles who's names are @ghiliweld (in a dropdown selection for example). So if you just gave someone your name and an incomplete tag, they would probably be able to find the right profile.
Me: "Hey can you send me 0.5 ETH?"
You: "Sure, what's your Mimo id?"
Me: "It's @ghiliweld and I think the tag is 'jho...'. Not sure but it's something like that."
You: "Hold up, lemme check. Ah, found it! The tag is 'jhoavfst'(pronounced) right?"
Now this is still a WIP, and there's some pitfalls with this approach in regards to fraud and impersonation.
I wanted to get the web3 design community's thoughts on this. Is the UX of this system good or too complicated?
Does anyone have a neat idea of what I can do to improve the design of this system?
Thanks in advance!