Skip to content

Add fully decentralized verifiable issuer use case #37

@msporny

Description

@msporny

We need to add the following fully decentralized verifiable issuer use case to the specification:

The National College Board would like to provide a verifiable credential to each State College to confirm that they would accept degrees issued by a specific college as legitimate proof of education. Since the National College Board does not operate technical infrastructure with high-availability guarantees, it wants to distribute this information in a way that can be presented by the State College issuer or the holder of a particular degree when presenting that degree to a verifier.

The minimum viable data model for achieving this use case for an issuer could be something like the following:

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": [
    "VerifiableCredential",
    "VerifiableRecognitionCredential"
  ],
  "issuer": "did:web:recognizer.example",
  "validFrom": "2025-01-01T00:00:00Z",
  "validUntil": "2030-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:web:issuer.example",
    "type": "RecognizedIssuer",
    "recognizedBy": "did:web:recognizer.example", /// hmm...
    "recognitionCriteria": [{
      "type": "Issuance",
      "validFrom": "2021-01-01T00:00:00Z",
      "validUntil": "2026-01-01T00:00:00Z",
      "credentialSchema": {
        "id": "https://recognizer.example/schemas/degrees/bachelors.json",
        "type": "JsonSchema",
        "digestMultibase": "uELqXcnlc5P7xp1u-5uJRDYKvc9FnJ5YLa5iAszyJ518b"
      }
    }, {
      "type": "Issuance",
      "validFrom": "2025-01-01T00:00:00Z",
      "validUntil": "2026-01-01T00:00:00Z"
      "credentialSchema": {
        "id": "https://recognizer.example/schemas/degrees/masters.json",
        "type": "JsonSchema",
        "digestMultibase": "uELYKvc9FnJ5YLa5iARD18bszyJ5qXcnlc5P7xp1u-5uJ"
      }
    }]
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-08-10T20:08:22Z",
    "verificationMethod": "did:web:recognizer.example#issuance-key-1",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
  }
}

The minimum viable data model for achieving this use case for an verifier could be something like the following:

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": [
    "VerifiableCredential",
    "VerifiableRecognitionCredential"
  ],
  "issuer": "did:web:recognizer.example",
  "validFrom": "2025-01-01T00:00:00Z",
  "validUntil": "2030-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:web:verifier.example",
    "type": "RecognizedVerifier",
    "recognizedBy": "did:web:recognizer.example", /// hmm...
    "recognitionCriteria": [{
      "type": "Verification",
      "validFrom": "2021-01-01T00:00:00Z",
      "validUntil": "2026-01-01T00:00:00Z",
      "presentationSchema": {
        "id": "https://recognizer.example/presentation-schemas/degrees/bachelors.json",
        "type": "JsonSchema",
        "digestMultibase": "uELqXcnlc5P7xp1u-5uJRDYKvc9FnJ5YLa5iAszyJ518b"
      }
    }, {
      "type": "Verification",
      "validFrom": "2025-01-01T00:00:00Z",
      "validUntil": "2026-01-01T00:00:00Z"
      "presentationSchema": {
        "id": "https://recognizer.example/presentation-schemas/degrees/masters.json",
        "type": "JsonSchema",
        "digestMultibase": "uELYKvc9FnJ5YLa5iARD18bszyJ5qXcnlc5P7xp1u-5uJ"
      }
    }]
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-08-10T20:08:22Z",
    "verificationMethod": "did:web:recognizer.example#issuance-key-1",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions