A credential either issued by an institution or self-issued makes an assertion about the subjects knowledge, skills or abilities. The subject wishes to have a third-party corroborate this credential to give greater credibility. The subject asks a selected third-party to "endorse" their credential, confirming the claims in the credential and add additional supporting information about it.
For the purposes of the VC-EDU a practical use case is in the context of an endorser creating an endorsement single assertion VC that is cryptographically linked to a independently issued VC held by a holder. Here a hash-llinked approach to connect the two independent VCs is necessary to connect the two in a tamper evident way.
VCs by themselves are not sufficient to serve the endorsement use case - the Resource Anchoring and Hashlink mechanism is required.
So, the concept of endorsements involves a collection of Verifiable Credentials (and non-VC objects such as PDFs, images, videos and so on) linked together by digestMultibase style hashlinks.
Example Self-issued Credential (in OpenBadges v3 form):
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/openbadges/v3"
],
"type": [
"VerifiableCredential",
"OpenBadgeCredential"
],
"issuer": {
"type": "Profile",
"id": "did:key:z6MkrHKzgsahxBLyNAbLQyB1pcWNYC9GmywiWPgkrvntAZcj",
"name": "Alice Jones"
},
"issuanceDate": "2022-05-01T00:00:00Z",
"credentialSubject": {
"type": "AchievementSubject",
// Note that the subject of the VC is the issuer, hence self-issued
"id": "did:key:z6MkrHKzgsahxBLyNAbLQyB1pcWNYC9GmywiWPgkrvntAZcj",
"achievement": {
"id": "urn:uuid:e8096060-ce7c-47b3-a682-57098685d48d",
"type": "Achievement",
"name": "Mastery of Sorting Algorithms",
// TBD: Link to Credential Engine competency framework here
"description": "<description goes here>",
"criteria": {
"type": "Criteria",
"narrative": "<narrative>"
}
}
},
"proof": {
// ....
}
}
Example Endorsement Credential (with an embedded issuer's relevance section):
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/endorsement/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"type": [
"VerifiableCredential",
"EndorsementCredential"
],
"issuer": {
"id": "did:web:endorser.example.com",
"name": "Example Endorsing Agency",
// TODO: bikeshed the name of this attribute
"relevanceToMeBeingAbleToGiveThisEndorsement": [
{ // link to a credential I received saying I have a degree to this subject },
{
"id": "https://example-journal.com/my-article.pdf",
// optional hashlink (note that 'multibase' is a part of the in-progress
// IETF spec https://datatracker.ietf.org/doc/html/draft-multiformats-multibase)
"digestMultibase": "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
"name": "<name of the article>",
"citation": "...",
"description": "I have published an article in a peer-reviewed journal."
}
]
},
"issuanceDate": "2010-01-01T00:00:00Z",
"expirationDate": "2020-01-01T00:00:00Z",
"credentialSubject": {
// Note that the credentialSubject.id is the id of the Achievement in the target VC
"id": "urn:uuid:e8096060-ce7c-47b3-a682-57098685d48d",
"type": [ "EndorsementSubject" ],
"endorsementComment": "Alice indeed has the skill. See also the attached evidence."
},
"evidence": [
{
"type": ["Evidence"],
"narrative": "# Final Project Report \n This project was ...",
"name": "Final Project Report",
"description": "This is the final project report.",
"genre": "Research",
"audience": "Department"
},
{
"id": "<link to a google docs file>",
"type": ["Evidence"],
"name": "Final Project Code",
"description": "This is the source code for the final project app.",
"genre": "Research",
"audience": "Department"
}
],
"proof": {
// ....
}
}
Example Workflow / Protocol
TBA: Add a description + swimlane diagram for how Alice would request the endorser for the endorsement.
Notes on Tooling
We expect that adding endorsements to VCs will be another feature offered by various wallets.
A credential either issued by an institution or self-issued makes an assertion about the subjects knowledge, skills or abilities. The subject wishes to have a third-party corroborate this credential to give greater credibility. The subject asks a selected third-party to "endorse" their credential, confirming the claims in the credential and add additional supporting information about it.
For the purposes of the VC-EDU a practical use case is in the context of an endorser creating an endorsement single assertion VC that is cryptographically linked to a independently issued VC held by a holder. Here a hash-llinked approach to connect the two independent VCs is necessary to connect the two in a tamper evident way.
Use Cases
The above use cases are actually equivalent, differing only in the original issuer.
Verifiable Endorsement Distinguishing Characteristics
VCs by themselves are not sufficient to serve the endorsement use case - the Resource Anchoring and Hashlink mechanism is required. So, the concept of endorsements involves a collection of Verifiable Credentials (and non-VC objects such as PDFs, images, videos and so on) linked together by
digestMultibase
style hashlinks.(See issue https://github.com/w3c/vc-data-model/issues/831 for more details on the anchoring and linking mechanism.)
Data Model Examples
Example Self-issued Credential (in OpenBadges v3 form):
Example Endorsement Credential (with an embedded issuer's relevance section):
Example Workflow / Protocol
TBA: Add a description + swimlane diagram for how Alice would request the endorser for the endorsement.
Notes on Tooling
We expect that adding endorsements to VCs will be another feature offered by various wallets.