VC Data Model

View as Markdown

IDA implements the W3C Verifiable Credentials Data Model v2.0 for issuing, holding, and verifying digital credentials on the ADI blockchain.

Core Concepts

A Verifiable Credential (VC) is a tamper-evident credential with a cryptographic proof that can be verified without contacting the issuer.

A Verifiable Presentation (VP) is a package of one or more VCs presented to a verifier, signed by the holder.

Verifiable Credential Structure

1{
2 "@context": [
3 "https://www.w3.org/2018/credentials/v1",
4 "https://www.w3.org/2018/credentials/examples/v1",
5 "https://ida.infinia.io/schemas/university-degree/v1"
6 ],
7 "id": "urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479",
8 "type": ["VerifiableCredential", "UniversityDegreeCredential"],
9 "issuer": {
10 "id": "did:adi:issuer001...",
11 "name": "Massachusetts Institute of Technology"
12 },
13 "issuanceDate": "2026-03-28T10:00:00Z",
14 "expirationDate": "2030-12-31T23:59:59Z",
15 "credentialSubject": {
16 "id": "did:adi:holder001...",
17 "degree": {
18 "type": "BachelorDegree",
19 "name": "Bachelor of Science in Computer Science",
20 "university": "MIT",
21 "graduationYear": 2025,
22 "gpa": 3.8
23 }
24 },
25 "credentialStatus": {
26 "id": "https://ida.infinia.io/credentials/status/1#3",
27 "type": "StatusList2021Entry",
28 "statusPurpose": "revocation",
29 "statusListIndex": "3",
30 "statusListCredential": "https://ida.infinia.io/credentials/status/1"
31 },
32 "credentialSchema": {
33 "id": "did:adi:schema:university-degree-v1",
34 "type": "JsonSchemaValidator2018"
35 },
36 "proof": {
37 "type": "Ed25519Signature2020",
38 "created": "2026-03-28T10:00:00Z",
39 "verificationMethod": "did:adi:issuer001...#key-1",
40 "proofPurpose": "assertionMethod",
41 "proofValue": "z58DAdFfa9SkqZMVPxAQpic7ndTn4..."
42 }
43}

Property Reference

PropertyRequiredDescription
@contextYesJSON-LD context URIs defining the terms used
idRecommendedUnique identifier for the credential (UUID URN)
typeYesArray including VerifiableCredential plus specific types
issuerYesDID of the issuing entity (string or object with id and name)
issuanceDateYesISO 8601 timestamp of credential issuance
expirationDateNoISO 8601 timestamp after which the credential is invalid
credentialSubjectYesClaims about the subject, includes subject’s DID as id
credentialStatusNoReference to revocation/status mechanism
credentialSchemaNoReference to the schema the credential conforms to
proofYesCryptographic proof (signature) from the issuer

Proof Types

IDA supports multiple proof suites:

Proof TypeAlgorithmSelective DisclosureUse Case
Ed25519Signature2020EdDSANoStandard VC signing
EcdsaSecp256k1Signature2019ECDSANoBlockchain-native VCs
BbsBlsSignature2020BBS+YesPrivacy-preserving VCs
BbsBlsSignatureProof2020BBS+YesDerived proofs (presentations)

Ed25519 Proof

1{
2 "type": "Ed25519Signature2020",
3 "created": "2026-03-28T10:00:00Z",
4 "verificationMethod": "did:adi:issuer001...#key-1",
5 "proofPurpose": "assertionMethod",
6 "proofValue": "z58DAdFfa9SkqZMVPxAQpic7ndTn4..."
7}

BBS+ Proof (Selective Disclosure)

1{
2 "type": "BbsBlsSignature2020",
3 "created": "2026-03-28T10:00:00Z",
4 "verificationMethod": "did:adi:issuer001...#bbs-key-1",
5 "proofPurpose": "assertionMethod",
6 "proofValue": "ABcD1234..."
7}

Verifiable Presentation

A holder wraps one or more VCs in a Verifiable Presentation:

1{
2 "@context": [
3 "https://www.w3.org/2018/credentials/v1"
4 ],
5 "type": ["VerifiablePresentation"],
6 "holder": "did:adi:holder001...",
7 "verifiableCredential": [
8 {
9 "@context": ["..."],
10 "type": ["VerifiableCredential", "UniversityDegreeCredential"],
11 "issuer": "did:adi:issuer001...",
12 "credentialSubject": { "..." },
13 "proof": { "..." }
14 }
15 ],
16 "proof": {
17 "type": "Ed25519Signature2020",
18 "created": "2026-03-28T11:00:00Z",
19 "verificationMethod": "did:adi:holder001...#key-1",
20 "proofPurpose": "authentication",
21 "challenge": "abc123-verifier-nonce",
22 "domain": "https://verifier.example.com",
23 "proofValue": "z4Abc123..."
24 }
25}

Presentation with Selective Disclosure

When using BBS+, the holder can derive a proof revealing only specific attributes:

1{
2 "@context": ["https://www.w3.org/2018/credentials/v1"],
3 "type": ["VerifiablePresentation"],
4 "holder": "did:adi:holder001...",
5 "verifiableCredential": [
6 {
7 "@context": ["..."],
8 "type": ["VerifiableCredential", "UniversityDegreeCredential"],
9 "issuer": "did:adi:issuer001...",
10 "credentialSubject": {
11 "id": "did:adi:holder001...",
12 "degree": {
13 "type": "BachelorDegree",
14 "university": "MIT"
15 }
16 },
17 "proof": {
18 "type": "BbsBlsSignatureProof2020",
19 "created": "2026-03-28T11:00:00Z",
20 "verificationMethod": "did:adi:issuer001...#bbs-key-1",
21 "proofPurpose": "assertionMethod",
22 "nonce": "verifier-nonce-xyz",
23 "proofValue": "DerivedProof123..."
24 }
25 }
26 ],
27 "proof": { "..." }
28}

In this example, only degree.type and university are revealed. The name, graduationYear, and gpa remain hidden.

JSON-LD Contexts

IDA uses the following JSON-LD contexts:

ContextPurpose
https://www.w3.org/2018/credentials/v1W3C VC base context
https://w3id.org/security/suites/ed25519-2020/v1Ed25519 proof suite
https://w3id.org/security/bbs/v1BBS+ proof suite
https://ida.infinia.io/schemas/{name}/v{n}IDA credential schemas
https://ida.infinia.io/ns/agent/v1Agent delegation VCs

Credential Types

IDA provides built-in credential types:

TypeSchema IDUse Case
UniversityDegreeCredentialdid:adi:schema:university-degree-v1Education
KYCVerifiedCredentialdid:adi:schema:kyc-verified-v1Finance
VaccinationRecordCredentialdid:adi:schema:vaccination-v1Healthcare
AddressProofCredentialdid:adi:schema:address-proof-v1Identity
AgentDelegationCredentialdid:adi:schema:agent-delegation-v1AI Agents
AgentCapabilityCredentialdid:adi:schema:agent-capability-v1AI Agents
AgentComplianceCredentialdid:adi:schema:agent-compliance-v1AI Agents

Verification Checks

When verifying a VC or VP, IDA performs these checks:

CheckDescription
Proof IntegrityCryptographic signature is valid
Issuer DIDIssuer DID resolves and is not deactivated
Signing KeyVerification method exists in issuer’s DID Document
Schema ComplianceCredential conforms to its declared schema
ExpirationCurrent time is before expirationDate
RevocationCredential is not in the revocation registry
Holder BindingVP is signed by the holder listed in the VC
Challenge/DomainVP challenge and domain match the verifier’s request