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

[DID Reference] REQUIREMENT: Ability to query the list of DID Methods found on a particular DID Resolver or Ledger #26

Closed
mwherman2000 opened this issue Feb 9, 2019 · 13 comments

Comments

@mwherman2000
Copy link

Related to but different from #25

@dmitrizagidulin
Copy link
Contributor

I don't think this requirement makes sense. Can you say more about it?
There's no real mechanism to reference a ledger, outside of a particular method.

@mwherman2000
Copy link
Author

mwherman2000 commented Feb 10, 2019

In the real world, enterprise applications are going to have work with multiple DID-compatible Ledger networks. When presented with an arbitrary DID, how can an app know which Ledger Node Service endpoint of which Ledger Node (INDY ARM element 35) to resolve the DID against? ...without using static configuration files. In addition, some organizations will have, possibly multiple, internal Ledger networks (36); some will also have, possibly multiple, external Ledger networks.

Apps need to be able to query the Ledger Node Service endpoint of the known Ledger Nodes (Ledger networks) to determine which DID Methods can be found there.

INDY-ARM: DID Resolution

Reference: https://github.com/mwherman2000/indy-arm/blob/master/README.md#3-did-resolution-viewpoint

@peacekeeper
Copy link
Collaborator

@mwherman2000 , do you mean:

The ability to list all DID methods that utilize a certain ledger technology? E.g. return a list of all DID methods that use the Ethereum blockchain, --> uport, jolo, erc725? This is hard for a number of reasons. Not all DID methods even use ledgers. There is no central registry of all DID methods that could be used for such lookups. Theoretically there could even be DID methods that use multiple ledgers, or one that combines a ledger+IPFS, or many other kinds of combinations of technologies. Also, I don't really see how this would be useful.

Or do you mean:

How can you work with multiple ledgers, networks, etc. that use the same DID method but different instances of the ledger, network, etc. For example "mainnet" and "testnet". This can be easily addressed in the DID syntax, and we have already seen examples, e.g.:

  • did:sov:WRfXPg8dantKVubE3HX8pw -> DID using the "sov" method on the Sovrin mainnet.
  • did:sov:stn:WRfXPg8dantKVubE3HX8pw -> DID using the "sov" method on the Sovrin testnet.
  • did:erc725:ropsten:2F2B37C890824242Cb9B0FE5614fA2221B79901E -> DID using the "erc725" method on the Ethereum "Ropsten" test network.

It would be up to the DID method spec to define this syntax and how it is interpreted by a resolver;

@mwherman2000
Copy link
Author

The ability to list all DID methods that utilize a certain ledger technology?

No, I simply mean the ability to list all the DID methods available at a particular Ledger Node (35) Service endpoint.

@mwherman2000
Copy link
Author

mwherman2000 commented Feb 17, 2019

SUGGESTION: When you query/try to resolve the following:

did: OR did: OR did:?methods

The DID Resolver Response returns a collection of (fully qualified) methods. e.g. '[ did:sov, did:foo, did:bar ]`

@mwherman2000
Copy link
Author

Maybe it doesn't make sense to be able to direct these types of queries (the above example and #27) to a particular Ledger Node ...but it does make sense to be able to query these against a particular DID Resolver Node (element 41 in the INDY ARM).

@mwherman2000 mwherman2000 changed the title [DID Reference] REQUIREMENT: Ability to query the list of DID Methods found on a particular Ledger [DID Reference] REQUIREMENT: Ability to query the list of DID Methods found on a particular DID Resolver or Ledger Feb 20, 2019
@peacekeeper
Copy link
Collaborator

@mwherman2000 Your last comment now makes more sense to me than the ones before. Yes I can imagine that a DID Resolver could support a function that returns a list of DID methods that the DID Resolver knows how to resolve.

But this has nothing to do with the syntax of a DID or DID Reference or DID URL, as discussed e.g. here and here.

@mwherman2000
Copy link
Author

@mwherman2000 Your last comment now makes more sense to me than the ones before. Yes I can imagine that a DID Resolver could support a function that returns a list of DID methods that the DID Resolver knows how to resolve.

@peacekeeper For this to happen, does some sort of syntax specification need to allow for it? If so, which one? Where/how do we specify support for did:?ping and/or did:?methods queries (or anything similar)? ...where in/which ABNF syntax specification do we allow for these types of constructs?

@talltree
Copy link

talltree commented Feb 21, 2019 via email

@peacekeeper
Copy link
Collaborator

@mwherman2000 the way I think about it is that DID Resolvers will support one or more abstract operations, e.g.:

resolve(did) --> did-doc

resolve(did) --> did-resolution-result

resolve(did, timestamp) --> did-resolution-result

dereference(did-url) --> did-doc or something else

checkExists(did) --> boolean

ping() --> boolean

listMethods() --> array-of-methods

There can then be multiple "bindings" for those DID Resolution operations, i.e. they can be invoked locally via an API, or via a command line tool, or remotely via an HTTP REST interface.

It's unclear at this point 1. what the list of operations will be exactly, and 2. which ones need to be standardized in a spec vs. left open to implementers.

But what's clear at least to me is that you only need an ABNF for the "did" or "did-url" or "did-reference" inputs above; you don't need an ABNF to define the resolve(), ping(), listMethods() or whatever other operations themselves.

@talltree
Copy link

talltree commented Feb 21, 2019 via email

@mwherman2000
Copy link
Author

But what's clear at least to me is that you only need an ABNF for the "did" or "did-url" or "did-reference" inputs above; you don't need an ABNF to define the resolve(), ping(), listMethods() or whatever other operations themselves.

  1. Where should we define the HTTP/URL bindings for these operations? ...which document?
  2. What's the best way for specify the syntax for these bindings? ...ABNF?

@mwherman2000
Copy link
Author

mwherman2000 commented Feb 22, 2019

Closed in favor of #32 Use case 6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants