Blocktrust Credential Badges Documentation Help

Technical Details

Credentials

The project implements the Verifiable Credentials Data Model 1.1 specification, which aligns with the capabilities of Hyperledger Identus, as we use the Identus cloud agent for issuing credentials. If a later version implements the Data Model 2.0, the application should continue to work (though this has not yet been tested with Identus-based credentials).

As of the time of writing, the Hyperledger Identus project has not yet implemented the OpenBadges 3.0 standard. Note that we submitted a requirement outline in July 2023 as a GitHub issue. The hope was to gain support for the VC Data Model 2.0 and the OpenBadges specification before the project was completed, allowing for greater adoption. This would not only have benefited this project but also enabled the much larger OpenBadges community to use Cardano as a viable Verifiable Data Registry (VDR).

Verification of did:prism-based credentials is done through the Universal Resolver compatible endpoint of the OpenPrismNode. Even with a client library targeting OPN as the preferred resolver, it should be possible to use any other compatible endpoint instead of OPN.

The builder project currently creates two types of Verifiable Credentials based on UI selection: either an "Achievement Credential" or an "Endorsement Credential." These are both part of the OpenBadges specification. You can find more details here and here.

Note the suggested data structure: Due to limitations in the Identus cloud agent, we cannot fully replicate this data structure within the builder project. However, the project should still be able to verify a broader set of OpenBadge credentials than it can produce. This includes credentials issued using did:key and did:web, subject to the cryptographic methods supported.

Here is an example of an Achievement Credential as currently produced by the builder project:

{ "iss": "did:prism:53900b7c1f1c7044ed4989ab46570d2927236e9414febe82ea36aaa917a642dd:CoQBCoEBEkIKDm15LWlzc3Vpbmcta2V5EAJKLgoJc2VjcDI1NmsxEiECfd6iCbzvLCSONelmvs3oS2IYyug8Z3hp9MZeS2W2BrkSOwoHbWFzdGVyMBABSi4KCXNlY3AyNTZrMRIhAkyZEcCAaL-VdPnQOOtulV6DSI6xb1USWExoQlInl2ma", "sub": "did:prism:fa5dfe6c3f3a395947fa7efb563f37914ec9739526bc0ab288613fcdbee59925:CnsKeRI6CgZhdXRoLTEQBEouCglzZWNwMjU2azESIQJ5zNszA8QdJGqplT9kUnUNLwu1P5qcNCyRniV1WW0XaxI7CgdtYXN0ZXIwEAFKLgoJc2VjcDI1NmsxEiEDd_XWdTgN8UrFJfJuLJOcJsBDF9Hh2Bu4-BVVV62F6gc", "nbf": 1742224287, "exp": 2042224287, "vc": { "credentialSubject": { "identifier": "Gina Governance", "image": { "id": "iVBORw0KGg.....shortend", "type": "Image" }, "achievement": { "achievementType": "Competency", "criteria": { "narrative": "Public participation in at least five governance forums or proposals.\n\n", "type": "Criteria" }, "name": "", "description": "", "specialization": "", "id": "e2129322-09de-467f-bcbd-338745ab37dc", "type": [ "Achievement" ], "fieldOfStudy": "Blockchain Governance" }, "name": "Decentralization Advocate", "description": "Gina Governance championed decentralization in governance debates.\n\n", "id": "did:prism:fa5dfe6c3f3a395947fa7efb563f37914ec9739526bc0ab288613fcdbee59925:CnsKeRI6CgZhdXRoLTEQBEouCglzZWNwMjU2azESIQJ5zNszA8QdJGqplT9kUnUNLwu1P5qcNCyRniV1WW0XaxI7CgdtYXN0ZXIwEAFKLgoJc2VjcDI1NmsxEiEDd_XWdTgN8UrFJfJuLJOcJsBDF9Hh2Bu4-BVVV62F6gc", "type": [ "AchievementSubject" ] }, "type": [ "VerifiableCredential" ], "@context": [ "https://www.w3.org/2018/credentials/v1" ], "credentialStatus": { "statusPurpose": "Revocation", "statusListIndex": 40, "id": "http://10.10.50.105:8000/cloud-agent/credential-status/b9b6bb1e-6864-4074-b8ac-12b3a0b30f0c#40", "type": "StatusList2021Entry", "statusListCredential": "http://10.10.50.105:8000/cloud-agent/credential-status/b9b6bb1e-6864-4074-b8ac-12b3a0b30f0c" } } }

Here is an example of an Endorsement Credential:

{ "iss": "did:prism:53900b7c1f1c7044ed4989ab46570d2927236e9414febe82ea36aaa917a642dd:CoQBCoEBEkIKDm15LWlzc3Vpbmcta2V5EAJKLgoJc2VjcDI1NmsxEiECfd6iCbzvLCSONelmvs3oS2IYyug8Z3hp9MZeS2W2BrkSOwoHbWFzdGVyMBABSi4KCXNlY3AyNTZrMRIhAkyZEcCAaL-VdPnQOOtulV6DSI6xb1USWExoQlInl2ma", "sub": "did:prism:fa5dfe6c3f3a395947fa7efb563f37914ec9739526bc0ab288613fcdbee59925:CnsKeRI6CgZhdXRoLTEQBEouCglzZWNwMjU2azESIQJ5zNszA8QdJGqplT9kUnUNLwu1P5qcNCyRniV1WW0XaxI7CgdtYXN0ZXIwEAFKLgoJc2VjcDI1NmsxEiEDd_XWdTgN8UrFJfJuLJOcJsBDF9Hh2Bu4-BVVV62F6gc", "nbf": 1742226397, "exp": 2042226397, "vc": { "credentialSubject": { "identifier": "Bob Bootstrap", "endorsementComment": "Connects the right people to get things done", "name": "Startup Glue", "description": "A key networker connecting developers, investors, and founders in the Cardano ecosystem.", "id": "did:prism:fa5dfe6c3f3a395947fa7efb563f37914ec9739526bc0ab288613fcdbee59925:CnsKeRI6CgZhdXRoLTEQBEouCglzZWNwMjU2azESIQJ5zNszA8QdJGqplT9kUnUNLwu1P5qcNCyRniV1WW0XaxI7CgdtYXN0ZXIwEAFKLgoJc2VjcDI1NmsxEiEDd_XWdTgN8UrFJfJuLJOcJsBDF9Hh2Bu4-BVVV62F6gc", "type": [ "EndorsementSubject" ] }, "type": [ "VerifiableCredential" ], "@context": [ "https://www.w3.org/2018/credentials/v1" ], "credentialStatus": { "statusPurpose": "Revocation", "statusListIndex": 46, "id": "http://10.10.50.105:8000/cloud-agent/credential-status/b9b6bb1e-6864-4074-b8ac-12b3a0b30f0c#46", "type": "StatusList2021Entry", "statusListCredential": "http://10.10.50.105:8000/cloud-agent/credential-status/b9b6bb1e-6864-4074-b8ac-12b3a0b30f0c" } } }

License

The overall project is licensed under Apache 2.0.

This project is using ImageSharp as a third-party library:

ImageSharp

ImageSharp is a new, fully featured, fully managed, cross-platform, 2D graphics API. Designed to simplify image processing, ImageSharp brings you an incredibly powerful yet beautifully simple API. This project uses ImageSharp under the terms of the Apache License 2.0, in accordance with the Six Labors Split License.

Note that ImageSharp is only used for building Credentials, not for the snippets. If a valid OpenBadge Credential already exists for which a badge should be created, the library is not needed.

Last modified: 19 March 2025