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

Representing Multi Issuer Credentials in the VCDM #932

Closed
decentralgabe opened this issue Sep 16, 2022 · 67 comments
Closed

Representing Multi Issuer Credentials in the VCDM #932

decentralgabe opened this issue Sep 16, 2022 · 67 comments
Assignees
Labels
discuss pending close Close if no objection within 7 days

Comments

@decentralgabe
Copy link
Contributor

decentralgabe commented Sep 16, 2022

As per the discussion at TPAC on September 16:

Overview

Multiple issuers: where there are multiple DID or URI represented issuers of a credential to a single (or multiple) parties.

This issue mostly lays out information. I'm interested in what the community thinks, and moving towards a concrete proposal (with suggestions from you).

Related To

Prior Art

  • If you have some, please share.

Use Cases

  • NFTs from a smart contract (contract address vs minter address?)
  • Co-tweets
  • Parent's claims about their children
  • Treaties, nuclear launch codes
  • Co-signing for a loan

What Would It Look Like?

Screen Shot 2022-09-16 at 10 42 40 AM

Questions

  • Should credentials with multiple issuers even be allowed?
  • What alternatives are there?
  • How can this be represented in JWTs, Data Integrity Proofs?
  • Do existing selective disclosure/ZKP schemes support this construction?
@decentralgabe
Copy link
Contributor Author

Mentioned this in the issue around multiple subjects, but had some more thoughts after TPAC to address the approach described last Friday:

One point that @SmithSamuelM raised at TPAC (though relating to multiple issuers, not multiple subjects) was that a single DID can be used to represent multiple parties, if those parties agree to a representation scheme under a single DID (e.g. a multisig, multiple controllers, or something else). I believe this is a possible method of cleverly allowing multiple subjects (or issuers!) in a credential; however I am worried that this approach has two clear downsides:

  1. It is not immediately clear in reading a credential who the subject(s) are. Many DIDs may have related keys/DIDs in them controlled by a single entity. It would be exceedingly difficult to determine cases of multiple subjects, or subjects who just have a bunch of identities.
  2. DIDs with multiple keys/related IDs can change. This can harm the verifiability/integrity of a credential. For example, if I issued a credential to a single DID (did:example:alices-multisig) comprised of two parties (lets say did:example:alice and did:example:bob) and 6 months post-issuance Alice reforms her multisig to include new parties and remove Bob lets say did:example:alices-multisig now contains did:example:alice, did:example:charlie, and did:example:dave) is the credential to still be seen as valid?

Moving past that example. I'd like to gain a sense of folk's appetite for firming up the existing language around multiple subjects and introducing normative statements for the representation of multiple subjects in a single credential, expanding on the existing spec text and example here.

@decentralgabe decentralgabe self-assigned this Sep 21, 2022
@RieksJ
Copy link

RieksJ commented Sep 21, 2022

This is not just technically adding things, but much more about its meaning. I would like to think that an issuer-signature over credential-data can be used to identify the party on whose behalf an actor has signed the credential. Not just so that a verifier can question (perhaps also: sue) this party if so needed. There should be no more than one party, because a verifier would not be able to decide which of them would provide the authoritative answer to such questions (or would be suable).

In a use-case where it would be beneficial for all members of a community to all sign a credential, I would say that the community (which is a party) should sign it.

In a use-case where an arbitrary set of parties would sign it (perhaps a petition), I would say that each of them sign their own copy of a credential that states the same.

I can imagine that the signature of different parties might be part of a credential, but NOT as an issuer-signature. An example is provided in the decentralized governance paper, that shows how parties can be certified/accredited to issue certain kinds of credentials, and embed this certificate in the VCs that they issue, enabling others to verify that the issuer has been certified.

Let's not keep extending VCDM with all sorts of technical features that might bring (slight) benefits (at the technical level) and huge problems at the business/information/actual usage level.

@decentralgabe
Copy link
Contributor Author

@RieksJ

There should be no more than one party, because a verifier would not be able to decide which of them would provide the authoritative answer to such questions (or would be suable).

This is similar to the confusion that has come up with holder/subject/prover. The answer from us must be clearer language to express possibilities, such as:

To be valid a verifier must receive authorization from:

  1. one of the issuers
  2. a quorum of issuers
  3. all issuers

Whether such language should be defined in the data model itself or in an additional authorization framework is a good question. I'm considering that the data model shall provide flexibility which can be clarified and further specified by higher levels of abstraction.

Let's not keep extending VCDM with all sorts of technical features that might bring (slight) benefits (at the technical level) and huge problems at the business/information/actual usage level.

I strongly disagree with this statement. The goal of the VCDM is to accurately represent credentials at the data model level. I do agree with you that the line today is blurry between the data model itself and how this maps to business/information/actual usage -- curious what @msporny and @OR13 have to say here.

@David-Chadwick
Copy link
Contributor

David-Chadwick commented Sep 28, 2022

We have many examples today of multiple signatures on documents, both concurrent signing and sequential signing. An example of the former is a cheque (US check) that needs multiple signatures. An example of the latter is when a witness signs a document after the contractual party has signed the document. So we should cater for both of these in the VC DM. In the NGI Atlantic project we are working on this problem in the context of JWT proofed VCs. Serial signing does not require any changes to the JWT signing procedure, since the JWT output from the first signing can be used as the payload for the second signing. This process can be recursed as often as required. So I think it would be quite easy to describe this in the DM. For concurrent signing we propose to use JSON Web Signature JSON Serialization from RFC 7515 as we do not believe that the compact serialisation is required for such a document.

@OR13
Copy link
Contributor

OR13 commented Sep 28, 2022

