onflow / flip-fest

A backlog of all the available tasks to complete for Flow's FLIP Fest.
50 stars 39 forks source link

New Standard: Decentralized identifiers (DIDs) on Flow - Milestone 4 #114

Closed mwufi closed 3 years ago

mwufi commented 3 years ago

New Standard: Decentralized identifiers (DIDs) on Flow - Milestone 4

Description

This PR is for issue #17 (https://github.com/onflow/flip-fest/issues/17)

Submission Links & Documents

Notion Blog

image

Demo App Walkthrough

You can modify the DID contents by changing the metadata!

Live Demo on netlify

image

image

Github repo

Requirements Check

Other Details

10thfloor commented 3 years ago

Awesome!!

JeffreyDoyle commented 3 years ago

Awesome demo @mwufi ! Really great stuff here :)

10thfloor commented 2 years ago

@mwufi Thanks for your submission, we wanted to provide you with a final round of feedback, to help guide you if you are considering continuing to work on the project.

Completeness:

The project is mostly complete, and fulfills the requirement of creating a POC for producing DIDs using Flow. We would have liked to see a more complete backend.js with some code for returning a JWS or JWT encoded DID like you mentioned, but the method you provided was enough for a proof of concept.

Scope:

Overall the scope of what you attempted was ambitious (that’s a good thing). There was no requirement to create a name service for Flow users. As there is already an existing Flow name service (FlowNS), we wont be able to support this project as an alternative, as it might cause confusion.

Next steps:

We would love to see you continue working on this project, and will be able to offer some ongoing support if you decide to take the following direction, while re-using as much of the work you’ve already done:

Simplify the DID itself, and remove the name-service functionality.

After looking at DID implementations on other blockchains like Ethereum, Solana and NEAR (inc. links), we think it's possible to simplify your solution to serve a wider degree of use cases on Flow. In short, by using resource interfaces and the security properties of the Cadence account model, it should be possible to attach a DID to any resource (e.g. an NFT) on Flow. We'll follow up with more feedback and details related to this point.

To create account DIDs for Flow, (which could then be extended to include names or NFTs as you imagined) examine: https://www.w3.org/TR/did-spec-registries/#blockchainaccountid https://www.w3.org/TR/did-spec-registries/#did-methods (Specifically the DID specifications submitted by well-know blockchains like Ethereum or Solana) https://github.com/identity-com/sol-did.

Thanks again for your efforts. We hope you’ll decide to build on what you learned, and will continue to help us build out DID infrastructure for Flow, based on the suggestions we’ve made above. If you have any questions about the feedback above feel free to reach out to the team.

mwufi commented 2 years ago

@10thfloor Thanks a lot for the additional feedback!! I definitely think there's going to be some iteration before we identify the right niche for this implementation. Do you mind if I reach out on Discord? :D

Overall, I think the fundamental architecture could be improved -- planning to revamp it in a week or two. The next iteration will probably support better keypair management, NFT-ownership, and more structured off-chain data!

In short, by using resource interfaces and the security properties of the Cadence account model, it should be possible to attach a DID to any resource (e.g. an NFT) on Flow. We'll follow up with more feedback and details related to this point.

Maybe we can start some kind of Discord chat about DIDs!

Looking forward to moving this forward!! Also thanks for your help!! (literally went from 0 knowledge of DIDs to... a tiny nonzero quantity haha)

mwufi commented 2 years ago

Will think about interfaces.... I think it will be game changing to have it be more extensible.. happy thanksgiving, everyone!

fotescodev commented 1 year ago

Why did we stop?