Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIP-0072? | DApp Registration & Discovery #355

Merged
merged 65 commits into from
Jun 9, 2023

Conversation

ehanoc
Copy link
Contributor

@ehanoc ehanoc commented Oct 18, 2022

This proposal aims to standardize the process of metadata claims, dApp registration, discovery and verification. and to provide a way for DApp developers to make a set of claims when registering their Dapps and adding a way for other actors to index / crawl and discovery registration of DApps in the eco-system.

It attempts to create a fair standard for actors to discover dapps being registered in the ecosystem and no boundaries to participate and collect information about dapps, authors, scripts, audits. Also by design tries to give options to the different actors of the system:

  • Stores & Auditors : from where to read metadata from (i.e off-chain sources)
  • Developers: Perform targeted releases (Where to write metadata so it can be found by stores, auditors & certifiers)

Validation mechanisms:

  • integrity checks from what is anchored on-chain vs off-chain metadata sources (i.e cip-26, ipfs, others)
  • trust - each other can maintain and choose it's own list of trusted entities / public keys to assert trust in the signed certificates.
    • This can be expanded by using identity concepts and including extra information as part of the metadata that is registered (i.e DIDs)

(rendered proposal in branch)

@matiwinnetou
Copy link
Contributor

  1. Great starting point(!)
  2. Our experience building DappsOnCardano.com is that a dapp has formal or informal version, version is nothing else than collection of scripts. Scripts can be only Plutus V1, only Plutus V2 or mixture of both. Some dApps are one script based but many dApps collectively are a list of scripts working together.
  3. Is this needed for lace wallet only or will there be other use cases?
  4. Are you also planning within the same spec for certification companies issue a dapp certificate (based on certification results) or that would have to be a different CIP?

@matiwinnetou
Copy link
Contributor

@ehanoc would love to chat about this. We managed to iterate over domain model for dApps at: https://github.com/Cardano-Fans/crfa-offchain-data-registry, while this is probably richer than what you wanted to achieve there could be some valueable learnings there for this CIP.

@KtorZ KtorZ changed the title [WIP] CIP-0072 DApp Registration CIP-???? | DApp Registration Oct 25, 2022
@KtorZ KtorZ changed the title CIP-???? | DApp Registration CIP-0072 | DApp Registration Nov 8, 2022
@KtorZ KtorZ changed the title CIP-0072 | DApp Registration CIP-0072? | DApp Registration Nov 8, 2022
@ehanoc
Copy link
Contributor Author

ehanoc commented Nov 14, 2022

  1. Great starting point(!)
  2. Our experience building DappsOnCardano.com is that a dapp has formal or informal version, version is nothing else than collection of scripts. Scripts can be only Plutus V1, only Plutus V2 or mixture of both. Some dApps are one script based but many dApps collectively are a list of scripts working together.
  3. Is this needed for lace wallet only or will there be other use cases?
  4. Are you also planning within the same spec for certification companies issue a dapp certificate (based on certification results) or that would have to be a different CIP?

@matiwinnetou Thanks!

  1. Would love to explore these and trying to consider them into a possible solution.
  2. Overall use cases. But maybe not just relevant to wallets, i think this is a general metadata problem
  3. I have some ideas for dapp certification, which are not metadata related; mostly identity & DID based.

But i've set this to draft because i believe it's important to describe the problem first before coming up with the solution. In order with the new guideliens, i've open a draft CPS for this purpose. I think if we nail the problem first in a concise way, we can come up with a (or set of) solutions for it that make sense.

@matiwinnetou
Copy link
Contributor

@ehanoc For sure. Would love to setup meeting with you and talk a bit. I can share experiences and it could be that we at DappsOnCardano we are rather users of this than contributors. I see a problem today on Cardano that protocol XYZ tells me that they have audit from CertiK for V2 and not only V1 and I have to analyze this and trust them. I would like CertiK to publish this on chain. This could be yet another use case but I would happily talk to you if possible about all these things we have been facing.

CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
@ehanoc ehanoc marked this pull request as ready for review January 10, 2023 13:33
Copy link
Contributor

@flyerman flyerman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Great proposal. I think it's a good step forward for the user experiences and the ecosystem. There is still details to iron out but I like the general concept and the proposed solution.