{
      "payload":
       "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGF
        tcGxlLmNvbS9pc19yb290Ijp0cnVlfQ",
      "signatures":[
       {"protected":"eyJhbGciOiJSUzI1NiJ9",
        "header":  {"kid":"2010-12-29"},
        "signature":
         "cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZ
          mh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjb
          KBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHl
          b1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZES
          c6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AX
          LIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},
       {"protected":"eyJhbGciOiJFUzI1NiJ9",
        "header": {"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},
        "signature":
         "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8IS
          lSApmWQxfKTUJqPP3-Kg6NU1Q"}]
     }

https://www.rfc-editor.org/rfc/rfc7515#appendix-A.6.4

Notice the missing alg... Not sure how much actual interop there is here... cc @selfissued @Sakurann @dwaite

Is JWS multisignature well supported today? What are some pitfalls? Is there a compact serialization?

@OR13
Copy link
Contributor

OR13 commented Sep 28, 2022

Here is part of the answer from the test vectors RFC: https://www.rfc-editor.org/rfc/rfc7520#section-4.8

Since this example contains more than one signature, only the JSON General Serialization is possible.

^ This would require a normative text change.... and probably the ability to do something like vc-jws... since I don't know if JWTs support this.

@SmithSamuelM
Copy link

@David-Chadwick Recursive Serial Signing works for endorsements where a later signer signs the signed payload from a previous signer, but it is problematic for thresholded multi-sig where the signing must not be ordered and the signers do not sign each others signed payload.

@decentralgabe
Copy link
Contributor Author

Would it be reasonable to add normative spec language describing how to construct a multi-issuer credential and leave 'securing' to the Data Integrity and VC-JWT specs? It sounds like there are solutions for both camps.

@SmithSamuelM
Copy link

SmithSamuelM commented Sep 29, 2022

There are lots of ways to skin this cat. The most complicating factor is that in the current VC Data Model the proof is part of the VC instead of either an attachment to the VC or included in a proof envelope as a sibling to the VC in such an envelope. When not part of the VC but attached or as a sibling, then the conveyance and syntax of any proof or set of proofs such as multi-sig are independent of the VC itself. This lends itself to using a different spec for the proof data model. But when the proof is part of the VC itself then serializing the VC in a way that removes the proof so that the proof can be computed on the VC sans proof ( because the proof can't be computed recursively on itself), becomes more complicated for multi-sig proof types. The VC spec must then include a normative way to calculate the proof for every possible proof type. Its entirely possible, just more complicated. In a VC Version 2, separating the proof from the VC would greatly simplify things and IMHO is a reason to have breaking changes vis-a-vis VC version 1.

Such a separation would enable the asynchronous generation and verification of proofs. This is a huge advantage at scale and one of the main reasons ACDC separates the two.

@RieksJ
Copy link

RieksJ commented Oct 3, 2022

There should be no more than one party, because a verifier would not be able to decide which of them would provide the authoritative answer to such questions (or would be suable).

This is similar to the confusion that has come up with holder/subject/prover. The answer from us must be clearer language to express possibilities, such as:

To be valid a verifier must receive authorization from:

  1. one of the issuers
  2. a quorum of issuers
  3. all issuers

+1 to the need for clearer language.

-1 to expressing additional possibilities without first having proper criteria for determining what does (not) qualify as a holder/subject/prover/issuer/verifier/validator/..., at least for use within the context of VCDM, which (for me) implies that all (active) stakeholders for the VCDM have demonstrated they have the same understanding of such terms.

@SmithSamuelM
Copy link

SmithSamuelM commented Oct 3, 2022

This is where I find cognitive dissonance with the VCDM based on Triples. The exchange of VC is an information exchange. It is a transaction. Transactions have their own properties. The roles of the exchangers does not necessarily have anything to do with the information being exchanged. Or at the very least there is a narrow set of information that is needed to support the exchange of OTHER information as payload to the exchange that may be perfectly opaque to the exchange process itself. When the other information and the information needed to support the exchange are confused then we have this cognitive dissonance. This does not mean that a link between the exchange supporting information and the information in the exchange’s payload is ruled out. But only in some exchanges and only by virtue of shared identifiers. The same identifier can play a role a primary identifier to the exchange and also be referenced in the payload for some other role that is independent of the role in the exchange. This makes it easy to define roles. The confusion of the terms holder/subject/issuer/… is a result of confusing the roles that support an exchange protocol with the roles of some higher level payload. One good reason to have a VCWG2 is to create a true separation of concerns. The VCDM needs to decide. Is it about an exchange protocol (issuance, presentation, disclosure, terms of use, authentication, authorization, confidentiality , privacy of that exchange) and about the roles the parties to the exchange play or is it updating a distributed database which update is an opaque payload of that exchange. The latter is a more appropriate match to triples where semantic web constructs play, although other data models besides triples work as well. The former does not benefit from semantic web constructs, indeed they only complicate it.

@agropper
Copy link

agropper commented Oct 3, 2022 via email

@SmithSamuelM
Copy link

What is the VC proof proving? Is it proof of issuance? Is it proof of Authorization by an issuer to and issuee. Is the proof related to a type of disclosure such as selective disclosure. Is is a range proof? Is is a herd privacy proof. The type of proof is entirely transactional. And that's my point. The VC data model is confused because proofs are part of transactions/interations between a prover and a provee not a distributed database in the sky that is semantic. Proofs are highly contextual because of they require a relationship between the parties engaged in the proof.

@SmithSamuelM
Copy link

SmithSamuelM commented Oct 3, 2022

If we only allowed one type of proof, that is a proof of issuance with only an Issuer and no Issuee, then we could frame it as a non-interactive non-transactional proof. But the majority of use cases for Credentials (which by definition, a credential is evidence of entitlement), mean that there is an Entitler and Entitlee i.e. a transactional relationship and that's where the semantic web runs aground because it is not meant to be transactional. We need a lower layer that is transactional, where all the proofs and associated transactions, the IDs related to the parties engaged in those transactions along with roles defined by the type of transaction all reside. And then we need a higher layer that is an opaque payload to this transactional layer. Then we will have clean separation of concerns and all the ambiguity we have been discussing for the last 4 years goes away. We will have extreme clarity. I call this transactional layer the A4 layer for Authored, Authenticated, Authorized, Authoritative. Any data that needs to be exchanged in a secure trustworthy way needs some or all of the 4 A's. These form the minimally sufficient means. This A4 exchange layer can be augmented with optional confidentiality and privacy preserving exchange mechanisms. So this A4, Confidentiality, and Privacy exchange layer becomes the trust spanning layer and then semantic data can be delivered in a trustworthy way simply as a payload of the exchange layer. This makes the semantic layer simple and makes the exchange layer simple. Mixing those two layers is complex because they are incompatible. One is transactional, cryptographic, with narrow semantics the other is well broadly semantic but non-transactional and non-cryptographic.

@SmithSamuelM
Copy link

SmithSamuelM commented Oct 3, 2022

As a caveat, lest my use of the term semantic devolve into a discussion of what a semantic is. To be clear transactions themselves have semantics, they have models. But the models are narrowly defined and constrained by the transaction. They are not the open world semantic model that the semantic web in general is trying to realize. And that is the cognative dissonance. Trying to stuff an open world data model into the very narrow closed world of A4, confidentiality, privacy exchange transactions.

@SmithSamuelM
Copy link

It seems to me that the VCWG2 is an opportunity to fix this unfortunate confusion of concerns and clearly delineate athe narrow semantics of an exchange layer from the broad semantics of a payload of the exchange layer. Maybe this splits the WG into two WGs once for doing all the A4, Confidentiality, Privacy exchange modeling and the other doing the payload modeling.

@SmithSamuelM
Copy link

So for example. If I have only the need to provide a proof of issuance, then an authenticated key pair linked to an Issuer identifier that may or may not be linked to a natural persor or legal entity along with a non-repudiable digital signature made with that key pair provides a conceptually clean model for proof of issuance. But as soon as I attempt to make that data for which I can prove issuance into an entitlement then I have two parties. The entitler and the entitlee. Each with a keypair and identifier with possibly links to natural persons and legal entities. Now I have to answer the question, what role does the entitlee play, in a given transaction is it the holder, the issuee, the discloser in a presentation of the credential to some other party. Oh wait what is the other party now. We have three parties. Could we have more parties. Yes of course. We could have a credential issued by an Entitler to and Entitlee that is held by some other party and that other party could actually be the discloser fo the credential to yet another party. How is this disclosing party related to the entitlee. Is is a proxy. is is a custodian, is it and agent? These are all transactional roles that have little to do with the payload of the entitlement itself and everything todo with the type of transaction involved in the exchange of the entitlement. So we its not clear what a holder is, then it is clear that we have a confusion of concerns between the transactional exchange layer where the roles are clearly defined by the type of transaction and the payload layer that may or may not reference data related to the parties engaged in the transaction but should in all cases be opaque to the semantics of the transaction other wise its not a payload. This is how layered protocols are meant to work.

@SmithSamuelM
Copy link

SmithSamuelM commented Oct 3, 2022

A set of transactions that are exchanges can be used to build a complex model of relationships. One transactions can carry a payload of data that can later be referenced in support of some other transaction. The later transaction has clear semantics of the parties and roles to the transaction as defined by the transaction type. But either party may reference payloads of prior transactions in order to make decisions about a later transaction. This is how reputation works. The temptation is to flatten the layers, and that is a temptation that should be resisted. Collapsing layers increases complexity not decreases complexity. Complex systems are in general best understood as hierarchical compositions of information that functions best at a given layer in that hierarchy. There are applications where flattening layers can reduce complexity, but this is not one of them. Maybe that is the crux of the disaggreement. We have one camp that wants to flatten all information and information exchange into one semantic web construct and the other camp (to which I belong) that thinks this is a bad idea.

@David-Chadwick
Copy link
Contributor

@SmithSamuelM "So for example. If I have only the need to provide a proof of issuance,"
But what if I have the need to provide proof of issuance to a specific entity? Then in that case the issuer would include the public key of the entity in the issued credential. This is still a clean model. There are still only two parties involved. The issuer and the issuee.
But what if I need to provide proof of issuance that the credential is about a specific entity. Then in that case the issuer would include the public key of the credential subject. This is still a clean model as only two parties are involved.
And if I need to provide proof of issuance to a specific entity that the credential is about a third party, then the credential would include the public keys of the subject, the issuer and the issuee.
I see nothing wrong with having all of these requirements modelled in the VC DM v2. They are all independent of what happens next to the credential after it has been issued.

@TallTed
Copy link
Member

TallTed commented Oct 4, 2022

@SmithSamuelM — It's hard to digest and respond properly to your walls of text, especially with incorrect punctuation (such as many periods where question marks belong) and frequent typos (such as instances of is is that should be is it).

I expect these challenges are much greater for the many folks working on this for whom English is a second or later language.

Please take some time to read over your last several comments, and correct as much as possible. Breaking up your larger streams of text into more consumable paragraphs will also help a lot. I'm sure that every minute you spend doing this will save (at least!) several minutes for your readers, certainly in aggregate and likely for each individual reader, who otherwise have to each spend time trying to figure out what you meant through the typos, etc.

@David-Chadwick
Copy link
Contributor

CONCRETE PROPOSAL

Add the new role of issuee to the V2 data model, which the issuer can optionally insert into the issued VC.

The structure of issuee is alligned to be the same as issuer (i.e. object or string).

@SmithSamuelM
Copy link

@TallTed Sorry for the typos. I will be more careful.

@David-Chadwick I believe that this is precisely the problem of ambiguity between holder/subject/... discussed above. Is the Issuee identifier counted as meta-data? If the identifier of a party to the transaction is not meta-data then how does it fit into the VCDM. Clearly, any identifier can be represented as an object/string as metadata, but how does that object/string identifier fit into the subject/object/predicate model of the VCDM. We could represent every party associated with a transaction as metadata, and that would be just fine. Indeed, that is effectively what I am proposing. Because then this set of metadata can be used in its own transaction layer that supports a higher non-metadata layer.

@David-Chadwick
Copy link
Contributor

@SmithSamuelM The reason for introducing the new role of issuee is to remove all ambiguity between subject and holder.
So,

  1. the issuer issues the VC to the issuee (always) and may optionally insert the latter's identity into the VC.
  2. The issuer inserts its own identity into the VC it issues (always)
  3. The issuer issues the VC about a subject (always) and may of may not uniquely identify the subject.

Once the VC has been issued it may pass from the issuee to no-one, or to the subject, or to a third party. Whoever it passes to (including no-one) is the holder of the VC until it is passed on again. It could of course be duplicated and passed to multiple holders. The holder is never identified in a VC because the VC is persistent and the holder is not.

@TallTed
Copy link
Member

TallTed commented Oct 4, 2022

[@David-Chadwick] 3. The issuer issues the VC about a subject (always) and may of [sic] may not uniquely identify the subject

(First, note the typo, "may of" should be "may or".)

Why change your phrasing for this, instead of following the same form as the first two, i.e., "3. The issuer issues the VC about a subject (always) and may optionally insert the latter's identity into the VC"?

(I would suggest also changing both instances of the latter's to be explicit, i.e., the issuee's in (1) and the subject's in (3), in your framing. I would also suggest being explicit with about one or more subjects, as leaving this out may take us down another rabbit hole where "subject must be singular!")

@decentralgabe
Copy link
Contributor Author

decentralgabe commented Feb 1, 2023

I'd like to propose a PR that captures the following:

  • Multi-issuer credentials are supported by the VCDM
  • Securing the data model is a separate concern from the language in the VCDM
  • There can be multiple methods of securing multi-issuer credentials, such as:
    • multisig schemes (multiple signatures combined into a single signature)
    • wrapping credentials in credentials
    • chaining credentials (i.e. you issued x so now I can issue y)
    • multiple signatures over a single VC
    • a single issuer DID controlled by multiple parties

Please 👍 👎 if you would be supportive of such a PR.

@Sakurann
Copy link
Contributor

Sakurann commented Feb 1, 2023

+1 as long as it is clear that "There can be multiple methods of securing multi-issuer credentials" and each method will be defined in each securing spec

@dlongley
Copy link
Contributor

dlongley commented Feb 1, 2023

My thumbs down above is because I don't think we're quite ready to say that expressing multiple issues in the same VC is the best way forward. There are some other approaches that have been mentioned for solving the use cases, and, I usually find that keeping primitives simpler, so long as they can be combined to solve more complex use cases, is a better design (for basic understanding, implementation complexity, security, etc.).

@msporny
Copy link
Member

msporny commented Feb 1, 2023

I'd like to propose a PR that captures the following:

-0.7 on a PR that captures all of that, but only due to concerns regarding ecosystem complexity, more below:

  • Multi-issuer credentials are supported by the VCDM

The makes the ecosystem more complicated for a limited return on that complexity. It's not clear that the extra use cases justify the added complexity.

  • Securing the data model is a separate concern from the language in the VCDM

+1 to the above.

  • There can be multiple methods of securing multi-issuer credentials, such as:

Yes, and this is where the concern comes in. The more options we have here, the more implementation complexity there will be. The question is: Can we achieve this multi-issuer use case by using the primitives we have today, such as a collection of VCs that say the same thing issued by different issuers?

  • multisig schemes (multiple signatures combined into a single signature)

We could achieve the use case using a single issuer w/ a multisig scheme... that would re-use primitives we have today w/o adding the complexity of updating the issuer field.

  • wrapping credentials in credentials

We could achieve the use case with a single issuer field today by taking this approach.

  • chaining credentials (i.e. you issued x so now I can issue y)

We could achieve the use case with a single issuer field today by adding the 'content addressing other VCs' proposal that @dmitrizagidulin and @longpd put together.

  • multiple signatures over a single VC

We could achieve the use case with a single issuer field today by doing this.

  • a single issuer DID controlled by multiple parties

We could achieve the use case with a single issuer field today by doing this.

All this to say, we could keep the issuer field as a single value and do all of the things above to add issuers... OR, we could expand the issuer field to reference multiple issuers BUT, if we do that, we really should settle on (ideally) one of the mechanisms above. If we don't do that, it feels like we're begging for interop failures... or massive ecosystem complexity. I don't think it would be an easy ask of our engineering team to implement 6 different security schemes for the "multiple issuers" use case.

If we can focus on one mechanism, that would be a much easier ask (but I understand that it'll take work to get there).

@peacekeeper
Copy link
Contributor

I don't really have an opinion on this, but regarding:

  • a single issuer DID controlled by multiple parties

I wanted to point people to this proposed verification method, which I think is really interesting:
https://w3c-ccg.github.io/verifiable-conditions/

@decentralgabe
Copy link
Contributor Author

decentralgabe commented Feb 1, 2023

@msporny @dlongley I think (correct me if I'm wrong) I find your posts self-contradictory. You are saying yes we do support multi issuer credentials, but with what we have today. And what we have today is not multi issuer credentials - meaning they're not allowed at all. I'd like to distinguish here between the concept of "multiple issuers" and "there are multiple values for the issuer property". It seems we agree on the former but not quite the latter yet.

Manu, you're correct that many but not all multi-issuer schemes can leverage a single issuer field and that's a good thing, and an argument in favor of updating language to allow for multi-issuer credentials. The first spec text change would be to say multi issuer credentials are allowed and one way (and maybe the only one that reaches consensus) of doing this is using the security mechanisms we have today.

I would recommend my first PR does update the issuer field to allow multiple values because there are cases where multiple issuers can be represented by a single signature, as in the case of multi-sig schemes like schnorr.

I would next recommend adding language about the possibility of supporting multiple signatures on a single credential, but this will be more controversial.

So, two PRs, possibly three for easier consensus (1 & 2 can be combined):

  1. Multiple issuers are allowed with a single issuer value
  2. Multiple issuers are allowed with multiple issuer values

  1. Multiple issuer are allowed with a variety of signature constructs (as listed above)

I agree having a concrete mechanism may help. I think getting 1 and hopefully 2 in first can make that easier.

@dwaite
Copy link

dwaite commented Feb 1, 2023

For schemes where multiple issuers are actually multiple parties operating as a single conceptual issuer, I would expect this single conceptual issuer to be indicated at the data model level, with further details within the proofing mechanism on which issuers had contributed to the proof and how. Having such multi-issuer support would be out of scope of the VCDM, but might affect other in-scope proofing mechanisms.

However, for multiple independent issuers to be represented at the data model layer, I would expect these to be multiple parties making the exact same statement with the exact same conditions - e.g. they are both asserting every predicate of the subject equally, are requiring the same expiry times, utilizing the same evidence, and so on.

Assuming a proof mechanism that meets the needs of an issuer which is a composite of multiple parties, is there a use case which mandates these constituents be represented as multiple issuers at the credential level, rather than a single composite issuer and a proof that explains who and how the credential was secured?

I would assume having this information within the proofing mechanism is far more appropriate, as it already would need to represent multiple independent proofs or describe parameters needed by the threshold scheme, associated with those constituent issuers. Likewise, I would assume the many permutations being represented by a common conceptual issuer would be needed, as someone needs to give common recommendations for verifiers on what is sufficient for verifiability and validation, and arrange for those issuers to be able to coordinate common data requirements to make such identical assertions about the credential subject(s)

@SmithSamuelM
Copy link

@dwaite +1

@decentralgabe
Copy link
Contributor Author

@dwaite

Assuming a proof mechanism that meets the needs of an issuer which is a composite of multiple parties, is there a use case which mandates these constituents be represented as multiple issuers at the credential level, rather than a single composite issuer and a proof that explains who and how the credential was secured?

Yes, such as analogous real world credentials like marriage licenses, birth certificates, and treaties. It does not make sense to jam our concept of DID into the real world and say "well just go get a joint DID" because that's not what the VCDM is about. The VCDM intends to represent credentials, and there are numerous real world cases where multiple parties are issuers of the same credential. This is a truism about credentials that I don't believe should be up for debate.

Again, I believe securing the data model is a separate concern than representing statements about credentials in the data model itself, of which, having multiple issuers is one such statement.

@dwaite
Copy link

dwaite commented Feb 2, 2023

Yes, such as analogous real world credentials like marriage licenses, birth certificates, and treaties. It does not make sense to jam our concept of DID into the real world and say "well just go get a joint DID" because that's not what the VCDM is about. The VCDM intends to represent credentials, and there are numerous real world cases where multiple parties are issuers of the same credential. This is a truism about credentials that I don't believe should be up for debate.

Would this not imply a much larger change than just turning issuer into a set?

I would not expect from your scenarios that it would only a matter of having multiple issuer identities (and supporting proof infrastructure). I would expect that each issuer could attach their own conditions for validity onto the credential. For instance, how would a single credentialStatus work with multiple issuers?

The verifier does need to still understand credential validity and lifecycle, and the validity rules for high value credentials is hopefully not ad-hoc. Multi-party issuance requires even more coordination, and such policy needs to be understood for the validity of credentials to be quantified. This is why I am trying to understand if this can be captured within the proof section, even if that means a single issuer 'identifier' is then referring to more of a process or framework than to a specific party. And no, it doesn't need to be a DID.

However, I also suspect some of these scenarios do not require multi-party representation. For example - if the witnesses for a marriage license are unable to serve any official capacity such as changing my taxation structure, imparting new legal rights, or revoking said license, were they actually an issuer? Or did they provide a statement (possibly in the form of a verifiable credential) to the more broadly accepted issuing authority, and were potentially captured as such within evidence or as a predicate?

@decentralgabe
Copy link
Contributor Author

how would a single credentialStatus work with multiple issuers?

it would make sense to define a credentialStatus property that has multi-issuer support. that's what extensibility is all about!

The verifier does need to still understand credential validity and lifecycle, and the validity rules for high value credentials is hopefully not ad-hoc

correct, as they do today in the real world with multi-issuer credentials

Re your marriage example: I don't believe the witnesses are the issuers, the county recorder's office is (at least in the US). Witnesses attestations would be considered evidence like you suggest. I was referring to the couple to be wed's signatures on the application for a marriage license as a multi-issuer credential, sorry I did not make this clear.

I'm certain we can find ways around this, but I wonder if that's our job to tell the world how credentials ought to be represented, instead of being flexible to the many real world credentials and behaviors that exist today.

@dlongley
Copy link
Contributor

dlongley commented Feb 2, 2023

@decentralgabe,

I think the problem here is that it seems insufficient to just modify the issuer property to accept a set of values instead of a single value in order to address the use cases. Given that its sufficiency to address the use cases hasn't yet been demonstrated, it doesn't yet make sense to change the data model. Changing it before we know if it works can lead to churn, broken implementations, and more problems for us to solve.

Another way of putting this is: yes, there is some separation between securing the data model and the data model itself, but they are connected. Every use case requires securing the data model. So, if we change the data model to address a use case from a modeling perspective, but in so doing render it too difficult to secure, then we will just fail the use case from a security perspective. We can't give people half of a solution.

Additionally, there are other ways of addressing the use cases that have been mentioned and are being explored. I think there's rough consensus that the use cases are valid. Where we don't yet have rough consensus is on the mechanism we ought to use to address them.

I'm certain we can find ways around this, but I wonder if that's our job to tell the world how credentials ought to be represented, instead of being flexible to the many real world credentials and behaviors that exist today.

I agree we shouldn't be dismissive of the use cases. However, we should question whether a sort of skeuomorphic approach to this problem is appropriate, whereby we try to mirror exactly what's going on with physical credentials today vs. just ensuring the technology does indeed address the use case.

@iherman
Copy link
Member

iherman commented Feb 6, 2023

The issue was discussed in a meeting on 2023-02-01

  • no resolutions were taken
View the transcript

4.1. Representing Multi Issuer Credentials in the VCDM (issue vc-data-model#932)

See github issue vc-data-model#932.

Kristina Yasuda: Issue 932.. Can anyone talk about this specific issue about multi-issue credentials?.

Manu Sporny: At a high level, this is about whether a VC can have multiple issuers..
… It's a bit deeper than it sounds. On the data model level, of course we could have an array. But then it's not clear what you do with the proofs..
… Perhaps we want the issuer to be a single field (like it is today), and then have multiple signatures.
… You may have one primary issuers but 'n' signatures on the credential..
… And then there's the argument that we shouldn't complicate the ecosystem. When you have multiple issuers, ultimately there needs to be an issuing authority..
… E.g. you have multiple schools in a district that test the students, but you only have one authority that issues the credentials..
… There are different aspects on what this is about, and Gabe is leading the discussion..

Dave Longley: or just issue two (or N-many) VCs ... need clear use cases and how those could / ought to be solved.

Kristina Yasuda: We discussed mechanisms such as chaining, I think GS1 has something in production with multiple issuers..
… Do we want to define how the multiple issue scenario would work, and if yes which mechanisms do we want to use..

Gabe Cohen: I see signing as a separate concern as the data model. It's important to clarify the data model first, if there can be multiple signatures..
… A multi signature scheme could be used, or having multiple proofs. I think there is still work to be done in crypto suites..
… I think the requirement is solid, I believe there are situations where single credentials are signed by multiple parties, and the spec text should clarify this..
… We can add language to the spec, even if a crypt suite doesn't exist yet..

Kristina Yasuda: orie: +1 Gabe.

Dmitri Zagidulin: I agree that multiple issuers is a legitimate use case..
… We have a similar situation in the DID data model, we have the notion of multiple controllers in a DID document.
… We haven't done much with this mechanism,.
… I recommed that we do not model multiple issuers as multiple signatures.
… Either change the model to allow multiple issuers, or specify the notion of a compound issuer.
… If a student has a diploma from 2 universities, there would be 1 issuer, which is the partnership/combination of the 2 universities..

Kevin Dean: The GS1 example is not one of multiple issuers in this sense.

Dave Longley: +1 to the notion that there are multiple different ways this problem could be solved and needs further exploration.

Kevin Dean: The authority to issue a credential is derived from a prior credential. There is a chain of credentials, but this is not the same as having a credential with multiple issuers..
… My authority to issue a final credential in a chain is derived from previous credentials in a chain..
… Going back to private key cryptography in environments where parties don't trust each other..

Kristina Yasuda: orie: +1 Kevin, it's hierarchical.

Kevin Dean: Control of issuing a final credential is put either into completely unrelated party, or it's under some partial control of one of the parties. This might not be acceptable to others..
… Environment where issuers don't necessarily trust each other, but they want to issue a credential together..

Steve McCown: +1 Kevin.

Dmitri Zagidulin: treaties and contracts would be best modeled as a COLLECTION of VCs, from individual issuers.

Kevin Dean: For treaties, certain contracts, there may well be requirements for multple issuers in low trust environments..

David Chadwick: +1 kevin.

Orie Steele: I agree with what KevinDeanGS1 said and what decentralgabe said initially.
… We have seen several security approaches to this problem.

Dave Longley: +1 to dmitri ... that it may be best to model these things as collections of VCs.

Orie Steele: Going back to what decentralgabe said, the data model is about the intention, and securing it is a separate concern..
… Maybe you're used to OIDC or access tokens, where you have only 1 issuer and 1 subject..
… The core data model should express the actual information that's important.
… I feel uneasy how we talk about proofs in relation to the core data model..
… I have a feel we perceive Data Integrity Proofs to be more "imporant" than JWS proofs.
… The data model should be expressed in JSON-LD, and then the security aspect should be modeled using the proofs.
… I'm aware of some of the work dmitriz mention regarding multiple controllers.
… This is not equivalent to a data model that allows expressing multiple issuers.

Kristina Yasuda: what is the value of two issuers URIs if there is only one signature?.

Manu Sporny: The current data model restricts the "issuer" to be a single value. If we just talk about the data model, do we want to loosen that requirement?.

Dave Longley: multiple VCs, each signed by a different issuer, could all make the same claim about a credential subject (such as a treaty) ... and merging those together would represent all parties of the treaty signing together, etc. -- options to explore..

Dmitri Zagidulin: I think there would be great value if we restrict a VC to a single issuer..
… In the education space, there is a "Comprehensive Learner Record", which is a kitchen sink approach that contains a lot of information.

Kristina Yasuda: orie: +1 Manu, it would be a change to the core data model first.

Dmitri Zagidulin: This can be a single "outer" credential with "nested" credentials. Each one has a single issuer. The "outer" one is signed by an aggregator..

Andres Uribe: +1 to dimitri.

Kerri Lemoie: CLR spec: https://1edtech.github.io/ComprehensiveLearnerRecord/docs/clr_v2p0.html.

Dmitri Zagidulin: I think we can express these situations while keeping the restriction of having a single "issuer" in the data model.

Kristina Yasuda: I don't think we're ready for a PR yet.

Dmitri Zagidulin: +1 dlongley, re having the /treaty/ itself be the subject of VCs.

Kristina Yasuda: I encourage continued conversation about the data model aspect of this..

Dmitri Zagidulin: that's the approach taken by our recent RWoT paper.

Kristina Yasuda: Thank you everyone, see you next week..


@SmithSamuelM
Copy link

@dwaite and supporting @dlongley comment that changing the data model requires mechanisms for securing the new data model. One of the main reasons ACDCs as an example uses chaining to to provide secure mechanisms for all sorts of multi-attribution (i.e relationships between issuers of different types and roles.

For example in ACDCs with KERI there are at least two mechanisms for securing the concept of multiple issuers.

The first is a thresholded multi-sig Issuer identifier where each of the keys contributed to the multi-sig threshold comes from yet another identifier. By disclosing the identifiers of the contributors, a verifier can then match the issuers to business logic about their role in that multi-issuance.

The second is a chained ACDC where the presenter creates a bespoke ACDC at presentation that chains back to separate issuances of the same content ACDC from separate issuers. So instead of an list embedded in a VC the multiple issuers are provided via a list of edges that point to ACDCs sourced from the different issuers but which issue to the presenters Identifier and issue the same claims. the difference is the metadata that secures the individual issuances. So the tooling for security does not have to change.

@decentralgabe
Copy link
Contributor Author

@dlongley

Given that its sufficiency to address the use cases hasn't yet been demonstrated, it doesn't yet make sense to change the data model. Changing it before we know if it works can lead to churn, broken implementations, and more problems for us to solve.

Yes, it should be really clear why making multiple issuers is a sufficient change. I raised these points earlier, but let me try to expand.

Option 1: Single credential, multiple issuers per single issuer identifier

A single conceptual issuer fails with the following considerations:

  1. It does not immediately communicate to the holder or recipient(s) of VCs that there are multiple issuers. It requires additional resolution and parsing infrastructure which increases the burden for a credential to be understood.
  2. Not all DID methods support multiple parties to be listed. This would be eliminating a broad class of users for multi-issuer credentials.
  3. Not all DID methods support historical resolution of DID state. This means that there could be a point-in-time where the DID contained multiple issuers, and that point-in-time could be lost forever. This would make it impossible to know who actually issued the credential and does not at all help further the multi-issuer use case.

Some of these points are present even without multi-issuer use cases, but we should not double down on these shortcomings, and instead create a new pathway to make it abundantly clear that a credential is multi-issuer and clearly communicate the provenance of a credential's issuance.

Option 2: Multiple credentials, single issuer per credential

This approach fails the requirements for a number of real world use cases by increasing complexity and management overhead. We would need a way to normatively link credentials together, that is, to say that this credential is part of a multi-issuer pair. Complex, and confusing for both holders and verifiers--all interactions with these credentials now become a coordination problem.

There are two buckets of use cases that we have certainty we need this functionality for:

  1. Where you need multiple signatures to authorize the same legal doc / authorization to take action (e.g., Unanimous Withness Consent, Treaties, DAO actions, application for a marriage license, to adopt a child, or any joint resolution).
  2. Where you need multiple signatories, but on different parts of a legal doc / different actions authorized by different signatories to unlock some common thing (e.g. signature by an individual and a notary for a home loan or title).

So, if we change the data model to address a use case from a modeling perspective, but in so doing render it too difficult to secure, then we will just fail the use case from a security perspective. We can't give people half of a solution.

Agree, 100%. I think it's a chicken and egg scenario, and I'd advocate for changing the data model first because it is what everything else is built on top of. I do not think we should end up in a scenario where we block changes in the data model because higher layers have not yet demonstrated how they could work with the changes—this leads us to stalemate. We need to be able to innovate here first.

Additionally, we already have indications of how multiple signatures on a single credential can work, at least in some signature representations.

Additionally, there are other ways of addressing the use cases that have been mentioned and are being explored.

I believe these other ways are insufficient as I've outlined above. They cause confusion, have risk of changing from underneath you, and undermine what it means to be "verifiable."

@dlongley
Copy link
Contributor

dlongley commented Feb 8, 2023

@decentralgabe,

We would need a way to normatively link credentials together, that is, to say that this credential is part of a multi-issuer pair.

Why?

@decentralgabe
Copy link
Contributor Author

@decentralgabe,

We would need a way to normatively link credentials together, that is, to say that this credential is part of a multi-issuer pair.

Why?

Without a standard way to do this you lose the value of multi-issuer creds. It's important to know there are multiple issuers from the credential, so that you can check their respective status lists, expirations, terms of use, and so on as may be required in some of these cases.

@dlongley
Copy link
Contributor

dlongley commented Feb 9, 2023

@decentralgabe,

Without a standard way to do this you lose the value of multi-issuer creds. It's important to know there are multiple issuers from the credential, so that you can check their respective status lists, expirations, terms of use, and so on as may be required in some of these cases.

I feel that we need to pull this back to first principles as I'm concerned that we keep hitting an erroneous conclusion. This is what I feel like I keep hearing:

  1. There are use cases that need some mechanism whereby multiple parties make the same or similar assertions. (Checks out to me).
  2. Those use cases could be solved using "multi-issuer credentials". (I don't know, maybe).
  3. If we don't have a way to do X with "multi-issuer credentials", then "multi-issuer credentials" won't have value. (If you say so).
  4. Therefore, we can't solve the use cases without X. (I think this is an error in reasoning)

The point I keep trying to make is that we should look at one or more specific use cases to see how we could solve them rather than jumping to "we must use multi-issuer credentials to solve the use cases we know are out there and matter, so let's talk about the best way to do that". I'm not convinced that "multi-issuer credentials" is the best way to the solve the use cases yet -- because it doesn't seem like we've fully explored the various ways to do it.

For example, you were just mentioning that there may be cases where N-many parties all need to make the assertion that a particular contract is valid. Well, that could be modeled by having each party issue a VC that says that said contract is valid. A verifier must somehow have a list of parties that they are looking to check to see if they've signed off on the contract -- and they can just run down that list and compare it against the set of VCs.

Now, this isn't a full-blown use case exploration, just a real quick example of how it seems like it could work off of the top of my head. It didn't need "multi-issuer credentials" (for some definition of that). My point is that we need to really deeply explore a particular use case to see what the possible solutions are. And, ideally, we repeat that for a few more use cases to see what's in common. Otherwise, it seems to me like we're caught in a logic loop that that is begging the question over whether "multi-issuer credentials" are the only way to solve the use cases (presuming that they even do at all).

@decentralgabe
Copy link
Contributor Author

I'd like a response to the options and their critiques I laid out above, but I will say we should separate can and should.

Perhaps many use cases of VCs could be done with centralized solutions (mDL anyone?) or even paper-based solutions as they have been for hundreds of years. This does not mean there isn't a better way to do them with VCs or even multi-issuer VCs. Contorting the data model to "work" for these use cases won't get us anywhere until we agree that there are benefits in using a single credential with multiple issuers.

I agree with you that it's good to go deep on a single use case to start, so let's talk about a Unanimous Witness Consent document and apply the reasoning I linked above.

@dlongley
Copy link
Contributor

dlongley commented Feb 9, 2023

@decentralgabe,

You asked me to respond to the options above -- though I do think it's working backwards as I mentioned. I will leave some comments on the options as you asked, but I really do recommend that people look into solving specific use cases first instead of looking at possible problems with possible solutions in the abstract.

Option 1: Single credential, multiple issuers per single issuer identifier

A single conceptual issuer fails with the following considerations:

  1. It does not immediately communicate to the holder or recipient(s) of VCs that there are multiple issuers. It requires additional resolution and parsing infrastructure which increases the burden for a credential to be understood.

Why does this need to be communicated at all? Maybe this is a feature, not a bug? This is why specific use cases need to be explored.

  1. Not all DID methods support multiple parties to be listed. This would be eliminating a broad class of users for multi-issuer credentials.

You don't have to support this through DID methods. Additionally, mechanisms could be developed that abstract away the details of using any particular key registered with any DID method, including ones that produce static DID docs like did:key. A simple example of this is putting the private key in an HSM that is accessible via WebKMS where access to sign with the key is managed via ZCAPs. More complex examples could be constructed. This is just another example of not exposing the details to verifiers, thereby enabling more existing software to work without any changes.

  1. Not all DID methods support historical resolution of DID state. This means that there could be a point-in-time where the DID contained multiple issuers, and that point-in-time could be lost forever. This would make it impossible to know who actually issued the credential and does not at all help further the multi-issuer use case.

This seems orthogonal. Indeed, even if multiple issuers were listed in the same credential, I can imagine ways in which this concern would be unaffected.

Option 2: Multiple credentials, single issuer per credential

This approach fails the requirements for a number of real world use cases by increasing complexity and management overhead. We would need a way to normatively link credentials together, that is, to say that this credential is part of a multi-issuer pair. Complex, and confusing for both holders and verifiers--all interactions with these credentials now become a coordination problem.

We covered this above.

There are two buckets of use cases that we have certainty we need this functionality for:

  1. Where you need multiple signatures to authorize the same legal doc / authorization to take action (e.g., Unanimous Withness Consent, Treaties, DAO actions, application for a marriage license, to adopt a child, or any joint resolution).

It seems like the common link here is another agreed upon document that each party could reference in the VC they generated. That same document could list all of the expected signatories. You recommended that this be the particular use case to start chasing down in detail and it's a perfectly good choice.

  1. Where you need multiple signatories, but on different parts of a legal doc / different actions authorized by different signatories to unlock some common thing (e.g. signature by an individual and a notary for a home loan or title).

It again seems like different issuers could issue different VCs referencing their sign off on the appropriate parts. In fact, it seems like this would get far more complicated / not be modeled properly if we used "multiple issuers" of the same VC here, but that's just a gut reaction. Again, a good reason that the use cases need to be rigorously explored.

Hopefully this is the response you were looking for. I recommend that people deep dive into the use case you suggested as a way to move the conversation forward around what potential solutions might look like.

@agropper
Copy link

agropper commented Feb 10, 2023 via email

@OR13
Copy link
Contributor

OR13 commented Feb 10, 2023

Here is a hypothetical use case:

https://www.whitehouse.gov/briefing-room/statements-releases/2022/02/26/joint-statement-on-further-restrictive-economic-measures/

"issuer": [{
  "name": "European Commission",
  "id": "https://press.eu.example/issuers/1"  // example, not an endorsement
},{
  "name": "France",
  "id": "https://press.fr.example/issuers/2"  // example, not an endorsement
},{
  "name": "Germany",
  "id": "did:web:press.de.example"  // example, not an endorsement
},{
  "name": "Italy",
  "id": "did:ethr:..." // example, not an endorsement
},{
  "name": "United Kingdom",
  "id": "did:btcr:..."  // example, not an endorsement
},{
  "name": "Canada",
  "id": "did:indy:..."  // example, not an endorsement
},{
  "name": "United States",
  "id": "did:web:example.gov"  // example, not an endorsement
}]

Would the statements about the subject be more or less meaningful with only 1 issuer?

There are lots of scenarios where issuer's might only feel comfortable making statements about a subject together, a quick google search for "joint statements" reveals a lot of potential use cases...

@OR13
Copy link
Contributor

OR13 commented Jun 6, 2023

Example:

https://v.jsld.org/3cy82JzSKePg2ejfikm3oWhpA1t2XHREWbYW7CMCxvCBMrCJx1bjy9peTgn5q7WrEDMwgAHar3sN1timCQBTJ7Rnymdy6NW5xQJuU4TajAUTTkvFrqs9jgPqamvws9cuyQvi2Kj3TybY86LfjqM9dUS2gsoXcwfYyQ7DgjMERgKgMzFm7m7r7sBGdAQt3BBBfP7aQGt7mCBcrqV99zhuPUAX7Cn23Lutkkg2QrCSZBjvpFR6TZ4Mdv8MCzjjPqyb4V9ggtbsp9hdqQkL667ToM3ApxrgKJ

<ddid:example:456> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/ns/credentials/issuer-dependent#Organization> .
<did:example:123> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/ns/credentials/issuer-dependent#Organization> .
_:c14n0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/2018/credentials#VerifiableCredential> .
_:c14n0 <https://www.w3.org/2018/credentials#credentialSubject> <did:example:789> .
_:c14n0 <https://www.w3.org/2018/credentials#issuer> <ddid:example:456> .
_:c14n0 <https://www.w3.org/2018/credentials#issuer> <did:example:123> .
_:c14n0 <https://www.w3.org/2018/credentials#validFrom> "2023-05-09T22:25:23.652Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .

Suggest closing, its already supported.

@brentzundel brentzundel added the pending close Close if no objection within 7 days label Jun 6, 2023
@dlongley
Copy link
Contributor

dlongley commented Jun 6, 2023

That's not compact form -- won't work. Not supported.

@iherman
Copy link
Member

iherman commented Jun 7, 2023

The issue was discussed in a meeting on 2023-06-06

  • no resolutions were taken
View the transcript

1.5. Representing Multi Issuer Credentials in the VCDM (issue vc-data-model#932)

See github issue vc-data-model#932.

Brent Zundel: Representing multi-issuer credentials. Question remains, is this something we want to tackle before CR?

Orie Steele: Similar to multiple subject, all representations and securing mechanisms allow it... I think it can be handled post-CR, if at all. If there aren't strong examples in core spec, by default, not a good thing to be doing, don't think we need to do anything w/ this - close issue, if it remains open, someone should create a good example or issue should be closed.

Brent Zundel: proposal to mark as pending close, any other comments on issue?

Orie Steele: anything is an object if you are brave enough... especially javascript arrays.

Andres Uribe: To Orie's point, we do have a lot of examples of real life use cases, but not clear how it works... co-tweets, parents claims about their children, co-signers on loan... what examples do we need for this?

Orie Steele: I meant a single spec example, with multiple issuers.

Orie Steele: the @context allows multiple issuers, and that is what is signed over in both representations.

Dave Longley: Agree with most of what Brent said, but maybe disagree w/ having multiple IDs... what spec says today doesn't allow multiple issuers. Don't think it's actually supported today, if people want a change, that needs to happen before CR.

Brent Zundel: does this need to change before CR, any volunteers?

Manu Sporny: pdl-ASU: Does this involve guardianship, or is that different?

Brent Zundel: multi-issuer VCs could be one way, but not the only way.

Orie Steele: yep, multi issuer and multi subject are both related / required for some scenarios.

Orie Steele: but afaik, nobody is using them (either).

Joe Andrieu: I'd be hard pressed to understand how that would work.

Manu Sporny: Just to highlight, I don't think that's an issue, Phil. You can always do multi-issuer by issuing multiple VCs. That may be distasteful in some cases but it works. You can have two VCs claiming a child, and so on.
… We're covered as far as use cases are concerned, the question is, is that the most ideal form. To be clear, I don't think we need to deal with this in 2.0.

Dave Longley: pdl-ASU: Very good.

Andres Uribe: +1 for future.

Brent Zundel: ok, so suggestion that this is not a VC2.0 thing -- do we mark pending close, or mark future?

Joe Andrieu: Do you want to keep this around, Phil?

Manu Sporny: pdl-ASU: I just want to make sure we consider this in v3.0... however we keep it around is good.

Manu Sporny: I guess the only concern I have with keeping it around is that our issuer tracker ends up collecting a lot of cruft over time. Things that are continuously not addressed. If this is an important enough use case it will be raised again saying they want the spec changed. My preference is to close as many issues as possible if they haven't been worked on.
… The WG has been operating since 1.0 and 2+ years since then and no one hasn't worked on it. The history will still be there if we close it.

Dave Longley: pdl-ASU: I will check with some people I know doing guardianship and see if they are ok with handling it.

Joe Andrieu: We would accept use cases in the VC use cases document.

Manu Sporny: pdl-ASU: That's a good suggestion, thanks Joe.

Joe Andrieu: +1.

Dave Longley: +1 to brent.

Brent Zundel: So, mark this pending close because there is not consensus to do it. Any objections?

Manu Sporny: +1.

Brent Zundel: ok, marking pending close.

@decentralgabe
Copy link
Contributor Author

Closing as there are other ways to address the given use cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discuss pending close Close if no objection within 7 days
Projects
None yet
Development

No branches or pull requests