The ITMO Schema defines a standardized structure for Internationally Transferred Mitigation Outcomes (ITMOs) as W3C Verifiable Credentials. It combines established standards with domain-specific extensions to ensure interoperability and compliance with Article 6.2 requirements.
Key Components
Standards Compliance Built on W3C Verifiable Credentials and JSON-LD
Semantic Clarity Unambiguous term definitions via JSON-LD context
Cryptographic Proofs Ed25519-2018 suite for tamper-evident credentials
Data Provenance W3C PROV vocabulary for traceability
Core Structure
Basic Structure
Python Implementation
{
"@context" : [
"https://www.w3.org/2018/credentials/v1" ,
"https://w3id.org/security/suites/ed25519-2018/v1" ,
{
"itmo" : "https://w3id.org/article6/itmo-context.jsonld" ,
"prov" : "http://www.w3.org/ns/prov#"
}
],
"type" : [
"VerifiableCredential" ,
"ITMOCredential"
],
"id" : "urn:uuid:<uuid>" ,
"issuer" : "did:ixo:entity:<issuer-id>" ,
"issuanceDate" : "<ISO-8601-date>" ,
"expirationDate" : "<ISO-8601-date>"
}
JSON-LD Context
The JSON-LD context provides semantic meaning to ITMO data, enabling unambiguous interpretation across different systems while maintaining data integrity and provenance tracking.
{
"@context" : {
"@version" : 1.1 ,
"id" : "@id" ,
"type" : "@type" ,
"itmo" : {
"@id" : "https://w3id.org/article6/vocab#" ,
"@prefix" : true
},
"prov" : "http://www.w3.org/ns/prov#"
}
}
Key Namespaces:
@version
: JSON-LD version
itmo
: Carbon market vocabulary
prov
: W3C provenance terms
{
"@context" : {
"authorizationInfo" : {
"@id" : "itmo:authorizationInfo" ,
"@type" : "@id"
},
"ndcQuantification" : {
"@id" : "itmo:ndcQuantification" ,
"@type" : "@id"
},
"correspondingAdjustments" : {
"@id" : "itmo:correspondingAdjustments" ,
"@type" : "@id"
}
}
}
Domain Terms:
Authorization details
NDC metrics
Adjustment records
{
"@context" : {
"wasGeneratedBy" : {
"@id" : "prov:wasGeneratedBy" ,
"@type" : "@id"
},
"wasAttributedTo" : {
"@id" : "prov:wasAttributedTo" ,
"@type" : "@id"
},
"startedAtTime" : {
"@id" : "prov:startedAtTime" ,
"@type" : "xsd:dateTime"
}
}
}
Tracking Terms:
Generation activities
Attribution entities
Temporal metadata
Credential Attributes
{
"credentialSubject" : {
"itmo:authorizationInfo" : {
"itmo:authorizationReference" : "AUTH-2024-001" ,
"itmo:cooperativeApproachDuration" : "2024-01-01T00:00:00Z/2024-12-31T23:59:59Z" ,
"itmo:expectedMitigationOutcomes" : {
"2024" : 5000
},
"itmo:participatingParties" : [ "ZMB" , "CHE" ],
"itmo:authorizedEntities" : [
"did:ixo:entity:project123" ,
"did:ixo:entity:verifier456"
]
}
}
}
NDC Quantification
{
"credentialSubject" : {
"itmo:ndcQuantification" : {
"itmo:sectors" : [ "Residential" , "Energy" ],
"itmo:sources" : [ "BiomassFuelCombustion" ],
"itmo:ghgs" : [ "CO2" , "CH4" , "N2O" ],
"itmo:referenceLevel" : 1000 ,
"itmo:targetLevel" : 800 ,
"itmo:quantificationTonnesCO2e" : 200
}
}
}
Corresponding Adjustments
{
"credentialSubject" : {
"itmo:correspondingAdjustments" : {
"itmo:singleYearTarget" : true ,
"itmo:multiYearTarget" : false ,
"itmo:emissionsTrajectory" : [ 1000 , 950 , 900 , 850 , 800 ],
"itmo:annualAdjustments" : [ 40 , 40 , 40 , 40 , 40 ],
"itmo:cumulativeAdjustment" : 200
}
}
}
Validation & Proofs
from emerging import SchemaValidator
# Validate against JSON Schema
validator = SchemaValidator( "itmo-vc-schema.json" )
validation_result = validator.validate(credential)
if not validation_result.is_valid:
print ( f "Validation errors: { validation_result.errors } " )
from emerging import ProofGenerator
# Generate Ed25519 proof
proof = ProofGenerator.create_proof(
credential,
key_pair = issuer_key_pair,
proof_type = "Ed25519Signature2018" ,
verification_method = "did:ixo:entity:123#key-1"
)
# Add proof to credential
credential.add_proof(proof)
Developer Best Practices
Interoperability
Use standard JSON-LD contexts
Implement full vocabulary
Support multiple proof types
Enable cross-registry exchange
Data Validation
Validate schema compliance
Check proof signatures
Verify credential status
Validate semantic constraints
Extension Points
Custom context terms
Additional proof methods
Enhanced provenance tracking
Registry-specific metadata
Implementation Guide
Create Credential
Initialize context and type
Add credential metadata
Populate subject data
Generate and attach proof
Verify Credential
Validate JSON-LD structure
Check schema compliance
Verify cryptographic proof
Validate business rules
Process Credential
Parse semantic data
Extract relevant claims
Process adjustments
Update registries
Next Steps