See my comments and questions below:

CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
@ehanoc ehanoc marked this pull request as draft January 23, 2023 13:37
…mprovements in schema and release properties
@ehanoc ehanoc marked this pull request as ready for review January 23, 2023 15:00
CIP-0072/README.md Outdated Show resolved Hide resolved
@ehanoc ehanoc changed the title CIP-0072? | DApp Registration CIP-0072? | DApp Registration & Discovery Jan 24, 2023
…d recommendation for keeping all past histories of off-chain snapshots.
CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
"action":{
"type":"string",
"enum":["REGISTER", "DE_REGISTER"],
"pattern": "^(REGISTER|DE_REGISTER)$",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is defined as enum, do we additionally need the regex?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably not, good point

CIP-0072/README.md Outdated Show resolved Hide resolved
matiwinnetou and others added 2 commits April 28, 2023 12:36
Co-authored-by: Marcin Mazurek <marcin@mazurek.pro>
@rphair rphair added the Last Check This proposal has been reviewed and approved, staged for merging. label May 16, 2023
Copy link
Collaborator

@rphair rphair left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review at last meeting highlights already live & reference implementations, so should be merged as Proposed to facilitate further adoption. Therefore marking Last Check and we should also get @KtorZ to review and @Ryun1 will also add comments.

I've also been reading this periodically and I find it quite satisfactory today & acknowledge it's also well received by apparently unaffiliated parties and therefore @ehanoc our merging as Proposed would solve the chicken-egg problem of merging as CIP and evidence of further adoption depending upon each other.

@rphair rphair requested a review from KtorZ May 16, 2023 09:28
Copy link
Collaborator

@Ryun1 Ryun1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on this proposal @matiwinnetou, for me this proposal is well written and has a solid technical approach and thus is a good candidate to merge.

I only have a few minor points - see below. 🤠


on-chain_metadata = {
subject: string,
rootHash: sig_256,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this type a signature and not a hash?

CIP-0072/README.md Outdated Show resolved Hide resolved
update the proposal to be in `ACTIVE` state.

### Acceptance Criteria
- IOG and CF approval
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is this measured?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More importantly, this CANNOT be an acceptance criteria. IOG and CF are not authorities when it comes to approving CIPs. Acceptance criteria must reflect actually measurable data points and show "proof of activity / usage".

CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved
CIP-0072/README.md Outdated Show resolved Hide resolved

### Acceptance Criteria
- IOG and CF approval
- Community representative approval (Santiago / TxPipe and Marcel / Eternl wallet)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If these people are meant to be implementors of the standard, then we should list them as implementors. And, it goes without saying that they should confirm having such role.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They didn't, I removed them.

is in `PROPOSED` status. After certain period (no longer than 6 months), from time of merging PR in `PROPOSED` status to the main / master branch, we will
update the proposal to be in `ACTIVE` state.

### Acceptance Criteria
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a concrete acceptance criteria, I'd suggest to have at least 2-3 non-trivial dApps from different entities registered through this method. That would serve as a good measure of its acceptance.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

## Path to Active
We will evaluate for a few months if we have not missed any details, collect feedback from dApp developers, stores. We reserve right to make small changes in this time, while the proposal
is in `PROPOSED` status. After certain period (no longer than 6 months), from time of merging PR in `PROPOSED` status to the main / master branch, we will
update the proposal to be in `ACTIVE` state.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can only happen if the proposal meets its acceptance criteria though.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense, changed

Authors:
- Bruno Martins <bruno.martins@iohk.io>
- Mateusz Czeladka <mateusz.czeladka@cardanofoundation.org>
Implementors: []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that there's an implementation plan, this shouldn't be empty.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Co-authored-by: Ryan Williams <44342099+Ryun1@users.noreply.github.com>
@rphair
Copy link
Collaborator

rphair commented Jun 6, 2023

@ehanoc the Last Check label that I put on after the CIP meeting discussion 3 weeks ago was pending a response to other editors' direct review, which still hasn't happened yet. We're still lacking your response to these 2 reviews, and some of these issues are definitely blocks to merging (e.g. "IOG and CF approval" as an acceptance criteria):

These points are probably addressable within the hour; perhaps you can make it to the meeting and, if they've been fixed before then, perhaps we can merge it. Otherwise I will suggest we label this Waiting for Author until you can respond to these reviews. 🙏

@Ryun1
Copy link
Collaborator

Ryun1 commented Jun 6, 2023

@rphair, I have confirmed @matiwinnetou's attendance for this meeting 😎

@rphair
Copy link
Collaborator

rphair commented Jun 6, 2023

@matiwinnetou thanks for the discussion in the last hour's CIP editors' meeting, after which we have agreed to leave on the Last Check label with the intention of merging at the next biweekly meeting, once all the review comments above are resolved especially the updates you are making to Path to Active (cc @ehanoc).

We also noted that this question might be addressed by leaving the list of implementors empty, but also that this could negatively impact adoption of the standard (this is a common difficulty that affects a number of CIPs). If you need more time to work out that detail please let us know.

@matiwinnetou
Copy link
Contributor

@rphair I will work on the last remaining points, they should be ready for sure for next CIP editors meeting.

@matiwinnetou
Copy link
Contributor

matiwinnetou commented Jun 8, 2023

@rphair @Ryun1 - I hope this is it.. I added changed according to the suggestions...

Copy link
Member

@KtorZ KtorZ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the prompt update @matiwinnetou 🙏

@KtorZ KtorZ merged commit a77a1a7 into cardano-foundation:master Jun 9, 2023
rphair pushed a commit that referenced this pull request Jun 19, 2023
@rphair rphair removed the Last Check This proposal has been reviewed and approved, staged for merging. label Jun 19, 2023
Ryun1 added a commit to Ryun1/CIPs that referenced this pull request Jul 28, 2023
* Initial draft for dapp registration certificate spec

* Init Draft CPS-0001

* Add Use Cases, improve descriptions

* Typo

* Generalizing CPS, simplifying problems and use cases. Add open questions

* Add type key for REGISTER & UPDATE. Define rules for calculting hash of the metadata object tree

* typoe fix

* mistake folder added in last commit

* Suggest metadata transaction labels for dapp registration and certification

* Suggest metadata structure, off chain storages up to the operators. Improvements in schema and release properties

* Refactor for more compliant header

* Removing permissionToAggregate

* Section for stores custom required metadata fields

* Better descriptive title

* Metadata links included in cert. Removing audits and simplify explanation

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* typos, structure adjustments and small prose adds

* Metadata links included in cert. Removing audits. Small refactoring

* specify size of hash

* Authors update

* Delete sample-cip26.md

* removing auditId

* Add logo to suggested metadata properties

* amendments based on comments / experience / feedback.

* re-intro website + added regex patterns.

* Update CIP-0072/README.md

Co-authored-by: Robert Phair <rphair@cosd.com>

* example fixes and adjusting to CIP template

* added placeholders

* added rationale section

* fixes in rationale section

* more rationale

* fixed on-chain signature scope

* categories

* typo fixes

* word wrapping test

* cosmetics

* cosmetics

* Path to Active

* more community comments

* Fixes according to feedback

* CIP version is mandatory, releases is optional, new algo to calculate signature

* signature generation: hex vs byte array clarification

* formatting fixes

* added version description and more decisions rationale

* typo fix

* Fixed patterns for hex strings, added changed DE-REGISTER to DE_REGISTER and added new DE_REGISTER_ALL, schema version changed from 04 to 2019-07.

* fixed several outdated things across CIP (ehanoc#16)

* removed several outdated things across CIP

* addressed all comments on initial commit

* Allow to express longer metadata URLs as an array of strings (ehanoc#17)

* latest changes as per last meeting agreements

* Update README.md

* Update README.md

* CDDL

* CDDL fix

* cosmetics

* initial categories update

* security_vulnerability field, added comment field in on-chain json and recommendation for keeping all past histories of off-chain snapshots.

* Update CIP-0072/README.md

Co-authored-by: Marcin Mazurek <marcin@mazurek.pro>

* latest comment fixes

* Apply suggestions from code review

Co-authored-by: Ryan Williams <44342099+Ryun1@users.noreply.github.com>

* changes according to the recent comments

* correction on Acceptance Criteria

---------

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>
Co-authored-by: Ryan Williams <rwilliams1@firstderivatives.com>
Co-authored-by: Mateusz Czeladka <mateusz.czeladka@cardanofoundation.org>
Co-authored-by: matiwinnetou <mateusz.szczap@gmail.com>
Co-authored-by: Robert Phair <rphair@cosd.com>
Co-authored-by: Volodymyr Hulchenko <57362128+vhulchenko-iohk@users.noreply.github.com>
Co-authored-by: Marcin Mazurek <marcin@mazurek.pro>
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
Co-authored-by: Ryan Williams <44342099+Ryun1@users.noreply.github.com>
Ryun1 pushed a commit to Ryun1/CIPs that referenced this pull request Jul 28, 2023
Ryun1 added a commit to Ryun1/CIPs that referenced this pull request Nov 17, 2023
* Initial draft for dapp registration certificate spec

* Init Draft CPS-0001

* Add Use Cases, improve descriptions

* Typo

* Generalizing CPS, simplifying problems and use cases. Add open questions

* Add type key for REGISTER & UPDATE. Define rules for calculting hash of the metadata object tree

* typoe fix

* mistake folder added in last commit

* Suggest metadata transaction labels for dapp registration and certification

* Suggest metadata structure, off chain storages up to the operators. Improvements in schema and release properties

* Refactor for more compliant header

* Removing permissionToAggregate

* Section for stores custom required metadata fields

* Better descriptive title

* Metadata links included in cert. Removing audits and simplify explanation

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* Update CIP-0072/README.md

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>

* typos, structure adjustments and small prose adds

* Metadata links included in cert. Removing audits. Small refactoring

* specify size of hash

* Authors update

* Delete sample-cip26.md

* removing auditId

* Add logo to suggested metadata properties

* amendments based on comments / experience / feedback.

* re-intro website + added regex patterns.

* Update CIP-0072/README.md

Co-authored-by: Robert Phair <rphair@cosd.com>

* example fixes and adjusting to CIP template

* added placeholders

* added rationale section

* fixes in rationale section

* more rationale

* fixed on-chain signature scope

* categories

* typo fixes

* word wrapping test

* cosmetics

* cosmetics

* Path to Active

* more community comments

* Fixes according to feedback

* CIP version is mandatory, releases is optional, new algo to calculate signature

* signature generation: hex vs byte array clarification

* formatting fixes

* added version description and more decisions rationale

* typo fix

* Fixed patterns for hex strings, added changed DE-REGISTER to DE_REGISTER and added new DE_REGISTER_ALL, schema version changed from 04 to 2019-07.

* fixed several outdated things across CIP (ehanoc#16)

* removed several outdated things across CIP

* addressed all comments on initial commit

* Allow to express longer metadata URLs as an array of strings (ehanoc#17)

* latest changes as per last meeting agreements

* Update README.md

* Update README.md

* CDDL

* CDDL fix

* cosmetics

* initial categories update

* security_vulnerability field, added comment field in on-chain json and recommendation for keeping all past histories of off-chain snapshots.

* Update CIP-0072/README.md

Co-authored-by: Marcin Mazurek <marcin@mazurek.pro>

* latest comment fixes

* Apply suggestions from code review

Co-authored-by: Ryan Williams <44342099+Ryun1@users.noreply.github.com>

* changes according to the recent comments

* correction on Acceptance Criteria

---------

Co-authored-by: simonjohnthompson <s.j.thompson@kent.ac.uk>
Co-authored-by: Ryan Williams <rwilliams1@firstderivatives.com>
Co-authored-by: Mateusz Czeladka <mateusz.czeladka@cardanofoundation.org>
Co-authored-by: matiwinnetou <mateusz.szczap@gmail.com>
Co-authored-by: Robert Phair <rphair@cosd.com>
Co-authored-by: Volodymyr Hulchenko <57362128+vhulchenko-iohk@users.noreply.github.com>
Co-authored-by: Marcin Mazurek <marcin@mazurek.pro>
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
Co-authored-by: Ryan Williams <44342099+Ryun1@users.noreply.github.com>
Ryun1 pushed a commit to Ryun1/CIPs that referenced this pull request Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Metadata Proposals belonging to the 'Metadata' category.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet